Nostr WoT
NostrNIP-02IdentityWeb of Trust

NIP-02 ограничивает petname до ASCII

Через день после появления путей petname в NIP-02 добавилось одно предложение, ограничивающее допустимые petname буквами ASCII, цифрами и подчёркиванием.

Nostr WoT Newsroom

Статья3 мин чтения

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

NIP-02 ограничивает petname до ASCII

NIP-02 теперь ограничивает, какие petname можно разрешать. Коммит 46f8e95, отправленный в master 20 сентября 2026 года в 16:53 UTC, добавляет одно предложение в конец раздела о petname:

text
In order to qualify for petname resolution they must have only ASCII letters, numbers or `_`.

Коммит меняет один файл, в нём одна добавленная и одна удалённая строка, потому что новая строка заменяет пустую строку в конце файла. Он отправлен напрямую, без pull request, и стоит сразу после записи путей, которую PR #2472 влил днём ранее.

Что теперь допустимо

Допустимый набор узкий: двадцать шесть букв ASCII в любом регистре, цифры от 0 до 9 и подчёркивание. Всё остальное вне набора. Исключены пробел, косая черта, дефис, точка и символ @. Исключены также латинские буквы с диакритикой, например é или ñ, все нелатинские письменности, включая кириллицу, греческую, арабскую, еврейскую, деванагари и письменности CJK, и эмодзи.

Практический эффект затрагивает вопрос разбора, оставшийся открытым после предыдущего слияния. Влитый текст NIP-02 разрешает путь вида ~/erin/charlie по одному компоненту за раз: каждый компонент ищется в списке подписок профиля, полученного на предыдущем шаге. Petname с символом / сделал бы такое разбиение неоднозначным, а petname с пробелом усложнил бы определение границы пути в окружающем тексте. Спецификация отвечает на это не механизмом экранирования, а удалением символов, которые его потребовали бы.

Что остаётся нерешённым

В предложении не назван его субъект. Оно начинается с "they" и расположено после примеров абсолютного корня:

text
~npub1.../erin/charlie
[email protected]/erin/charlie

Эти корни содержат точку и символ @, оба вне допустимого набора. Раздел вокруг предложения посвящён petname, которые хранятся как четвёртое значение тега p, а сообщение коммита описывает изменение как уточнение допустимых символов petname. Читателю приходится выводить антецедент из этого контекста, а не из самого предложения.

Текст останавливается на допустимости. Он указывает, какие petname пригодны для разрешения. Он не говорит, что клиенту делать с непригодным: показывать ли его как локальную метку, отказываясь разрешать, скрывать или отклонять при записи списка подписок. Petname хранится в событии kind 3, которое публикует клиент самого пользователя, и ничто в NIP-02 не проверяет это поле, поэтому события с недопустимыми petname уже могут существовать и будут публиковаться дальше.

Формулировка использует строчное "must", а не заглавную форму. В других местах NIP-02 дважды применяет заглавные ключевые слова, в обоих случаях SHOULD: для удаления релеями устаревших списков подписок и для добавления новых подписок в хронологическом порядке. Файл не поясняет, должны ли разработчики читать строчное "must" с тем же весом.

Цена этой границы

Ограничение разрешения набором ASCII напрямую касается тех, кто пишет не на нём. Petname это локальная метка, выбранная автором списка подписок для собственного взгляда на граф, и именно такое поле человек стал бы заполнять на своём письме. По этому правилу petname на кириллице или на японском по-прежнему можно хранить в теге p, но он не пригоден как компонент пути.

Таков размен, зафиксированный во влитом тексте: однозначная грамматика для многошаговых путей имён в обмен на имена из набора символов, за пределами которого остаётся большая часть письменностей мира. Коммит фиксирует ограничение. Он не описывает путь миграции для списков подписок, уже содержащих petname вне набора, и пока не вышло ни одного релиза клиента, ссылающегося на это правило.

Источники

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

  1. Commit 46f8e95: nip02: clarify petname character eligibility — nostr-protocol/nips (20 сентября 2026 г.)
  2. NIP-02 на коммите 46f8e95 — nostr-protocol/nips (20 сентября 2026 г.)
  3. PR #2472: nip02: make petnames great again — nostr-protocol/nips (19 сентября 2026 г.)

Будьте в курсе

Получайте новости о выпущенных версиях Nostr WoT, новых функциях и интеграциях.

Вы будете получать рассылку на русском языке.

Мы сохраняем ваш адрес электронной почты и предпочитаемый язык для отправки рассылки.

Рассылки