Glossaire / Lightning et couche 2
HTLC
Aussi appelé HTLC, Hash Time-Locked Contract.
- Qu'est-ce qu'un HTLC ?
- Un HTLC est un paiement qui n'est versé qu'en échange d'un secret et qui rembourse l'expéditeur si ce secret n'arrive jamais avant une hauteur de bloc convenue entre les deux parties.
Les contrats à hash verrouillés dans le temps sont ce qui rend sûr le transfert d'un paiement Lightning à plusieurs sauts. Chaque saut verrouille son argent sur le même hash SHA-256, et un canal peut en transporter au plus 483 dans chaque direction à la fois. Pour vous, c'est pourquoi un paiement Lightning est réglé complètement ou échoue complètement, et ne laisse jamais de l'argent bloqué à mi-chemin sur la route.
Comment cela fonctionne
Deux conditions protègent l'argent dans un HTLC, et exactement l'une des deux finira par être vraie.
Le destinataire invente un secret aléatoire de 32 octets, appelé préimage, le hache avec SHA-256 et place le résultat dans la facture. Chaque nœud de la route offre alors au nœud suivant une sortie dépensable de deux façons : immédiatement par quiconque peut montrer la préimage, ou, après une hauteur de bloc convenue, par le nœud qui l'a offerte. Comme tous les sauts partagent un même hash, au moment où le destinataire réclame son argent en révélant la préimage, chaque saut précédent l'apprend et réclame le sien. Personne ne se retrouve jamais à avoir payé en amont sans être remboursé, propriété sur laquelle Lightning est bâti.
Les hauteurs de bloc diminuent le long de la route. Chaque canal annonce un cltv_expiry_delta, et le payeur empile ces deltas pour que le saut le plus proche du destinataire expire en premier et que chaque saut en amont dispose d'une marge de sécurité. Le BOLT 11 demande à un payeur de prévoir au moins 18 blocs pour le dernier saut lorsque la facture ne dit pas le contraire. Ce délai accumulé est le coût réel d'un HTLC : si un paiement se bloque, l'argent n'est pas perdu, mais il peut rester gelé pendant des heures le temps que les délais se dénouent.
On-chain, ces contrats deviennent de vraies transactions. Dans un canal anchor, une transaction de timeout de HTLC pèse 666 unités de poids et une transaction de succès de HTLC pèse 706, et une fermeture forcée avec plusieurs paiements en cours signifie diffuser l'une de ces transactions pour chacun d'eux. Les montants trop faibles pour valoir une sortie n'en reçoivent pas du tout ; ils sont ajoutés aux frais de minage, c'est pourquoi un très petit paiement peut disparaître dans les frais si un canal se ferme au mauvais moment.
Où le voit-on
Vous voyez des HTLC dans les secondes entre le moment où vous appuyez sur payer et le moment où la facture passe au vert, et vous les revoyez dans le calcul des frais d'un échange on-chain.
Les services qui privilégient Lightning, comme Strike, déplacent l'argent de cette façon à chaque paiement, et les nœuds de routage Lightning affichent le nombre de HTLC en attente comme indicateur opérationnel, car un canal encombré de contrats bloqués ne peut rien transférer. La même construction fonctionne en dehors de Lightning : un swap sous-marin échange un HTLC on-chain contre un paiement Lightning verrouillé sur le hash identique, et un swap atomique inter-chaînes fait de même entre deux registres. Dans chaque cas, le hash est l'arbitre partagé et le délai est le remboursement.
Le plafond compte plus qu'il n'y paraît. Une transaction d'engagement doit rester une transaction bitcoin valide, donc le BOLT 2 interdit plus de 483 contrats acceptés par direction, chiffre ramené à 114 pour le nouveau format d'engagement sans frais. Les grands canaux de routage atteignent ce plafond pendant les périodes chargées, ce qui est une raison honnête pour laquelle un paiement échoue parfois et réussit trente secondes plus tard.
HTLC vs PTLC
Un HTLC utilise un seul hash pour toute la route, tandis qu'un PTLC donne à chaque saut un verrou différent dérivé d'un point de courbe elliptique. Cette seule différence est une faille de confidentialité : deux nœuds de routage détenus par le même opérateur, situés à des points différents de votre route, peuvent voir le même hash deux fois et relier votre paiement. Les HTLC sont ce sur quoi le réseau fonctionne réellement. Les PTLC sont le remplacement spécifié, et tant qu'ils ne sont pas déployés, partez du principe que tout grand opérateur de routage peut corréler les sauts qu'il transmet.