Aller au contenu
buybitcoinsmart

Glossaire / Lightning et couche 2

Clé de révocation

Qu'est-ce qu'une clé de révocation ?
Une clé de révocation est la clé publique aveuglée qui verrouille les sorties différées et HTLC d'une transaction d'engagement Lightning, sorties que votre partenaire de canal peut dépenser dès que vous révélez le secret qui retire cet état.

Chaque transaction d'engagement Lightning porte une branche de révocation que personne ne peut signer tant qu'un des deux camps n'a pas révélé un secret par engagement. Le BOLT 3 numérote ces secrets à partir de 281 474 976 710 655 en décroissant, et le destinataire peut conserver chacun d'eux dans un tableau de 49 emplacements. Publier un état que vous avez déjà révoqué permet à votre pair de prendre la totalité du solde du canal, et c'est pourquoi une phrase de récupération ne peut pas sauvegarder Lightning.

Comment cela fonctionne

Une clé de révocation est délibérément construite de sorte qu'aucun des deux camps d'un canal ne puisse calculer seul sa moitié privée.

Quand votre nœud prépare un nouvel engagement pour votre pair, il prend son propre revocation_basepoint et le per_commitment_point de votre pair, multiplie chacun des deux par le SHA256 du couple concaténé avec ce point écrit en premier, et additionne les résultats. Le BOLT 3 énonce la propriété en une ligne : la construction garantit que ni le nœud qui fournit le basepoint ni le nœud qui fournit le point ne peuvent connaître la clé privée sans le secret de l'autre nœud. La clé privée n'existe nulle part tant que la seconde moitié n'est pas arrivée.

Cette arrivée est un message. Une fois que votre pair a vérifié votre signature sur son nouvel engagement, il répond avec revoke_and_ack, de type 133, portant un per_commitment_secret de 32 octets pour l'état qu'il vient de retirer plus le point de son prochain état. À partir de là, vous pouvez calculer la revocationprivkey de l'ancien état, et votre pair ne peut plus la reprendre.

La clé apparaît dans deux types de sortie. Une sortie to_local est un P2WSH dont le script témoin se lit OP_IF, la revocationpubkey, OP_ELSE, to_self_delay, OP_CHECKSEQUENCEVERIFY, OP_DROP, la local_delayedpubkey, OP_ENDIF, OP_CHECKSIG : le propriétaire doit attendre to_self_delay blocs, tandis qu'un détenteur de la clé de révocation dépense immédiatement avec la pile de témoins d'une signature et d'un 1. Chaque sortie HTLC porte la même clé hachée jusqu'à 20 octets avec RIPEMD160 sur SHA256, et le BOLT 5 exige que le nœud qui punit balaie également les transactions HTLC-success et HTLC-timeout du tricheur avec cette clé.

Le stockage est là où la conception devient astucieuse. Un canal peut consumer 281 474 976 710 655 secrets par engagement, un par état, tous générés à partir d'une seule valeur de départ de 256 bits impossible à deviner en inversant des bits et en hachant, avec l'index qui décroît plutôt que de croître. Parce qu'un secret dont l'index se termine par des zéros dérive tous les secrets à partir de là jusqu'à la prochaine frontière de puissance de deux, le nœud destinataire ne conserve que 49 paires valeur et index et reconstruit le reste à la demande. Le BOLT 3 demande aussi au destinataire de recalculer ses secrets antérieurs à partir de chaque nouvelle arrivée, comme contrôle, de sorte qu'un pair qui a discrètement changé de valeur de départ est pris sur le fait plutôt qu'au moment de la fermeture.

Pourquoi cela compte quand vous achetez du bitcoin

Les clés de révocation sont la raison pour laquelle un solde Lightning ne se comporte pas du tout comme les bitcoins on-chain qu'une plateforme d'échange vous envoie.

Sur les 41 portefeuilles examinés sur ce site, ceux qui vous placent sur Lightning traitent le problème des états de manières visiblement différentes, et cette division explique leurs notes. Phoenix exécute un véritable nœud autonome sur le téléphone derrière une phrase de récupération BIP39 standard sur un chemin BIP84, et notre avis précise que la phrase de récupération est le recours on-chain plutôt que le canal : si ACINQ disparaissait, vous forceriez la fermeture, attendriez environ 720 blocs, soit environ cinq jours, et récupéreriez on-chain avec Electrum. Muun refuse entièrement la liste de mots et vous remet un fichier Emergency Kit contenant les deux clés multisig plus les descripteurs de sortie, au motif, publié par Muun, qu' une phrase mnémonique sauvegarde des clés alors que ses bitcoins vivent dans des scripts qu'un portefeuille doit aussi connaître. Le mode dépositaire par défaut de Wallet of Satoshi supprime le problème en vous en retirant : l'entreprise détient chaque secret, et c'est pourquoi il porte un statut de mise en garde et une note de 2,7 ici, et pourquoi il pouvait cesser de servir les clients américains le 23 novembre 2023 et retirer le service dans toute l'Union européenne au tournant de 2026, laissant aux détenteurs de l'UE le mode en auto-conservation à la place. BlueWallet est en auto-conservation on-chain et noté 4,2 pour cela, tandis qu'un solde Lightning y réside dans un compte LNDHub que votre phrase de récupération on-chain ne couvre pas.

