Протокол Nostr
Це огляд протоколу Nostr на високому рівні з деталями про типи подій та як працюють Можливості Впровадження Nostr (NIPs).
Nostr на найвищому рівні
- Існує два основні компоненти мережі Nostr: клієнти та релеї.
- Клієнти — це інтерфейс, який користувачі використовують для читання та запису даних до релеїв. У контексті соціальних мереж, це можна порівняти з веб-додатком або мобільним додатком Twitter. Це клієнт, який дозволяє вам читати дані з централізованої бази даних Twitter і записувати дані до неї.
- Релеї схожі на бази даних (хоча вони роблять набагато більше, ніж просто зберігають дані). Вони дозволяють клієнтам надсилати їм дані та зберігати ці дані в базі даних. Клієнти можуть потім читати дані з релеїв, щоб показувати їх користувачам.
- Кожен користувач ідентифікується за допомогою публічного ключа. Кожен об’єкт події (наприклад, повідомлення, яке ви публікуєте, оновлення вашого списку підписників тощо) підписується. Клієнти перевіряють ці підписи, щоб переконатися, що вони правильні.
- Клієнти отримують дані з релеїв і публікують дані до релеїв. Релеї майже завжди обираються користувачем. Релеї не обов’язково повинні спілкуватися один з одним, але можуть потенційно робити це в майбутньому.
- Наприклад, щоб оновити свій профіль, ви просто інструктуєте свій клієнт надіслати подію типу 0 до релеїв, які ви хочете використовувати. Релеї потім зберігають цю подію.
- Під час запуску ваш клієнт запитує дані з релеїв, які ви йому вказали. Це можна відфільтрувати, щоб показувати лише події для користувачів, на яких ви підписані, або ви можете запитати все від усіх, тоді клієнт відображає ці дані вам.
- Існує багато різних типів подій. Події можуть містити всілякі структуровані дані, і найбільш використовувані структури знаходять своє місце в Можливостях Впровадження Nostr (NIPs – стандарти протоколу, яких дотримуються всі), щоб усі клієнти та релеї могли безперешкодно їх обробляти.
- Дані, які ви можете бачити на Nostr, повністю залежать від релеїв, до яких ви вирішите підключитися. Дивіться діаграму мережі нижче для більш детальної інформації.
Діаграма мережі

На діаграмі вище ми бачимо 3 релеї та 3 користувачів. Кожен з користувачів підключається до Nostr за допомогою різного клієнта (і на різній платформі).
Враховуючи читання та запис на діаграмі:
- Боб може бачити всі пости Аліси, але не може бачити нічого від Мері (і навіть не знає, що вона існує)
- Аліса може бачити всі пости Боба, але не може бачити нічого від Мері (і навіть не знає, що вона існує)
- Мері може бачити всі пости Боба та Аліси. Це тому, що хоча вона пише тільки до Релею 3, вона читає з Релею 2, де Боб і Аліса пишуть свої пости.
Це дуже спрощена ситуація, але ви вже можете побачити, що вибір релеїв, до яких ви хочете підключитися, може мати великий вплив на те, кого і що ви побачите, використовуючи Nostr.
Події
Події є єдиним типом об’єктів у мережі Nostr. Кожен об’єкт події має kind, який позначає, який це тип події (яку дію може виконати користувач або які повідомлення можуть бути отримані).
Ось як виглядає подія типу 1 (тип 1 призначений для коротких текстових нотаток – тобто щось на кшталт твіту в Twitter)
{
"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вказує нам ID події - Поле
pubkeyвказує нам публічний ключ користувача, який надіслав подію - Поле
created_atвказує нам, коли подія була опублікована - Поле
kindвказує нам, який це тип події - Поле
tagsвказує нам теги події. Вони використовуються для створення посилань, додавання медіа та згадування інших користувачів або подій. - Поле
contentнадає нам зміст події. У цьому випадку це короткий текстовий пост. - Поле
sigє підписом, який клієнти використовують для перевірки того, що користувач з цим публічним ключем дійсно надіслав цю подію на зазначену дату.
Event Kinds
Існує багато різних типів подій Nostr. Найактуальніший список популярних типів подій завжди можна знайти в репозиторії Nostr NIPs.
NIPs
Nostr Implementation Possibility, або NIP, існують для документування того, що МАЄ, що ПОВИННО і що МОЖЕ бути реалізовано програмним забезпеченням, сумісним з релеями та клієнтами Nostr. NIPs — це документи, які описують, як працює протокол Nostr.
Чому мені варто перейматися NIPs?
Nostr є децентралізованим і не належить централізованій службі (як Twitter). Це означає, що напрямок розвитку протоколу залежить від усіх нас! Ми можемо пропонувати та відстоювати зміни, а також надавати відгуки щодо ідей, запропонованих іншими.
Активна участь у спільноті дає вам право голосу в напрямку розвитку мережі. NIPs, опубліковані в основному репозиторії, вже затверджені. Додавання нових ідей здійснюється через Pull Request у цьому репозиторії.
Де я можу знайти NIPs?
Ви можете побачити всі поточні NIPs у репозиторії Nostr NIP.