Visualisation d’un noeud BELEM sur le réseau Lightning Network. Voir en live sur https://lnmainnet.gaben.win

Lightning Network : Principes de fonctionnement

Un nouveau protocole Bitcoin pour des transferts ultra-rapides

Une transaction Bitcoin permet le transfert de bitcoins entre membres du réseau Bitcoin. Une transaction contient généralement le montant de bitcoins transférés, l’adresse du destinataire, et surtout la signature de l’émetteur autorisant la transaction. Son inscription dans le registre du Bitcoin (la blockchain) lui confère son caractère officiel.

En réalité, le protocole permet de signer des transactions plus complexes, aussi appelés Bitcoin scripts ou smart contracts. Les transactions spécifient l’adresse du ou des destinataires, mais également les preuves que celui-ci doit fournir pour disposer des bitcoins reçus.

Le Lightning Network (LN) est une extension du Bitcoin, c’est un réseau de noeuds Bitcoin concluant des contrats particuliers et dont le but est de permettre le transfert instantané de bitcoins entre ses participants. Le Lightning Network cherche à tirer profits des transactions complexes du Bitcoin en réduisant au minimum la nécessité de recourir à l’inscription en blockchain.

Jusqu’au déploiement du Lightning Network début 2018, il n’était en effet possible d’envoyer des bitcoins qu’en passant par la blockchain. Si le transfert direct par blockchain demeure aujourd’hui encore la voie la plus sûre, c’est aussi la plus lente et la plus coûteuse.

Le LN ouvre la possibilité d’échanges garantis ou dit autrement la possibilité de faire des chèques en Bitcoin. Ces chèques peuvent être encaissés sur la blockchain du Bitcoin avec une garantie de provision, on pourrait ainsi les assimiler à des chèques de banque pour lesquels on a la certitude que ce ne sont pas des chèques en bois. Une transaction Lightning n’a pas besoin d’être inscrite sur la blockchain du Bitcoin pour garantir son existence, sa validité et la solvabilité de son émetteur. Les frais de transactions et le temps d’exécution sont alors réduits au minimum.

Une transaction Lightning n’a pas besoin d’être inscrite sur la blockchain du Bitcoin pour garantir son existence, sa validité et la solvabilité de son émetteur

Principe général

Partons d’une transaction simple. Alice souhaite transférer des bitcoins à Bob, elle signe donc une transaction autorisant le transfert vers l’adresse de Bob. Pour une transaction Bitcoin classique, Alice doit la diffuser à travers le réseau du Bitcoin afin que celle-ci soit incluse dans la blockchain. Après un certain temps (dit de confirmation), Bob peut considérer que la transaction est inscrite de façon irrévocable dans la blockchain. Il possède alors pleinement les bitcoins envoyés par Alice.

Le Lightning Network cherche à donner à Bob le même niveau de garantie sans devoir recourir à l’inscription coûteuse et lente dans la blockchain.

Imaginons qu’Alice envoie directement sa transaction à Bob sans la diffuser dans le réseau. Celui-ci, vérifiant la validité de la transaction, pourrait se dire qu’il suffira de la diffuser quand il souhaitera lui-même dépenser les bitcoins. Le problème est qu’Alice peut entre temps diffuser une autre transaction envoyant ses bitcoins à Charlie. Lorsque Bob diffusera la transaction pourtant signée par Alice, elle sera alors rejetée par le réseau. C’est le fameux problème de la double dépense ou double spending. Pour contourner cette difficulté, Alice doit d’abord inscrire une transaction particulière dans la blockchain : un verrou avec une date d’expiration et des règles définies à l’avance.

Ainsi, l’idée fondatrice du LN est de verrouiller temporairement les bitcoins d’Alice dans un canal. Ce canal stipule que seul Bob peut recevoir les bitcoins verrouillés. Le verrou permet à Bob d’être sûr que les bitcoins envoyés par Alice ne pourront pas être transférés avant que Bob ne diffuse la transaction d’Alice. A partir de ce mécanisme de base, Joseph Poon [1] a imaginé la formation d’un réseau de canaux, le Lightning Network. Dans ce réseau, on s’échange des transactions Bitcoin sans les diffuser immédiatement sur la blockchain. Le temps de confirmation devient quasi-instantané. Les membres de ce réseau se mettent d’accord sur les transferts à effectuer, et, en cas de désaccord, le différend est résolu par la voie classique de la blockchain.

La brique de base : le canal de micro-paiement

Alice commence donc par verrouiller ses bitcoins en diffusant une première transaction sur la blockchain, étape inévitable. Cette transaction stipule deux choses :

1. Si Bob présente une transaction signée par Alice sur la blockchain, les bitcoins verrouillés dans le canal seront envoyés à Bob.

2. Si aucun transfert n’a lieu jusqu’à l’expiration du verrou, les bitcoins seront déverrouillés et retourneront à Alice.

À partir de cette transaction, Bob est certain que seules deux choses peuvent arriver : soit il récupère les bitcoins d’Alice, soit le verrou expire. Voilà le problème du double spending résolu de façon extrême : Alice ne peut qu’envoyer ses bitcoins à Bob et à personne d’autre. Si le canal seul n’est pas suffisant pour envoyer des bitcoins à quiconque, il offre une possibilité fondamentale à Alice et Bob : ils peuvent réécrire la transaction autant de fois qu’ils le souhaitent, car celle-ci n’est justement pas encore inscrite sur la blockchain.

