NIP-47 Упрощает Базовую Спецификацию и Добавляет Репозиторий Расширений
Слитый pull request сводит NIP-47 к трём типам событий и пяти базовым методам, перенося уведомления, платежи keysend, удерживаемые счета, список транзакций и работу с метаданными в отдельный репозиторий расширений.
Nostr WoT Newsroom
Материал подготовлен редакцией Nostr WoT на основе указанных первоисточников и опубликован автоматически, без индивидуальной проверки человеком.
NIP-47 определяет Nostr Wallet Connect (NWC): способ, которым клиент Nostr обращается к удалённому Lightning-кошельку через relay-серверы, чтобы запросить платёж, узнать баланс или создать счёт, не храня средства у себя. 2026-08-01 PR #2419 от frnandu был слит со спецификацией и переписал 47.md, сведя его к гораздо меньшему ядру и перенеся большую часть прежнего содержимого в новый выделенный репозиторий расширений NWC. Изменение затронуло один файл: 19 добавленных строк и 332 удалённых, самая крупная переработка одного файла среди изменений NIP-47, охваченных здесь.
Что осталось в ядре
Остались три типа событий: событие информации (kind 13194), событие запроса (kind 23194) и событие ответа (kind 23195). Пять методов сохраняют полное описание запроса и ответа в 47.md: pay_invoice, make_invoice, lookup_invoice, get_balance и get_info. Согласование шифрования между клиентом и wallet service (NIP-44 с откатом на NIP-04, объявляемое через тег encryption события информации), список кодов ошибок, пример потока оплаты счёта и заметка об использовании выделенного relay остались без изменений.
Что перенесено наружу
Всё остальное потеряло текст спецификации в 47.md. Тип события уведомления, kind 23197 (с kind 23196, который в старой версии сохранялся для совместимости с NIP-04), исчез из списка базовых типов событий, а всё описание "Notification Events" вместе с разделом "Notifications", где были расписаны JSON-структуры событий payment_received, payment_sent и hold_invoice_accepted, было полностью удалено.
Метод pay_keysend с полным форматом запроса и ответа исчез. То же самое с list_transactions, включая параметры пагинации и фильтрации. Три метода удерживаемых счетов, make_hold_invoice, cancel_hold_invoice и settle_hold_invoice, удалены вместе с пошаговым разбором из приложения "Example Hold Invoice Support Flow". Раздел Metadata, определявший лимит метаданных в 4096 символов и описывавший соглашения, которые некоторые клиенты используют для комментариев LUD-12, данных плательщика и получателя LUD-18, вложенных запросов zap по NIP-57 и TLV-записей keysend, тоже исчез. Раздел о deep link, описывавший схему URI nostrnwc://connect и её параметры appicon, appname и callback для сопряжения кошельков, также удалён.
Тег возможностей изменил форму
Дело не только в удалённом тексте: изменилась и часть спецификации, влияющая на формат данных на проводе. В прежнем 47.md событие информации объявляло поддержку уведомлений через тег notifications (например, payment_received payment_sent), а список возможностей в поле content события мог включать слово notifications рядом с именами методов. Новая версия убирает этот тег полностью. Вместо него событие информации теперь несёт тег extensions, перечисляющий, какие идентификаторы опциональных расширений поддерживает wallet service (в примере спецификации используется 02 03 04), и указывает, что любые методы из этих расширений должны по-прежнему отражаться в списке возможностей поля content. Развёрнутый пример в приложении показывает это наглядно: прежний пример события информации объявлял одиннадцать возможностей, включая notifications; новый объявляет пять: pay_invoice get_balance get_info make_invoice lookup_invoice, с тегом extensions, отдельно перечисляющим 02 03 04 06 07 08. Ни диф, ни описание PR не указывают, какому идентификатору расширения соответствует какая удалённая функция.
Куда делся удалённый текст
Новый раздел "Extensions" заменяет большую часть вырезанного. В нём говорится, что NIP-47 теперь определяет только базовый протокол и небольшой общий набор команд, а дополнительные методы, соглашения о метаданных, схемы сопряжения и более детальное поведение авторизации могут определяться опциональными спецификациями расширений NWC, которые ведутся в https://github.com/nostr-wallet-connect/nwc. Этот репозиторий, согласно новому разделу, резервирует 01.md под базовую спецификацию, соответствующую этому упрощённому NIP-47, а опциональные функции начинаются с 02.md.
Ломает ли это существующие кошельки
Диф не затрагивает формат на проводе пяти методов, оставшихся в ядре, ни номера kind трёх базовых типов событий. Кошелёк или клиент, построенный по прежнему 47.md и реализующий pay_invoice, get_balance, make_invoice, lookup_invoice и get_info, продолжает работать точно так же, как раньше. PR также не переписывает тела запросов и ответов для удаляемых функций, таких как pay_keysend или методы удерживаемых счетов, так что их ранее задокументированный формат на проводе тоже не меняется задним числом этим дифом: он просто больше не описан внутри 47.md.
Единственная конкретная точка совместимости: тег возможностей события информации. Любая реализация, которая проверяла тег notifications, чтобы понять, будет ли wallet service отправлять события kind 23197, больше не найдёт его описанным в спецификации, потому что он заменён схемой тега и идентификаторов extensions. Новые реализации, написанные строго по актуальному 47.md, покроют только пять базовых методов, если только не обратятся также к репозиторию расширений за остальным.
Почему разделение
Согласно описанию PR, цель состоит в том, чтобы оставить 47.md небольшим, стабильным и простым в реализации, дав опциональным функциям NWC отдельное место для независимого развития. Автор описывает работу как связанную с идеями, исследованными в проекте matbalez/universal-lightning-wallet, и согласованную с направлением, о котором договорились в более раннем обсуждении в репозитории NIPs: оно указывало на необходимость оставить место для будущей, более простой спецификации кошелька, одновременно признавая, что сам NIP-47 уже можно сократить, вынеся менее распространённую функциональность из его ядра.
Источники
Каждое утверждение в этом материале ссылается на первоисточник.
- NIP-47: simplify core spec and introduce extensions — nostr-protocol/nips (1 августа 2026 г.)