پروتکل ناستر

این مروری سطح بالا بر پروتکل ناستر شامل انواع رویداد و نحوه کار احتمالات اجرای ناستر (NIP) است.

§ ناستر در سطح بالا

  • دو جز اصلی در شبکه ناستر وجود دارند: کلاینت ها و رله ها.

    • کلاینت ها رابط کاربری هستند کابران استفاده می کنند تا داده ها در رله ها بخوانند و بنویسند. در دنیای رسانه های اجتماعی، مثل اپ موبایل یا اپ وب توییتر می مانند. این کلاینت است که به شما اجازه می دهد در پایگاه داده متمرکز توییتر داده ها را بخوانید یا بنویسید.
    • رله ها مانند پایگاه داده هستند (هرچند که کارهایی خیلی بیشتر از صرفا ذخیره داده انجام می دهند). رله ها به کلاینت ها اجازه می دهند که داده ها را به آنها بفرستند و سپس آن داده را در پایگاه داده ذخیره می کنند. آنگاه کلاینت ها می توانند داده را از رله ها بخوانند و به کاربران نشان دهند.
  • هر کاربر با یک کلید عمومی شناخته می شود. هر شئ رویداد (مثلا پیامی که می فرستید، بروز رسانی لیست دنبال شوندگان شما، و غیره) امضا می شود. کلاینت ها این امضاها را اعتبارسنجی می کنند تا مطمئن شوند صحت دارند.

  • کلاینت ها داده را رله ها می گیرند و به رله ها متنشر می کنند. رله ها تقریبا همیشه توسط کاربر انتخاب می شوند. رله ها مجبور به برقراری ارتباط با یکدیگر نیستند اما بطور بالقوه ممکن است در آینده این اتفاق بیافتد.

  • برای مثال، برای بروزرسانی نمایه خود، فقط به کلاینت خود دستور می دهید که یک رویداد نوع صفر به رله هایی که می خواهید استفاده کنید بفرستد. سپس رله ها این رویداد را ذخیره می کنند.

  • در آغاز، کلاینت شما داده ای را که خواسته اید از رله ها می پرسد. ممکن آن را طوری فیلتر کنید که فقط رویداد های کاربرانی را که آنها دنبال می کنید نشان دهد یا می توانید همه چیز را از همه کس بخواهید، سپس کلاینت این داده را به شما نشان می دهد.

  • انواع مختلف رویداد وجود دارد. رویدادها می توانند همه جور ساختار داده را در بر بگیرند، و بیشترین ساختار های مورد استفاده به احتمالات اجرای ناستر راه می یابند (NIPها - استانداردهای پروتکل که همه به آن مقید هستند) پس همه کلاینت ها می توانند بی هیچ مشکلی از پس آنها بربیایند.

  • داده ای که می توانید در ناستر ببینید کاملا به رله هایی بستگی دارد که به تصمیم می گیرید به آن ها متصل شوید. برای درک بیشتر نمودار شبکه را در زیر ببینید.

نمودار شبکه

نمودار شبکه ناستر

در نمودار بالا می بینید که ما 3 رله و 3 کاربر داریم. هر کاربر با کلاینتی متفاوت به ناستر وصل شده است (و در پلتفرمی متفاوت).

با در نظر گرفتن خوانده ها و نوشته ها در نمودار:

  • باب می تواند تمام یادداشت های آلیس را ببیند، ولی هیچ چیز از ماری نمی بیند (و حتی نمی داند او وجود دارد)
  • آلیس می تواند تمام یادداشت های باب را ببیند، ولی هیچ چیز از ماری نمی بیند (و حتی نمی داند او وجود دارد)
  • ماری می تواند تمام یادداشت های باب و آلیس را ببیند. این بدان دلیل است که در حالی که او فقط به رله 3 می نویسد، ولی از رله 2، جایی که باب و آلیس در آن می نویسند می خواند.

این یک وضعیت بسیار ساده شده است ولی می توانید ببینید که انتخاب رله هایی که به آنها وصل می شوید می تواند تاثیر زیادی در چیزها و کسانی که در استفاده از ناستر می بینید داشته باشد.

§ رویدادها

رویداد تنها گونه شئ در شبکه ناستر است. هر شئ رویداد یک نوع دارد، که مشخص می کند این رویداد از چه قسمی است (کاربر احتمالا چه عملی انجام داده است یا چه پیام هایی دریافت کرده است). یک ویداد نوع 1 به این شکل است (نوع 1 برای یادداشت های متنی کوتاه است. مثلا چیزی شبیه توییت)