Les transactions d’un canal de micro-paiement Bitcoin peuvent être renégociées instantanément et en toute sécurité par les tenants du canal. On peut ainsi enchaîner les paiements et seule la transaction finale passera effectivement sur la blockchain du Bitcoin

Par exemple,

0. Alice verrouille 1 bitcoin dans le canal

1. Alice achète une part de pizza à Bob et signe une transaction envoyant 0.1 bitcoin à Bob depuis le canal

Bob sait qu’il peut diffuser cette transaction dans la blockchain à tout moment, mais comme les fonds sont verrouillés rien ne presse, il peut considérer que le transfert est effectif.

2. Supposons qu’Alice souhaite acheter une autre part de Pizza à Bob. Alice et Bob peuvent alors annuler la transaction précédente et Alice signe une nouvelle transaction de 0.2 bitcoin vers Bob.

L’invalidation de la première transaction, et son remplacement, est la fonctionnalité clef du LN. Elle permet aux membres du réseau de négocier des échanges sans passer par la blockchain, sauf en cas de litige. L’invalidation repose sur le principe de pénalité, Alice et Bob signent un engagement à ne pas diffuser la transaction invalide, si l’un deux le fait, l’autre pourra alors diffuser une transaction infligeant une pénalité au tricheur. La pénalité choisie est supérieure au montant de la transaction, ainsi Alice n’aura aucun intérêt à diffuser l’ancienne version de la transaction (cela lui coûterait plus cher), Bob n’a quant à lui aucun intérêt en premier lieu, car la nouvelle version lui attribue plus de bitcoins.

Du canal au réseau

Le canal de micro-paiement est très pratique, mais il ne permet pas à Alice d’envoyer ses bitcoins à Charlie (qui lui vend des boissons).

La première option est qu’Alice ouvre aussi un canal vers Charlie, reproduisant le schéma mis en place avec Bob. Toutefois, cela lui coûterait des frais de transactions et l’obligerait à verrouiller d’autres bitcoins.

La seconde option, à la base du LN, est d’imaginer que Bob et Charlie ont ouvert un canal de micro-paiement entre eux. Ainsi, tout client ayant un canal avec l’un pourra envoyer des bitcoins à l’autre. S’il faut également une transaction initiale dans la blockchain, elle aura l’avantage d’être réutilisable par n’importe quel client de Bob ou de Charlie : c’est ainsi que le LN nous fait économiser des frais de transactions.

Il manque cependant un outil essentiel pour qu’Alice passe par Bob, sans que celui-ci ne puisse conserver les bitcoins initialement destinés à Charlie. Il s’agit du Hash Timelock Contract (HTLC). Dans la version simple du canal, il suffit à Bob de disposer d’une transaction signée par Alice pour effectuer le transfert. Dans le cas du HTLC, on ajoute une règle liée à la connaissance d’un secret.

Initialement, seule Alice a connaissance du secret. Celle-ci signe alors une transaction d’envoi de 0.1 bitcoin à Bob sous réserve que le secret soit connu. Si Bob a connaissance du secret, il sera à même de déclencher la transaction. Notons que si Alice ne revèle jamais le secret, les bitcoins seront déverrouillés après expiration du canal et retourneront à Alice. Bob, sans connaître le secret à ce stade, signe une transaction qui envoie 0.1 bitcoin à Charlie, sous la même réserve liée au secret. Alice prenant connaissance de cette transaction, peut alors révéler le secret en toute sécurité. Bob reçoit donc 0.1 bitcoin d’Alice, et Charlie reçoit 0.1 bitcoin de Bob. Les deux transactions sont soit toutes les deux possibles soit toutes les deux impossibles.

Les transactions conditionnées à la connaissance d’un secret sont à la base du Lightning Network, elles permettent de lier des transactions les unes aux autres de sorte que leur exécution soit atomique. Soit toutes les transactions sont possibles, soit aucune ne l’est. Par ce mécanisme, Alice peut faire transiter ses bitcoins par Bob en toute confiance.

Le réseau LN a pour ambition de créer un grand nombre de canaux entre tous les acteurs du Bitcoin. On pourra envoyer des bitcoins quasi-instantanément à n’importe quel participant en s’appuyant sur les membres du réseaux.

Si les principes fondateurs sont séduisants, il n’en reste pas moins que la mise en pratique comporte de nombreuses subtilités, voir [1]. On mentionne ici simplement une difficulté attendue. Un des intérêts du LN est d’éviter à tout le monde d’ouvrir un canal avec tout le monde (c’est en effet par la réutilisation des canaux qu’on réalise des économies), mais entre qui doit-on créer des canaux, et par quel chemin doivent passer les chaînes de transactions, sont deux questions qui restent complexes à gérer à grande échelle, de façon décentralisée.

Le réseau Lightning est en développement, plusieurs équipes travaillent en effet sur des implémentations indépendantes afin de préserver l’aspect décentralisé du Bitcoin. Le réseau est néanmoins live et les premiers tests sont très prometteurs. On y dénombre plus de 2500 noeuds pour presque 8000 canaux ouverts.