Le protocole vous offre tout de même un filet de sécurité, et il vaut la peine de le connaître précisément. Si vous vous reconnectez en portant un état périmé, channel_reestablish l'expose : le message de votre pair nomme un numéro de révocation supérieur à ce que vous attendiez et renvoie le dernier per_commitment_secret que vous avez envoyé, ce qui prouve que l'affirmation est honnête. Le BOLT 2 dit alors que vous ne devez pas diffuser votre propre transaction d'engagement et que vous devriez envoyer une erreur demandant à votre pair de faire échouer le canal à la place. C'est une règle que suit un logiciel honnête, non une garantie de consensus, et elle ne vous protège que tant que vous vous abstenez de publier vous-même l'état périmé. Le BOLT 5 énonce le devoir correspondant en termes clairs : un nœud ne doit pas diffuser une transaction d'engagement pour laquelle il a déjà exposé le per_commitment_secret.

En pratique, le risque vit à l'intérieur de votre portefeuille de réception et nulle part ailleurs. Acheter sur l'une des 63 plateformes d'échange suivies ici et retirer via Lightning ne vous y expose pas, car les canaux de la plateforme d'échange sont le problème de la plateforme d'échange. Votre exposition commence dès que les bitcoins arrivent là où vous êtes censé exploiter le nœud.

Le vecteur de test du BOLT 3, clé par clé

Le BOLT 3 fournit une dérivation détaillée dans son annexe, et sa lecture est le moyen le plus rapide de voir que les deux moitiés d'une clé de révocation sont toutes deux indispensables.

Partez d'un revocation_basepoint de 036d6caac248af96f6afa7f904f550253a0f3ef3f5aa2fe6838a95b216691468e2 et d'un per_commitment_point de 025f7117a78150fe2ef97db7cfc83bd57b2e2c0d0dd25eaf467a4a1c2a45ce1486. Hacher le basepoint en premier donne efbf7ba5a074276701798376950a64a90f698997cce0dff4d24a6d2785d20963, et hacher le point en premier donne cbcdd70fcfad15ea8e9e5c5a12365cf00912504f08ce01593689dd426bca9ff0. Multipliez chaque point par le hachage qui le met en tête, additionnez les deux résultats, et vous obtenez la revocationpubkey 02916e326636d19c33f13e8c0c3a03dd157f332f3e99c317c141dd865eb01f8ff0.

Rien dans cette clé publique ne divulgue la clé privée. Elle n'apparaît qu'une fois que le pair révèle le per_commitment_secret correspondant, 1f1e1d1c1b1a191817161514131211100f0e0d0c0b0a09080706050403020100, moment où les deux mêmes hachages se combinent avec ce secret et le secret du basepoint pour donner la revocationprivkey d09ffff62ddb2297ab000cc85bcb4283fdeb6aa052affbc9dddcf33b61078110. Une mise à jour de canal, une révélation, et une clé publique qui n'était qu'un ornement un instant plus tôt devient une créance sur la totalité de la sortie.

Clé de révocation vs phrase de récupération

Une clé de révocation et une phrase de récupération sont toutes deux des secrets dont votre argent dépend, et une seule des deux peut s'écrire sur papier.

Une phrase de récupération est statique. Douze ou vingt-quatre mots fixent chaque clé que le portefeuille dérivera jamais, des copies supplémentaires vous rendent plus sûr, et une vieille copie vaut exactement autant qu'une fraîche. Les secrets de révocation inversent ces trois propriétés. Ils arrivent un par mise à jour de canal, dans revoke_and_ack, depuis l'autre camp ; les copies qui comptent sont les révélations de votre pair, que votre propre phrase de récupération ne peut pas régénérer ; et une vieille copie de l'état du canal n'est pas une sauvegarde mais une charge, car agir sur elle est indiscernable d'une triche. Le schéma de stockage à 49 emplacements existe précisément parce que ces secrets changent bien trop souvent pour être notés.

La conséquence pratique est l'avertissement que répète chaque portefeuille Lightning. Restaurez un portefeuille Lightning à partir des seuls mots et commencez à dépenser, et vous avez republié un état que vous avez déjà révoqué, ce que le BOLT 5 interdit catégoriquement et ce que la clé de révocation de votre partenaire de canal attendait.

À ne pas confondre avec

Questions fréquentes

Ma phrase de récupération sauvegarde-t-elle mes canaux Lightning ?

Non, une phrase de récupération restaure les clés et les adresses, mais pas les secrets par engagement que votre partenaire de canal vous a envoyés, que le BOLT 3 demande au nœud récepteur de stocker à leur arrivée, si bien qu'un portefeuille restauré à partir des seuls mots présente une vision périmée de chaque canal. Muun évite cette confusion en sauvegardant un fichier Emergency Kit contenant à la fois les clés et les descripteurs de sortie plutôt qu'une liste de mots.

Que se passe-t-il si je diffuse par accident un ancien état de canal Lightning ?

Votre partenaire de canal peut prendre la totalité du solde du canal, car le secret par engagement que vous avez transmis lorsque cet état a été retiré lui permet de signer la branche de révocation de chaque sortie en une seule fois, sans aucun délai d'attente à observer.

Mon partenaire de canal peut-il utiliser une clé de révocation contre moi si je n'ai rien fait de mal ?

Non, car la clé privée de révocation de votre état actuel n'existe pas encore. Elle nécessite un secret par engagement que vous n'avez pas divulgué, et le BOLT 3 construit la clé à partir d'éléments fournis par les deux parties, si bien qu'aucune ne peut la dériver seule.

À lire ensuite

Termes associés

Plus de termes : Lightning et couche 2

Lire cette page en anglais