Aller au contenu
buybitcoinsmart

Glossaire / Lightning et couche 2

Facture BOLT11

Aussi appelé facture Lightning, BOLT 11.

Qu'est-ce qu'une facture BOLT11 ?
Une facture BOLT11 est la longue chaîne commençant par lnbc qu'un portefeuille Lightning produit pour demander un paiement, et qui encode le montant, un hachage de paiement, une expiration et une signature.

Chaque paiement Lightning commence par l'un de ces éléments. La facture engage un hachage de paiement de 256 bits que seul le destinataire peut déverrouiller, et elle expire au bout d'une heure sauf indication contraire de l'émetteur, ce qui explique qu'une capture d'écran d'un ancien code QR soit inutile. La payer est sûr en ce sens que les fonds atteignent soit le nœud nommé, soit vous reviennent.

Comment cela fonctionne

Une facture BOLT11 est une chaîne bech32 avec un préfixe qui nomme le réseau et un corps composé de champs étiquetés.

Le préfixe, appelé partie lisible par l'humain, est lnbc sur le mainnet, lntb sur le testnet, lntbs sur le signet et lnbcrt sur le regtest. Juste après vient le montant, écrit sous forme d'un nombre suivi d'une lettre multiplicateur : m pour les millièmes de bitcoin, u pour les millionièmes, n pour les milliardièmes et p pour les billionièmes. Ainsi lnbc2500u demande 0,0025 bitcoin. Omettre complètement le montant produit une facture ouverte que le payeur remplit.

Le corps est une suite de champs étiquetés, chacun composé d'une étiquette d'un seul caractère, d'une longueur et d'une valeur. Deux sont obligatoires : le hachage de paiement, étiquette p, 256 bits écrits sous forme de 52 caractères bech32, et le secret de paiement, étiquette s, un autre groupe de 52 caractères que le payeur doit renvoyer dans la charge utile finale en oignon. Le BOLT 11 demande à celui qui écrit une facture d'inclure exactement un exemplaire de chacun, et à celui qui la lit de faire échouer le paiement sans autre forme de procès lorsqu'aucun champ s valide n'est présent. Viennent ensuite les champs optionnels : une description ou, pour les descriptions longues, un hachage de la description ; une expiration, fixée par défaut à 3600 secondes ; un delta d'expiration CLTV final minimum, fixé par défaut à 18 blocs, qui est la marge de sécurité que le destinataire veut sur le dernier saut ; un identifiant de nœud du bénéficiaire ; une adresse on-chain de repli ; et des indications de routage qui disent au payeur comment atteindre un nœud dont les canaux ne sont pas annoncés.

L'ensemble est signé. La signature fait 520 bits, une valeur de 64 octets plus un octet de récupération, ce qui permet à un portefeuille de déduire la destination du paiement à partir de la facture même lorsqu'aucun champ d'identifiant de nœud n'est présent. Une somme de contrôle bech32 de six caractères figure à la fin, de sorte qu'un caractère mal saisi est détecté plutôt que d'envoyer des fonds dans le vide.

Le hachage de paiement est le mécanisme qui fait d'une facture autre chose qu'un fichier texte. Le destinataire génère une préimage aléatoire, la hache, et place le hachage dans la facture. Chaque saut le long de la route verrouille le montant qu'il transmet sur ce même hachage, et seule la révélation de la préimage libère les fonds. Un paiement réglé laisse donc le payeur en possession d'une préimage dont le hachage correspond à la facture, ce qui constitue un reçu cryptographique qu'aucun commerçant ne peut raisonnablement nier.

Pourquoi cela compte quand vous achetez du bitcoin

Une facture est le lieu de plusieurs erreurs évitables lorsque vous retirez depuis une plateforme d'échange.

La première est l'expiration. Les flux de retrait des plateformes d'échange peuvent prendre plusieurs minutes à être traités, et une facture générée au début d'un flux lent peut être morte au moment d'être payée. Si un retrait Lightning échoue sans raison évidente, régénérez la facture dans votre portefeuille avant de supposer que la plateforme d'échange est en panne. La valeur par défaut est d'une heure, mais les portefeuilles qui attendent des paiements rapides la fixent souvent à dix ou quinze minutes.

La deuxième est le montant. Une facture qui contient un montant ne peut être payée que pour ce montant, ce qui est exactement ce que vous voulez, car cela écarte la possibilité de taper un zéro de trop. Une facture sans montant, parfois appelée facture ouverte ou facture à montant nul, est pratique pour les dons et dangereuse dans un flux de retrait. Préférez la version où le nombre est inscrit d'avance.

