NIP-58 меняет нумерацию Profile Badges и добавляет Badge Sets
Слитый pull request меняет номер kind, который использует событие Profile Badges из NIP-58, с 30008 на 10008, и определяет новое событие Badge Sets на освободившемся kind 30008.
Nostr WoT Newsroom
Материал подготовлен редакцией Nostr WoT на основе указанных первоисточников и опубликован автоматически, без индивидуальной проверки человеком.
NIP-58 определяет, как в Nostr работают значки (badges): издатель определяет значок, присваивает его публичным ключам, а получатель выбирает, какие присвоенные значки показывать в своём профиле. 2026-04-01 PR #2276, автором которого стал alexgleason и который закрывает issue #2275, был слит в спецификацию и изменил номер kind, используемый событием "Profile Badges", а также добавил новый тип события для группировки значков в наборы.
Что именно переместилось
До этого PR событие Profile Badges, то есть событие, которое пользователь публикует, чтобы сказать "вот значки, которые я принимаю и хочу показывать в своём профиле", определялось как адресуемое событие с kind 30008, идентифицируемое фиксированным тегом d со значением profile_badges.
После этого PR Profile Badges представляет собой заменяемое событие с kind 10008, определённое как стандартный список NIP-51. Ему больше не нужен тег d вообще, поскольку заменяемые события не требуют его для уникальности в рамках одного публичного ключа. Событие по-прежнему содержит те же упорядоченные пары тегов a и e, по одной паре на значок, ссылающиеся на Badge Definition и Badge Award для каждого отображаемого значка.
Kind 30008 не был упразднён. Он был переназначен. PR придаёт ему новое значение: событие "Badge Set", то есть адресуемый набор NIP-51, позволяющий пользователю группировать принятые значки по именованным категориям, каждая со своими упорядоченными парами тегов a/e, указывающими на Badge Definitions и Badge Awards.
Именно это переназначение стоит точно зафиксировать. Номера kind в Nostr не разделены по пространствам имён в зависимости от NIP: клиент или relay, запрашивающий kind 30008 в ожидании старого формата Profile Badges, теперь получит вместо этого события Badge Set, которые имеют похожую форму тегов, но иное значение и другую конвенцию тега d (идентификатор набора, выбранный пользователем, а не фиксированную строку profile_badges). Всё, что продолжает читать kind 30008 по старому предположению, ломается молча, а не выдаёт ошибку, поскольку событие всё ещё разбирается, просто теперь означает нечто другое.
Спецификация прямо описывает этот переход. Новый раздел "Deprecated Profile Badges event" указывает, что более ранняя версия NIP-58 использовала адресуемое событие kind 30008 с тегом d, равным profile_badges, для Profile Badges, и предписывает клиентам считать такие старые события эквивалентными новому kind 10008 и переходить на новый формат.
Где ещё изменились номера
PR также обновляет NIP-51 (51.md), то есть NIP о списках и наборах, на который опирается NIP-58, и индекс NIP (README.md), чтобы все три файла оставались согласованными:
51.mdдобавляет kind10008в таблицу стандартных списков как "Profile badges", со ссылками как на определения значков (тегиaна kind 30009), так и на присвоения значков (тегиeна kind 8), плюс тегиaна новый kind 30008 наборов значков.51.mdдобавляет kind30008в таблицу стандартных наборов как "Badge sets", со ссылками на определения значков kind 30009 и присвоения значков kind 8.- Индекс kind в
README.mdтеперь указывает10008как "Profile Badges" (со ссылкой на NIP-51 и NIP-58) и переименовывает30008из "Profile Badges" в "Badge sets" (теперь со ссылкой на NIP-51 и NIP-58 вместе, тогда как раньше указывался только NIP-58).
Kind 30009, событие Badge Definition, и kind 8, событие Badge Award, этим PR не затрагиваются.
Масштаб изменения
PR затронул три файла: 51.md, 58.md и README.md, всего добавлено 15 строк и удалено 10. NIP-58 по-прежнему помечен как draft и optional.
Источники
Каждое утверждение в этом материале ссылается на первоисточник.
- NIP-58: change Profile Badges to kind 10008, add kind 30008 Badge sets — nostr-protocol/nips (1 апреля 2026 г.)