{
    "id": "4376c65d2f232afbe9b882a35baa4f6fe8667c4e684749af565f981833ed6a65",
    "pubkey": "6e468422dfb74a5738702a8823b9b28168abab8655faacb6853cd0ee15deee93",
    "created_at": 1673347337,
    "kind": 1,
    "tags": [
        ["e", "3da979448d9ba263864c4d6f14984c423a3838364ec255f03c7904b1ae77f206"],
        ["p", "bf2376e17ba4ec269d10fcc996a4746b451152be9031fa48e74553dde5526bce"]
    ],
    "content": "Walled gardens became prisons, and nostr is the first step towards tearing down the prison walls.",
    "sig": "908a15e46fb4d8675bab026fc230a0e3542bfade63da02d542fb78b2a8513fcd0092619a2c8c1221e581946e0191f2af505dfdf8657a414dbca329186f009262"
}
  • بخش id شماره شناسایی رویداد را به ما می گوید.
  • بخش pubkey کلید عمومی کاربری که رویداد را فرستاده می گوید.
  • بخش created_at می گوید رویداد چه زمانی منتشر شده است.
  • بخش kind می گوید این چه نوع رویدادی است.
  • بخش tags درباره تگ های روی رویداد به ما می گوید. این ها برای ایجاد لینک، افزودن رسانه، نام بردن از سایر کاربران یا رویداد ها استفاده می شود.
  • بخش content محتوای رویداد را می دهد. در این مورد، همان یادداشت متنی کوتاه.
  • بخش sig امضایی است که کلاینت ها استفاده می کنند تا تایید کنند کاربری با این کلید عمومی واقعا این رویداد را در تاریخ مشخص شده فرستاده است.

انواع رویداد

این لیستی از انواع فعلی رویداد است. بروز ترین لیست همیشه در ریپازیتوری NIPهای ناستر یافت می شود.

نوع توصیف NIP
0 فراداده 1
1 یادداشت متنی کوتاه 1
2 توصیه رله 1
3 مخاطبان 2
4 پیام های مستقیم رمزنگاری شده 4
5 حذف رویداد 9
6 بازنشر 18
7 واکنش 25
8 مدال پاداش 58
40 ایجاد کانال 28
41 فراداده کانال 28
42 پیام کانال 28
43 پیام مخفی کانال 28
44 کاربر بیصدای کانال 28
1984 گذارش کردن 56
9734 درخواست زپ 57
9735 زپ 57
10000 لیست بی صدا 51
10001 لیست سنجاق 51
10002 فراداده لیست رله 65
22242 احراز هویت کلاینت 42
24133 اتصال ناستر 46
30000 لیست دسته بندی افراد 51
30001 لیست دسته بندی نشانک 51
30008 مدال نمایه 58
30009 تعریف مدال 58
30023 محتوای طولانی 23
30078 داده مخصوص اپلیکیشن 78
30402 طبقه بندی ها 99
1000-9999 رویدادهای عادی 16
10000-19999 رویدادهای قابل جایگزینی 16
20000-29999 رویدادهای زودگذر 16
30000-39999 رویدادهای قابل جایگزینی پارامتری 33

تگ های استاندارد

نام مقدار سایر پارامترها NIP
e شناسه رویداد (hex) رله URL, علامت 1, 10
p کلید عمومی (hex) relay URL 1
a با یک رویداد هماهنگ می کند relay URL 33, 23
r ارجاع (URL, etc) 12
t هشتگ 12
g جئوهش 12
nonce تصادفی 13
subject موضوع 14
d شناسه 33
expiration unix مهرزمانی (رشته) 40

§ NIPs

یک احتمال اجرای ناستر، یا بطور خلاصه NIP، به وجود می آید تا مستند کند که چه چیز الزاما، باید یا شاید بتواند توسط نرم افزار کلاینت و رله ناستر به اجرا درآید. NIPها اسنادی هستند که شیوه کار پروتکل ناستر را ترسیم می کنند.

چرا باید به NIPها اهمیت دهم؟

ناستر غیرمتمرکز است و (مثل توییتر) در تملک یک شرکت مرکزی نیست. این بدان معناست که جهت و مسیر پروتکل به همه ما بستگی دارد! ما می توانیم تغییرات را پیشنهاد دهیم یا از تغییراتی دفاع کنیم و درباره ایده های پیشنهادی دیگران بازخورد دهیم.

عضو فعال جامعه ناستر بودن به شما حق تعیین مسیر شبکه را می دهد. NIPهایی که در ریپازیتوری اصلی منتشر شده اند تاکنون به تایید رسیده اند. افزودن ایده جدید از راه پول ریکوئست به ریپوی اصلی انجام می شود. Being an active part of the community gives you a say in the direction of the network. NIPs published in the main repository are already approved. Adding new ideas is done via Pull Request on that repo.

کجا می توانم NIPها را پیدا کنم؟

تمام NIPهای فعلی را می توانید در مخزن NIP ناستر ببینید.