Glossaire / Lightning et couche 2
Expiration de facture
- Qu'est-ce que l'expiration de facture ?
- L'expiration de facture est le champ x d'une demande de paiement BOLT11, un nombre de secondes compté depuis l'horodatage de la facture elle-même, après lequel le payeur et le bénéficiaire devraient tous deux la refuser.
Chaque facture Lightning porte une échéance, et le compte à rebours commence au moment où la facture a été signée, non au moment où elle vous est parvenue. En l'absence de champ x, la valeur par défaut est de 3600 secondes, soit une heure. Une facture restée la majeure partie de cette heure dans un fil de discussion peut donc échouer quelques minutes après qu'elle vous est parvenue, sans raison visible.
Comment cela fonctionne
L'expiration de facture circule comme champ étiqueté de type 6, écrit sous la lettre x, et contenant un nombre de secondes en big-endian.
Une chaîne BOLT11 commence par un horodatage de 35 bits comptant les secondes depuis le 1er janvier 1970 UTC, puis les champs étiquetés, puis une signature. L'expiration est l'un de ces champs et elle est relative : l'échéance est cet horodatage plus l'expiration, si bien que rien dans la facture n'indique une heure lisible. BOLT11 demande à un payeur de ne pas tenter un paiement une fois la somme dépassée, et demande au bénéficiaire de ne pas l'accepter non plus.
Ces deux consignes sont un SHOULD et non un MUST, donc une facture expirée n'est pas morte sur le plan cryptographique. Le hash de paiement fonctionne toujours ; ce qui arrête le paiement, c'est la politique appliquée aux deux extrémités, non un verrou. Votre portefeuille refuse d'essayer, et un nœud qui a jeté la préimage ne pourrait de toute façon pas régler.
La valeur est répartie en groupes de cinq bits et doit utiliser la longueur la plus courte qui convienne, sans groupes de zéros en tête. Les exemples de la spécification montrent l'étendue : 60 secondes occupent deux groupes, écrits pu, et 604800 secondes en occupent quatre, écrits jw5q. Un encodeur qui complète le champ n'est pas seulement négligent : les lecteurs doivent traiter comme invalide une facture dont le champ x, c ou 9 n'est pas minimal.
Personne ne peut prolonger une facture une fois émise. La signature couvre le préfixe lisible par l'homme et toute la partie de données, donc modifier un seul caractère de l'expiration la casse. Un marchand qui veut vous accorder plus de temps doit émettre une nouvelle demande et la signer à nouveau.
La valeur par défaut d'une heure n'a pas été choisie au hasard : la justification de la spécification indique qu'elle laisse le temps de payer on-chain à la place, via l'adresse de repli que le champ f peut porter.
Où vous la voyez
L'expiration de facture apparaît sous forme d'anneau de compte à rebours autour d'un code QR, sous forme de ligne intitulée expiry dans n'importe quel décodeur, et sous forme de refus qu'un portefeuille oppose lorsque vous collez un élément périmé.
Les vecteurs de test de la spécification montrent les deux extrémités de l'étendue. Une facture de 2500 micro-bitcoin décrite comme "1 cup coffee" fixe l'expiration à 60 secondes, car elle fige un prix de trois dollars au comptoir. Une facture de la Blockstream Store, pour 88,85 USD de marchandises incluant un Ledger Nano S, la fixe à 604800 secondes, soit sept jours, car une confirmation de commande est une facture et non un comptoir.
L'endroit où la facture est créée détermine qui a choisi le nombre. Phoenix, dont ce site publie un avis, fait tourner un vrai nœud Lightning sur le téléphone plutôt qu'un compte sur un serveur, donc l'expiration d'une demande de réception est le réglage de son propre nœud. Avec une application dépositaire, le chiffre vient de l'exploitant, et décoder l'une de ses factures est généralement le seul moyen de le connaître.
Expiration de facture vs delta d'expiration CLTV
L'expiration de facture et le delta d'expiration CLTV sont deux horloges d'un paiement Lightning, et elles avancent dans des unités différentes sur deux moitiés du problème.
L'expiration de facture est un temps réel en secondes compté depuis l'horodatage de la facture, et elle décide si le paiement peut être tenté du tout. Un delta d'expiration CLTV se mesure en blocs, et le champ c de la même facture porte le minimum du destinataire pour le dernier saut, que le payeur doit traiter comme au moins 18 blocs lorsque le champ est absent. L'une vous dit s'il faut commencer ; l'autre vous dit combien de temps votre argent peut rester bloqué dans un HTLC une fois que vous avez commencé.