Протокол Nostr

Це огляд протоколу Nostr на високому рівні з деталями про типи подій та як працюють Можливості Впровадження Nostr (NIPs).

Nostr на найвищому рівні

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

Діаграма мережі

Діаграма мережі 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.