Nostr WoT
NostrNIP-29ГруппыДайджест

Итоги недели: группы NIP-29 получили закрепление сообщений, подгруппы, приглашения и баннер

За три дня в NIP-29 влили пять pull request: закрепление сообщений, формат кода приглашения, подгруппы, тег баннера и расширение списка закреплённых сообщений. Вместе они показывают, как группы на базе relay обрастают функциями, которые уже есть у устоявшихся чат-платформ.

Nostr WoT Newsroom

Итоги недели4 min read

Материал подготовлен редакцией Nostr WoT на основе указанных первоисточников и опубликован автоматически, без индивидуальной проверки человеком.

Итоги недели: группы NIP-29 получили закрепление сообщений, подгруппы, приглашения и баннер

Между 15 и 17 июля 2026 года в NIP-29, спецификацию групп на базе relay, было влито пять pull request. Для одного NIP это необычно плотная концентрация изменений: #2379, #2380, #2319 и #2383 были влиты в течение примерно одного дня, причём три из них (#2380, #2319 и #2383) уложились в окно в 25 секунд 16 июля, а #2416 добавился в 00:01:30 UTC 17 июля.

По отдельности каждое изменение небольшое. Вместе они описывают одну и ту же работу: группы на базе relay обрастают той же обстановкой, что уже есть у устоявшихся чат-платформ. Закреплённые сообщения, ссылки-приглашения, подканалы и изображение-баннер не новы для чат-софта в целом. Новым здесь стало то, что NIP-29 получил специфицированный, применяемый на уровне relay способ сделать каждую из этих вещей, влитие за влитием.

Закрепление сообщений появляется первым (#2379)

Самый ранний из пяти, влитый 2026-07-15, #2379 добавляет закрепление сообщений в NIP-29. Он вводит модераторское действие update-pin-list вместе с новым типом события, kind:39005, для учёта того, какие сообщения закрепили администраторы группы. Это концептуально самое маленькое добавление недели, но именно к нему через два дня возвращается последний PR в серии, #2416.

Формат кода приглашения для идентификаторов групп (#2380)

#2380 добавляет формат суффикса, позволяющий идентификатору группы содержать код приглашения. При 8 добавленных строках он даёт группам NIP-29 способ на уровне спецификации распространять приглашение прямо в составе идентификатора, а не отдельной ссылкой.

Подгруппы: самое крупное изменение недели (#2319)

#2319 структурно самый крупный из пяти, с 62 добавленными строками, и он сильнее всего меняет то, как группы соотносятся друг с другом. Он добавляет в NIP-29 раздел о подгруппах, позволяющий организовывать группы иерархически. Делается это без введения нового типа события: используются уже существующие kind:39000 (метаданные группы) и kind:9002 (edit-metadata), и добавляются два имени тега, parent и child.

Тег parent в событии kind:39000 группы указывает на идентификатор d родительской группы. Отсутствие тега parent означает, что группа является корневой, без родителя, а событие edit-metadata, отправленное без тега parent, как раз и отсоединяет группу обратно к корню. Ожидается, что клиенты строят дерево групп локально, читая события kind:39000, а не обращаясь к отдельному эндпоинту иерархии.

Назначение родителя, смена родителя и повышение группы обратно до корневой происходят через событие kind:9002 edit-metadata. Relay отвечает за синхронизацию обеих сторон связи: когда родитель группы меняется, relay обновляет теги child и у старого, и у нового родителя в их событиях kind:39000. Событие kind:39000 родителя обязано перечислять каждого своего потомка упорядоченным тегом ["child", "<id>"], и спецификация требует, чтобы relay отклонял правки метаданных, которые молча удалили бы существующего потомка. Поскольку порядок определяется позицией тега, администраторы могут менять порядок списка потомков.

Связь применяется на уровне relay, а не согласовывается между клиентами. Событие kind:9002, устанавливающее ["parent", "X"], отклоняется, если только его автор не является также администратором группы X, согласно списку администраторов kind:39001 этой группы. Поскольку правка дочерней группы уже требует прав администратора у потомка, обе стороны связи, родитель и потомок, должны независимо дать согласие, прежде чем relay примет связь. Спецификация также требует, чтобы relay отклонял циклы, включая случай, когда группа указывает саму себя в качестве родителя, закрывая тот вид некорректного дерева, который проверка только на стороне клиента могла бы пропустить.

Тег баннера для метаданных группы (#2383)

#2383 добавляет тег banner в событие метаданных группы kind:39000. С двумя добавленными строками и одной удалённой, это самый маленький диф из пяти, дающий группам предусмотренное спецификацией место для указания изображения-баннера рядом с уже имеющимися метаданными, такими как имя и изображение профиля.

Список закреплённых учится ссылаться на адресуемые события (#2416)

#2416, влитый в 00:01:30 UTC 17 июля, возвращается к списку закреплённых сообщений, который #2379 ввёл двумя днями ранее. Он расширяет формат так, чтобы список мог также содержать теги a, принятое в NIP-01 обозначение для ссылок на адресуемые события по типу, публичному ключу и идентификатору d, в дополнение к тегам e, которые уже поддерживались для ссылок на обычные, неадресуемые события.

Что складывается за неделю

Ни один из этих пяти pull request сам по себе не велик, и источники не объясняют, почему мейнтейнеры занялись ими вместе или что будет дальше. Что они действительно показывают, так это форму самой работы: за три дня NIP-29 получил способ закреплять сообщения, способ приглашать по идентификатору, способ вкладывать группы одну в другую, способ задавать баннер и расширенный список закреплённых сообщений, замыкающийся на первое изменение. Это спецификация, которая активно обрастает функциями, нужными протоколу группового чата, как только люди начинают их запрашивать.

В этом обзоре

  1. NIP-29: add message pinning (update-pin-list and kind:39005)

    Добавляет модераторское действие update-pin-list и новое событие kind:39005, чтобы администраторы могли вести список закреплённых сообщений.

  2. NIP-29: invite code suffix for group identifiers

    Добавляет формат суффикса, позволяющий идентификатору группы содержать код приглашения.

  3. NIP-29: add subgroups spec

    Добавляет раздел о подгруппах в NIP-29: теги parent и child в kind:39000, применяемые relay через правки kind:9002, с проверкой циклов и деревом, ограниченным одним relay.

  4. NIP-29: add banner tag to group metadata (kind:39000)

    Добавляет тег banner в событие метаданных группы kind:39000.

  5. NIP-29: allow a tags in pin list

    Расширяет формат списка закреплённых сообщений из #2379, позволяя также использовать теги a, ссылки на адресуемые события, в дополнение к уже поддерживаемым тегам e.

Источники

Каждое утверждение в этом материале ссылается на первоисточник.

  1. NIP-29: add message pinning (update-pin-list and kind:39005) — nostr-protocol/nips (15 июля 2026 г.)
  2. NIP-29: invite code suffix for group identifiers — nostr-protocol/nips (16 июля 2026 г.)
  3. NIP-29: add subgroups spec — nostr-protocol/nips (16 июля 2026 г.)
  4. NIP-29: add banner tag to group metadata (kind:39000) — nostr-protocol/nips (16 июля 2026 г.)
  5. NIP-29: allow a tags in pin list — nostr-protocol/nips (17 июля 2026 г.)

Ещё от редакции

Stay Updated

Get the latest on new features, trust assertions, and services integration as they ship.

No spam, ever. Unsubscribe anytime.