Что такое событие Nostr? Публикации, профили и подписи
Семь полей события, гарантии цифровой подписи и особенности профилей, реакций и медиафайлов по ссылкам.

Публикация в Nostr содержит больше, чем слова в вашей ленте. Приложение объединяет их с ключом автора, отметкой времени и другими данными, а затем просит ваш подписывающий инструмент поставить подпись. Такой подписанный пакет называется событием. Это руководство дополняет видео Nostr WoT ниже на примере сообщения: «Увидимся на закате».
Семь полей события
NIP-01 определяет общий формат. Чтобы пользоваться Nostr, не нужно писать JSON. Но знание этих полей помогает разобраться в запросе на подпись и понять, какие именно данные вы подтверждаете.
| Поле | Содержимое |
|---|---|
pubkey | Открытый ключ автора в шестнадцатеричной записи. |
created_at | Временная метка Unix в секундах, заданная программой автора. |
kind | Число, определяющее, как приложение должно интерпретировать событие. |
tags | Списки ссылок или дополнительных сведений. |
content | Строка с текстом или данными, соответствующими типу события. |
id | Отпечаток SHA-256 от данных, сериализованных по установленным правилам. |
sig | Подпись Шнорра для этого ID, проверяемая с помощью pubkey. |
ID вычисляется из [0, pubkey, created_at, kind, tags, content] по точным правилам сериализации JSON из NIP-01. Ни id, ни sig не входят в эти исходные данные. Начальный 0 относится к формату сериализации, а не обозначает тип события.
Пять полей данных проходят сериализацию NIP-01 и хеширование SHA-256, образуя id; sig является подписью этого id.
Один формат, разные действия
Короткая текстовая публикация использует kind 1, определённый в NIP-10. Её content может содержать «Увидимся на закате». Теги могут связывать ответ с другим событием.
Обновление профиля использует kind 0. Его content содержит объект JSON, закодированный в виде строки, с такими данными, как name, about и picture. Профили заменяемы: получив более новую версию для того же ключа, ретранслятор может удалить предыдущие.
Реакция на событие Nostr использует kind 7, определённый в NIP-25. Тег e указывает на целевое событие. Знак + в content означает отметку «нравится». У реакции есть собственные автор, ID и подпись; исходную публикацию она не изменяет.
Что действительно доказывает проверка
Полная проверка заново вычисляет ID из данных и проверяет подпись с помощью открытого ключа. Если кто-то заменит «на закате» на «на рассвете», сохранив прежние ID и подпись, проверка завершится неудачей. Подпись изменённых данных создаёт другое событие, а не переписывает исходное.
Действительная подпись устанавливает, что соответствующий ключ подписал эти данные. Она не устанавливает личность человека, использующего ключ, не подтверждает настоящее имя в профиле и не делает утверждение истинным. Отметка времени тоже подписана, но остаётся заявлением автора, а не независимым доказательством времени. Само по себе подписание не шифрует содержимое.
Почему фотография может исчезнуть
Событие может содержать URL медиафайла, который приложение загружает отдельно. NIP-92 описывает теги imeta для сопутствующих метаданных, включая необязательные хеши файлов. Подпись URL не делает неизменными байты по этому адресу и не поддерживает работу сервера. Хеш помогает проверить загруженные байты, но не гарантирует доступность файла.
Разные приложения могут проверить одно событие и отобразить его по-разному. Найдут ли они его, зависит от опрашиваемых ретрансляторов, хранения данных и поддержки функций. При просмотре события разделяйте три вопроса: проходит ли оно проверку, доверяете ли вы автору и можете ли получить содержимое, на которое оно ссылается?
Видео по теме
Эти видео на английском языке.

