Nostr WoT
NostrNIPNIP-A3

NIP-A3 переписан через день после слияния

Через день после того, как NIP-A3 попал в репозиторий NIP, коммит удалил 101 его строку. Номер kind и имя тега сохранились. Большая часть нормативных подробностей вокруг них, нет.

Nostr WoT Newsroom

Статья4 min read

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

NIP-A3 переписан через день после слияния

NIP-A3 переписали 27 августа 2026 года в 15:14 UTC, через день после того, как он попал в репозиторий NIP. Коммит 24b2ae9 удаляет 101 строку из A3.md и добавляет 33, сокращая файл со 132 строк до 64, и меняет одну строку в README.md. Коммит отправлен напрямую в master. API GitHub не показывает связанного с ним пул-реквеста.

Спецификация появилась через PR #2119, слитый 26 августа в 18:33 UTC. Номер kind и имя тега пережили переписывание. Большая часть нормативных подробностей вокруг них, нет.

Заголовок и статус

Из заголовка убрана ссылка на RFC. "payto: Payment Targets (RFC-8905)" стало "payto: Payment Targets", и запись в README.md приведена в соответствие.

Изменились и отметки статуса. В слитой версии стояло optional и строка author:atxmj. В текущем файле стоят draft и optional, строки об авторе нет.

Раздел "Event Kind" исчез. В нём говорилось, что NIP-A3 определяет kind:10133 и что этот kind заменяемый. Номер kind по-прежнему встречается в примере события и в абзаце об отображении, а 10133 попадает в диапазон 10000 <= n < 20000, который NIP-01 уже определяет как заменяемый, так что поведение релеев не меняется. Просто сама спецификация больше об этом не говорит.

Тег

Структура тега теперь фиксированная, из трёх элементов:

text
["payto", "<type>", "<address>"]

Слитая версия допускала больше:

text
["payto", "<type>", "<authority>", "<optional_extra_1>", "<optional_extra_2>", ...]

Меняются две вещи. Третий элемент переименован из authority в address. И убраны замыкающие элементы, описанные как зарезервированные под будущие возможности RFC-8905, а вместе с ними правило прямой совместимости, по которому клиенты обязаны понимать элементы с 0 по 2 и могут игнорировать всё, что идёт после.

Валидация

Раздел Validation удалён. Он требовал, чтобы type состоял из строчных букв, цифр и дефисов, а authority был безопасным для URL, со специальными символами в процентном кодировании.

То, что осталось, перенесено в описание тега: type всегда в нижнем регистре, а клиенты могут применять дополнительную проверку, специфичную для сети или платформы, к тем типам, которые они распознают. Правила о наборе символов и о кодировании в файле больше нет нигде.

Отображение

Это содержательное изменение. Слитый текст предписывал клиентам собирать payto://<type>/<authority> для каждого тега и показывать результат кнопкой или ссылкой. RFC-8905 была форматом вывода.

Текущий текст делает её запасным вариантом. Клиенты могут использовать URI конкретной схемы, когда такая есть, например bitcoin:<address> или ethereum:<address>, и прибегать к payto://<type>/<address> в остальных случаях. Разобранный список в файле показывает смесь: тег bitcoin отображается как bitcoin:bc1qxq66e0t8d7ugdecwnmv58e90tpry23nc84pg9k, а тег nano и тег типа unknowntype становятся URI payto://.

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

Список типов

Таблица рекомендованных типов заменена простым списком под заголовком "Commonly Used Tags". В таблице было восемь записей, каждая с длинным названием, коротким названием, символом и ссылкой на фирменные материалы самой платёжной системы. В списке четырнадцать записей и ни одной колонки:

bip352 для тихих платежей, bip353 для DNS-адресов, bitcoin, cashme, ethereum, lightning, litecoin, monero, nano, paypal, revolut, solana, venmo и zcash.

Шесть из них новые: bip352, bip353, litecoin, paypal, solana и zcash. Ни один из восьми прежних не убран. В конце списка файл добавляет, что новые широко используемые форматы можно будет внести в него позже.

Запы

Раздел "Implementation Notes" удалён целиком, включая подраздел о запах NIP-57. Там говорилось, что клиенты могут использовать тег payto типа lightning как замену полю профиля lud16 или как дополнение к нему, с разобранным примером, где событие kind 0 и событие kind 10133 показаны рядом.

В текущем файле нигде не упоминаются ни lud16, ни NIP-57, ни запы.

Тем, кто реализует

Ничто из уже опубликованного не становится недействительным. Номер kind, имя тега и позиции типа и адреса не изменились, так что существующее событие kind 10133 разбирается одинаково по обеим версиям.

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

Источники

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

  1. Коммит 24b2ae9: переписывание NIP-A3 — nostr-protocol/nips (27 августа 2026 г.)
  2. NIP-A3 payto: Payment Targets (RFC-8905) — nostr-protocol/nips (26 августа 2026 г.)
  3. A3.md — nostr-protocol/nips (27 августа 2026 г.)

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

Stay Updated

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

No spam, ever. Unsubscribe anytime.