Nostr Wallet Connect (NWC) ist das NIP-47-Protokoll zur Fernsteuerung einer Lightning-Wallet über Nostr-Relays. Relays transportieren Nachrichten, nicht die Bitcoins selbst; sowohl eigene Nodes als auch Verwahrdienste können es nutzen.
Die Client-App sendet eine Anfrage, der Wallet-Dienst prüft sie und ruft seine Zahlungsschnittstelle auf. NWC bestimmt nicht, wer die Bitcoin-Schlüssel hält. Eigene Nodes und verwahrte Wallets können dasselbe Protokoll verwenden, unterscheiden sich aber bei Vertrauen und Wiederherstellung. [NWC — NIP-47: Core protocol] [NWC — Project overview]
Die Verbindungs-URI enthält den öffentlichen Dienstschlüssel, ein Relay und secret, den privaten Verbindungsschlüssel des Clients. Er ist kein Wallet-Seed, erlaubt aber das Signieren autorisierter Anfragen. QR-Code oder Kopie können einer anderen App Zugriff geben. Separate Schlüssel je Verbindung reduzieren deren Verknüpfbarkeit. [NWC — NIP-47: Core protocol]
Das öffentliche info-Ereignis nennt Dienstfähigkeiten; get_info liefert Methoden für die konkrete Verbindung. Zum Kern gehören pay_invoice, make_invoice, lookup_invoice, get_balance und get_info. Historie, keysend und Benachrichtigungen sind optionale Erweiterungen. Unterstützung und Berechtigung getrennt prüfen: Ein Methodenname ist keine pauschale Zahlungserlaubnis. [NWC — NIP-47: Core protocol] [NWC — Optional specifications] [NWC-02 — Notifications]
Info verwendet kind 13194, Anfragen 23194 und Antworten 23195. Das p-Tag benennt die Gegenstelle, das e-Tag der Antwort verweist auf die Anfrage. Clients prüfen Signatur, erwarteten Dienstschlüssel, Anfragebezug und result_type. Ein vom Relay empfangenes Ereignis beweist noch keine Ausführung. [NWC — NIP-47: Core protocol]
Beträge und Gebühren in NIP-47 sind in msat; 1000 msat entsprechen einem Satoshi. Verwechselte Einheiten ändern den Betrag um Faktor tausend. Erfolgreiches pay_invoice liefert preimage, eine Fehlerantwort error. Eine mit make_invoice erzeugte Rechnung ist noch nicht bezahlt; lookup_invoice kann ihren Status abfragen. [NWC — NIP-47: Core protocol]
Die aktuelle Aushandlung bevorzugt nip44_v2; nip04 bleibt für Kompatibilität, ein fehlendes encryption-Tag bedeutet den alten Modus. NIP-44 allein bietet keine forward secrecy. Relays sehen Ereignisarten, Tags, Verbindungsschlüssel und Zeitpunkte. Der zentrale Identitätsschlüssel des Nutzers soll für NWC-Verbindungen nicht verwendet werden. [NWC — NIP-47: Core protocol] [Nostr — NIP-44: Encrypted payloads]
NWC-Anfragen und Antworten sind flüchtige Ereignisse. Ein unerreichbares Relay oder ein offline befindlicher Dienst kann eine Nachricht verlieren; ebenso kann nur die Antwort einer bereits ausgeführten Zahlung fehlen. Nach einem Timeout zuerst über lookup_invoice oder die Wallet prüfen. Schweigen ist kein sicherer Fehlschlag, eine neue Anfrage keine automatisch sichere Wiederholung. [NWC — NIP-47: Core protocol]
Der Dienst kann Methoden, Budget oder Laufzeit begrenzen und den Verbindungsschlüssel widerrufen. Diese Grenzen muss der Dienst durchsetzen, nicht bloß die Client-Oberfläche. Das Löschen einer Verbindung in der App muss die Wallet-Berechtigung nicht aufheben. Widerruf sperrt zukünftige Nutzung, macht aber abgeschlossene Zahlungen nicht rückgängig. [NWC — NIP-47: Core protocol]
Für ein möglichst vollständiges Bild lies diesen Eintrag zusammen mit Nostr, Lightning Network, BOLT 11, Wallet, Privater Schlüssel, Satoshi. Auf diesen Eintrag verweisen außerdem Nostr, BOLT 11.