Aller au contenu
buybitcoinsmart

Glossaire / Lightning et couche 2

LNURL

Qu'est-ce que LNURL ?
LNURL est une famille de petits protocoles web qui permettent à un portefeuille Lightning de récupérer une facture fraîche, un retrait ou un défi de connexion auprès d'un serveur en suivant un lien encodé.

Les factures Lightning expirent et ne peuvent être payées qu'une seule fois, ce qui les rend peu pratiques à imprimer ou à publier. LNURL y remédie en plaçant une requête HTTPS devant la facture : votre portefeuille demande à un serveur de lui fournir la demande de paiement au moment où vous voulez payer. Les spécifications vivent en dehors des BOLT, numérotées LUD-01 et au-delà.

Comment cela fonctionne

LNURL transforme un lien statique en une conversation en direct entre un portefeuille et un serveur.

Le lien lui-même est toute l'astuce. Dans sa forme d'origine, LUD-01, une URL HTTPS est encodée en bech32 avec un préfixe lnurl, ce qui produit un bloc qui survit à une impression en QR code ou à une saisie dans une fenêtre de discussion. La forme plus récente LUD-17 abandonne l'encodage et utilise de simples préfixes de schéma tels que lnurlp : devant une URL ordinaire, ce qui est plus court et plus facile à déboguer. Dans les deux cas, le portefeuille le décode, effectue une requête GET et reçoit du JSON qui lui indique de quel type d'interaction il s'agit.

Le champ tag de ce JSON décide de tout ce qui suit. LUD-06 définit payRequest, le flux de paiement : le serveur renvoie une URL de callback ainsi que minSendable et maxSendable, tous deux en millisatoshis, et une chaîne de métadonnées que le portefeuille affiche. Vous choisissez un montant, le portefeuille le renvoie, et le serveur retourne une facture BOLT11 fraîchement émise pour exactement cette somme. LUD-03 définit withdrawRequest, qui va dans l'autre sens : le serveur propose de l'argent et le portefeuille fournit une facture pour le recevoir. LUD-02 demande un canal à un pair. LUD-04 définit auth, où le portefeuille signe un défi avec une clé dérivée par domaine, ce qui permet à certains sites Lightning de vous connecter sans mot de passe.

La propriété de sécurité qu'il faut comprendre est étroite. LNURL garantit que la facture provient du domaine indiqué dans le lien et que son montant correspond à celui que vous avez approuvé, car le portefeuille vérifie la facture renvoyée avant de payer. Il ne garantit rien sur qui contrôle ce domaine. Scanner un code LNURL collé par-dessus un vrai sur un étal de marché paie le serveur de l'attaquant, et le paiement aboutit exactement comme prévu.

Où le voit-on

La plupart des gens rencontrent LNURL sans jamais voir le mot.

Les pages de pourboires et de dons utilisent LNURL-pay derrière un QR code, ce qui explique pourquoi le même code imprimé fonctionne pour cent clients différents avec cent montants différents. Les distributions lors de conférences bitcoin et les cartes de robinet utilisent LNURL-withdraw : vous scannez, votre portefeuille génère discrètement une facture, et les sats arrivent sans facture visible. Certains portefeuilles Lightning et services web utilisent LNURL-auth comme seul système de connexion.

Le déploiement le plus important est indirect. Une adresse Lightning, de la forme utilisateur@domaine, est définie dans LUD-16 et repose directement sur LNURL-pay : l'adresse est traduite en un chemin HTTPS bien connu et, à partir de là, le flux est un LUD-06 ordinaire. Si votre portefeuille prend en charge les adresses Lightning, il parle déjà LNURL.

La principale réserve est la disponibilité. Comme il y a un serveur web au milieu, un code LNURL n'est fiable que dans la mesure où ce serveur et son certificat TLS le sont. Une facture BOLT11, une fois générée, peut être payée avec le serveur hors ligne ; un lien LNURL ne le peut pas.

LNURL vs facture BOLT11

LNURL est un moyen d'obtenir une demande de paiement ; une facture BOLT11 est la demande de paiement. Cette seule différence explique leurs propriétés. Une facture est autonome, signée par le nœud du destinataire, valable pendant une durée déterminée et payable une seule fois. Un lien LNURL ne contient ni montant, ni hash de paiement, ni signature, reste valable indéfiniment et fonctionne pour un nombre illimité de payeurs, car chacun déclenche une nouvelle facture. Imprimez une facture et elle meurt dans l'heure. Imprimez un code LNURL et il continue de fonctionner jusqu'à ce que le domaine cesse de fonctionner.

À ne pas confondre avec

Questions fréquentes

LNURL fait-il partie de la spécification Lightning ?

Non. Les BOLT définissent le protocole Lightning lui-même, tandis que LNURL est un ensemble distinct de documents numérotés LUD-01 et au-delà, maintenus dans leur propre dépôt. La prise en charge par les portefeuilles est volontaire et variable.

Scanner un code LNURL est-il sûr ?

Il est à l'abri de la falsification, mais pas de la substitution. Votre portefeuille vérifie que la facture provient du domaine indiqué dans le lien et correspond au montant que vous avez approuvé, mais un code physiquement remplacé par celui d'un attaquant paiera l'attaquant exactement comme prévu.

Termes associés

Plus de termes : Lightning et couche 2

Lire cette page en anglais