پروتکل ناستر

این مروری سطح بالا بر پروتکل ناستر شامل انواع رویداد و نحوه کار احتمالات اجرای ناستر (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 URL1
aبا یک رویداد هماهنگ می کندrelay URL33, 23
rارجاع (URL, etc)12
tهشتگ12
gجئوهش12
nonceتصادفی13
subjectموضوع14
dشناسه33
expirationunix مهرزمانی (رشته)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 ناستر ببینید.