La troisième est la réutilisation. Une facture BOLT11 est à usage unique par conception. En publier une sur une page de dons signifie que le paiement du deuxième donateur échoue ou, sur un récepteur mal construit, paie à nouveau le hachage du premier donateur. C'est précisément le problème que les offres BOLT12 ont été conçues pour résoudre, ce qui explique que cette spécification ait été fusionnée dans le standard Lightning en septembre 2024, le premier nouveau BOLT depuis 2017. Tant que votre portefeuille et votre contrepartie ne prennent pas tous deux en charge les offres, une adresse Lightning est le moyen pratique de publier une destination réutilisable.

Enfin, vérifiez que la plateforme d'échange prend réellement en charge Lightning avant de compter sur lui. Strike, dont ce site publie l'avis, prend en charge les retraits à la fois via Lightning et on-chain. Beaucoup de plateformes de notre comparatif de plateformes d'échange ne le font pas, et sur celles-là, le moyen le moins cher de déplacer de petits montants est de ne pas les déplacer souvent.

Lire une facture champ par champ

Décomposez une facture courte et elle cesse de ressembler à du bruit.

Une chaîne commençant par lnbc1500n vous dit deux choses avant même que vous ne décodiez quoi que ce soit : c'est une facture du mainnet, et elle demande 1500 nanobitcoin, soit 0,0000015 bitcoin, ou 150 satoshis. Ce qui suit est un horodatage, puis les champs étiquetés. Un champ d porte une description courte telle que « table 4 » ; un champ x de 600 porterait l'expiration à dix minutes au lieu de l'heure par défaut ; un champ c remplacerait le delta CLTV final de 18 blocs si le destinataire veut une marge de sécurité plus grande.

Si le nœud du destinataire n'a pas de canaux publics, un champ r porte une indication de routage : l'identifiant de nœud d'un pair bien connecté, l'identifiant court du canal à utiliser, ainsi que les frais et le delta de ce pair. Sans cela, votre portefeuille examinerait le graphe public, ne verrait aucun chemin et abandonnerait. C'est pourquoi les factures issues de portefeuilles mobiles sont souvent sensiblement plus longues que celles issues de grands nœuds publics.

Facture BOLT11 vs URI Bitcoin

Une facture BOLT11 est une demande de paiement Lightning ; un URI Bitcoin est une demande de paiement on-chain. La forme URI, bitcoin : suivie d'une adresse et de paramètres facultatifs, pointe vers la blockchain et peut être payée par n'importe quel portefeuille, autant de fois que voulu, pour n'importe quel montant. Une facture pointe vers un nœud, expire et est destinée à être payée une seule fois. Les portefeuilles affichent de plus en plus un code QR unifié qui porte les deux, de sorte que le payeur puisse choisir, mais les deux charges utiles sont des standards distincts avec des modes de défaillance distincts.

Facture BOLT11 vs adresse Lightning

Une facture BOLT11 est la demande de paiement elle-même ; une adresse Lightning est un moyen d'aller en chercher une. Saisir une adresse comme you@example.com dans un portefeuille déclenche une requête HTTPS vers ce domaine, qui répond par une facture BOLT11 fraîchement générée pour le montant que vous avez choisi. L'adresse est réutilisable et lisible par l'humain parce que ce n'est pas du tout une demande de paiement : c'est un pointeur vers un serveur qui en produira une à la demande.

À ne pas confondre avec

Questions fréquentes

Pourquoi ma facture Lightning a-t-elle expiré si vite ?

Parce que l'émetteur a fixé une expiration courte. Par défaut, le BOLT11 prévoit 3600 secondes, soit une heure, mais les portefeuilles et les terminaux de point de vente la raccourcissent couramment à dix ou quinze minutes pour que le prix annoncé ne puisse pas varier. Générez une nouvelle facture et payez à nouveau.

Puis-je payer deux fois la même facture Lightning ?

Non. Chaque facture correspond à un seul hachage de paiement, et une fois que le destinataire révèle la préimage, ce hachage est dépensé. Un second paiement vers la même facture échouera normalement, c'est pourquoi les destinations réutilisables utilisent plutôt une adresse Lightning ou une offre BOLT12.

Que signifie le montant dans lnbc2500u ?

Il signifie 2500 millionièmes de bitcoin, soit 0,0025 BTC. Les montants BOLT11 utilisent des lettres multiplicatrices après le nombre : m pour les millièmes de bitcoin, u pour les millionièmes, n pour les milliardièmes et p pour les billionièmes.

Est-il sûr de payer une facture envoyée par un inconnu ?

Plus sûr qu'un envoi on-chain, car soit le paiement atteint le nœud indiqué dans la facture, soit il échoue et est remboursé automatiquement. Ce dont cela ne protège pas, c'est de payer la mauvaise personne, alors vérifiez la description et le montant affichés par votre portefeuille avant de confirmer.

À lire ensuite

Termes associés

Plus de termes : Lightning et couche 2

Lire cette page en anglais