Nostr Wallet Connect (NWC) est le protocole NIP-47 de commande à distance d’un portefeuille Lightning via des relais Nostr. Les relais transportent les messages, pas les bitcoins ; un nœud personnel comme un service dépositaire peuvent l’utiliser.
L’application cliente envoie une requête, le service du portefeuille la vérifie puis appelle son interface de paiement. NWC ne détermine pas qui détient les clés bitcoin. Nœud personnel et portefeuille dépositaire peuvent partager le protocole, avec des modèles de confiance et de récupération différents. [NWC — NIP-47: Core protocol] [NWC — Project overview]
L’URI contient la clé publique du service, un relais et secret, la clé privée de connexion du client. Ce n’est pas la seed du portefeuille, mais elle permet de signer les requêtes autorisées. Un QR ou une copie peut donner accès à une autre application. Des clés distinctes limitent les rapprochements entre connexions. [NWC — NIP-47: Core protocol]
L’événement public info annonce les capacités du service ; get_info renvoie les méthodes accessibles à cette connexion. Le cœur comprend pay_invoice, make_invoice, lookup_invoice, get_balance et get_info. Historique, keysend et notifications sont des extensions facultatives. Vérifiez séparément support et autorisation : un nom de méthode ne vaut pas consentement général à payer. [NWC — NIP-47: Core protocol] [NWC — Optional specifications] [NWC-02 — Notifications]
Info utilise kind 13194, les requêtes 23194 et les réponses 23195. La balise p désigne l’autre partie, e dans la réponse référence la requête. Le client contrôle signature, clé attendue du service, correspondance et result_type. Recevoir un événement du relais ne prouve pas l’exécution. [NWC — NIP-47: Core protocol]
Montants et frais NIP-47 sont en msat ; 1000 msat valent un satoshi. Confondre les unités change le montant d’un facteur mille. Un pay_invoice réussi renvoie preimage, un échec fournit error. Créer une facture avec make_invoice ne la paie pas ; lookup_invoice permet de consulter son état. [NWC — NIP-47: Core protocol]
La négociation actuelle préfère nip44_v2 ; nip04 demeure pour compatibilité, et l’absence de balise encryption signifie l’ancien mode. NIP-44 seul ne fournit pas de forward secrecy. Le relais peut voir types, balises, clés de connexion et horaires. La clé d’identité principale ne doit pas servir à une connexion NWC. [NWC — NIP-47: Core protocol] [Nostr — NIP-44: Encrypted payloads]
Les requêtes et réponses NWC sont éphémères. Un relais indisponible ou un service hors ligne peut perdre le message ; seule la réponse d’un paiement déjà terminé peut aussi manquer. Après un timeout, vérifiez d’abord via lookup_invoice ou le portefeuille. Le silence ne prouve pas l’échec et une nouvelle requête n’est pas automatiquement un nouvel essai sans risque. [NWC — NIP-47: Core protocol]
Le service peut limiter méthodes, budget ou durée et révoquer la clé de connexion. Il doit imposer ces limites lui-même, pas seulement via l’interface cliente. Supprimer une connexion dans l’application peut laisser l’autorisation active côté portefeuille. Révoquer bloque les usages futurs sans annuler un paiement terminé. [NWC — NIP-47: Core protocol]
Pour une vision complète, lisez aussi Nostr, Lightning Network, BOLT 11, Portefeuille, Clé privée, Satoshi. Cette entrée est également citée par Nostr, BOLT 11.