163 / 691NWC

Nostr Wallet Connect

Авторизованные запросы приложения к Lightning-кошельку

Nostr Wallet Connect связывает приложение и кошелёк зашифрованными запросами; пределы доступа определяет сервис кошелька.

Nostr Wallet Connect (NWC) — протокол NIP-47 для удалённого управления Lightning-кошельком через ретрансляторы Nostr. Они передают сообщения, не сами биткоины; протокол подходит личному узлу и кастодиальному сервису.

Клиентское приложение отправляет запрос, сервис проверяет его и вызывает платёжный интерфейс. NWC не определяет, кто хранит биткоин-ключи. Личный узел и кастодиальный кошелёк могут использовать один протокол, различаясь доверием и возможностями восстановления. [NWC — NIP-47: Core protocol] [NWC — Project overview]

URI содержит открытый ключ сервиса, ретранслятор и secret — закрытый ключ клиентского соединения. Это не seed кошелька, но он позволяет подписывать разрешённые запросы. QR или копия могут предоставить доступ другому приложению. Отдельные ключи снижают связываемость соединений. [NWC — NIP-47: Core protocol]

Публичное событие info сообщает возможности сервиса; get_info возвращает методы конкретного соединения. Ядро включает pay_invoice, make_invoice, lookup_invoice, get_balance и get_info. История, keysend и уведомления относятся к необязательным расширениям. Поддержку и разрешение проверяют отдельно: имя метода не означает всеобщего согласия платить. [NWC — NIP-47: Core protocol] [NWC — Optional specifications] [NWC-02 — Notifications]

Info использует kind 13194, запрос 23194, ответ 23195. Тег p указывает другую сторону, e в ответе ссылается на запрос. Клиент проверяет подпись, ожидаемый ключ сервиса, связь с запросом и result_type. Само получение события от ретранслятора не доказывает выполнение команды. [NWC — NIP-47: Core protocol]

Суммы и комиссии NIP-47 заданы в msat; 1000 msat равны одному satoshi. Ошибка единиц меняет сумму в тысячу раз. Успешный pay_invoice возвращает preimage, ответ с ошибкой — error. Создание счёта через make_invoice не означает оплаты; lookup_invoice позволяет узнать состояние. [NWC — NIP-47: Core protocol]

Сейчас предпочтителен nip44_v2; nip04 оставлен для совместимости, отсутствие encryption означает старый режим. Само NIP-44 не обеспечивает forward secrecy. Ретранслятор видит типы, теги, ключи соединения и время. Главный ключ идентичности пользователя не следует применять для соединения NWC. [NWC — NIP-47: Core protocol] [Nostr — NIP-44: Encrypted payloads]

Запросы и ответы NWC — эфемерные события. Недоступный ретранслятор или офлайн-сервис могут потерять сообщение; может пропасть только ответ уже выполненного платежа. После timeout сначала проверьте состояние через lookup_invoice или кошелёк. Молчание не доказывает неудачу, а новый запрос не является автоматически безопасным повтором. [NWC — NIP-47: Core protocol]

Сервис может ограничивать методы, бюджет или срок соединения и отзывать его ключ. Ограничения должен обеспечивать сервис, не только экран клиента. Удаление соединения в приложении может не отменить разрешение кошелька. Отзыв блокирует будущее использование, но не отменяет завершённый платёж. [NWC — NIP-47: Core protocol]

Для полной картины прочитайте эту статью вместе с Nostr, Lightning Network, BOLT 11, Кошелёк, Приватный ключ, Satoshi. На эту статью также ссылаются Nostr, BOLT 11.

DOC · 001NWC — NIP-47: Core protocolСпецификация ↗DOC · 002NWC — Project overviewПервичный источник ↗DOC · 003NWC — Optional specificationsСпецификация ↗DOC · 004Nostr — NIP-44: Encrypted payloadsСпецификация ↗DOC · 005NWC-02 — NotificationsСпецификация ↗
Сначала источники · Не является инвестиционной рекомендацией