Nostr Wallet Connect(NWC)は Nostr リレーを介して Lightning ウォレットを遠隔操作する NIP-47 プロトコルです。リレーが運ぶのはメッセージであり、ビットコインそのものではありません。個人ノードもカストディサービスも利用できます。
クライアントアプリが要求を送り、ウォレットサービスが検証して決済インターフェースを呼び出します。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.