Blockchain/Niveau IV · Le protocole en profondeur/4.1 Script/Leçon 5
Hashlocks et HTLC
Le secret qui déverrouille tout, et le minuteur qui évite que tout soit perdu à jamais
MatérielTout éditeur de texte ou ligne de commande prenant en charge SHA-256Un explorateur de blocs (par ex. mempool.space)Le livre blanc du Lightning Network, de Poon et Dryja
Curiosité
- Comment un paiement peut-il être verrouillé par un secret qu’une seule personne connaît, sans que celle-ci ait à faire confiance à qui que ce soit ?
- Si révéler le secret pour réclamer votre propre argent l’expose à tout le réseau, qu’est-ce qui empêche les autres de le voler en premier ?
- Pourquoi chaque saut d’un chemin de paiement à plusieurs nœuds a-t-il besoin d’une échéance légèrement différente ?
Explorer
- Un hashlock est une condition Bitcoin Script qui empêche la dépense tant qu’une donnée précise, la préimage, n’a pas été révélée. Les pièces sont verrouillées derrière un hash, généralement fourni par la personne qui détient le secret. La propriété essentielle est la suivante : si un participant révèle la préimage pour réclamer ses fonds, il la révèle à quiconque voit cette réclamation : on-chain, à tout le monde ; dans un canal Lightning, à la contrepartie.
- Cette révélation publique permet aux autres parties détenant des sorties verrouillées par le même hash de les dépenser à leur tour. Dans le Lightning Network, cela signifie que lorsque le destinataire final (Charlie) révèle le secret pour réclamer le paiement auprès de Bob, ce même secret déverrouille la sortie d’Alice verrouillée au profit de Bob. Ce mécanisme assure l’atomicité : soit tout le monde est payé, soit personne ne l’est.
- Un hashlock pur présente toutefois un défaut : si Charlie disparaît et ne révèle jamais la préimage, les fonds restent bloqués à jamais. L’ajout d’un verrou temporel crée un contrat à verrouillage par hash et temporel (hash time-locked contract, HTLC). Pour le dernier saut, proposé par Bob, le script stipule désormais : « Charlie peut réclamer ces pièces en révélant la préimage avant l’échéance T, OU Bob peut les récupérer après T. »
- Cette logique à deux branches garantit un fonctionnement sans confiance. Si le paiement réussit, Charlie révèle le secret dans le délai imparti, ce qui déclenche une cascade de réclamations de Bob jusqu’à Alice. Si le paiement échoue ou si Charlie se déconnecte, chaque HTLC expire et celui qui l’a proposé (Bob vis-à-vis de Charlie, Alice vis-à-vis de Bob) récupère les fonds via la branche d’expiration du script.
- Ce protocole d’équité est ce qui rend possible le routage multi-sauts. Chaque HTLC du chemin a un délai d’expiration légèrement plus long que celui du HTLC que son détenteur propose au nœud suivant en aval. Cet écart protège chaque nœud intermédiaire : si son pair en aval réclame les fonds avec la préimage au dernier moment, le nœud intermédiaire a encore le temps d’utiliser cette préimage en amont avant que son propre HTLC entrant ne puisse être remboursé.
- Si les énigmes Script peuvent être complexes, les contrats réels comme les HTLC incluent toujours des vérifications de signature en plus des hashlocks et des verrous temporels. Cela lie la solution à des parties précises et empêche le front-running par les mineurs, où un mineur pourrait repérer une préimage valide dans le mempool et rediriger le paiement vers lui-même avant sa confirmation.
Faits clés
- Un hashlock empêche la dépense tant qu’une donnée précise (la préimage) n’a pas été révélée publiquement.
- Dès qu’un hashlock utilisant un hash donné est ouvert, la préimage révélée permet de dépenser tous les autres hashlocks utilisant ce même hash.
- Un HTLC combine hashlocks et verrous temporels pour exiger que le destinataire dépense avant une échéance, sinon permettre à l’expéditeur d’être remboursé.
- Les HTLC sont utilisés dans les transactions d’engagement du Lightning Network pour permettre un routage multi-sauts sans confiance et atomique.
- Script fournit OP_SHA256 et OP_HASH160 pour les hashlocks ; Lightning utilise des hashs de paiement SHA-256.
- En 2013, Tier Nolan a proposé des échanges atomiques inter-chaînes reposant sur ce mécanisme de hashlock.
Exercice neuf, six, trois, un
9RassemblerListez 9 scénarios, concrets ou cryptographiques, dans lesquels une action révèle un secret qui déverrouille plusieurs autres actions (par exemple, ouvrir un coffre-fort, publier une preuve de travail).
6RegrouperRegroupez les 9 en 6 selon la manière dont le secret est protégé : propriétaire unique, plusieurs propriétaires, limité dans le temps, limité dans l’espace, public mais coûteux, ou irréversible.
3DistillerRéduisez les 6 à 3 mécanismes fondamentaux qui permettent une coordination sans confiance entre des parties qui ne se connaissent pas.
1CristalliserRédigez 1 phrase expliquant pourquoi un hash est un engagement et une préimage une clé, et comment un minuteur les rend sûrs.
Vérification des faits
Les dates, les chiffres et les affirmations ont été vérifiés à l’aide des sources publiées listées ci-dessous.