Le mécanisme de « justice » du Lightning Network

2
446

Le Lightning Network est un réseau trustless. Cela signifie que deux personnes qui ne se connaissent pas peuvent non seulement effectuer des transactions, mais également ouvrir des canaux l’une avec l’autre sans avoir à se soucier de l’honnêteté de leur homologue. Pourtant, comme le dernier état de la balance d’un canal Lightning n’est pas inscrit dans la blockchain (qui n’enregistre que les transactions de création et de clôture de canal), il pourrait être tentant pour un participant malhonnête de fermer un canal en publiant un état obsolète qui lui est favorable et ainsi voler une partie ou la totalité des fonds du second participant. Pour éviter ce genre d’abus, le protocole intègre un système de justice particulièrement dissuasif que nous explique ici JohnOnChain à partir d’un exemple concret :

Il s’agit de deux de mes nodes sur le testnet de bitcoin. Voici l’état du canal d’origine : 995Ksats du côté nœud tricheur et 1Msats du côté du nœud honnête.

Le nœud honnête se fait payer 200K sats par le noeud tricheur. Mais avant de payer, le nœud tricheur va faire une copie de sa base d’état de ses channels (wallet.db). Voici l’état du canal après paiement : 794Ksats du côté nœud tricheur et 1,2Msats du côté du nœud honnête.

Malheureusement, le nœud honnête perd sa connexion internet. Le tricheur va :
1- stopper son nœud
2- recharger l’état précédent de sa base d’état
3- relancer son nœud
Voici ce que ça donne du point de son point de vue. Les 200K sats ne sont plus payés
 :

Pour conclure sa tentative de double dépense, il va forcer la fermeture de son canal ce qui va conduire à cette transaction :

C’est presque une réussite. Cependant, sa transaction est contrainte par un verrou temporel afin de laisser le temps au nœud honnête de contester cette transaction. Chose qu’il fera à son redémarrage en détectant la tentative de triche.

Il va immédiatement faire la contestation en publiant la transaction « Justice » qui est une condition de dépense de la transaction de triche. On la retrouve ici :

C’est hautement punitif surtout si le nœud « malhonnête » ne l’est pas et s’est juste fourvoyé dans des copies de sauvegardes hasardeuses (ne tentez pas de backup le fichier wallet.db). Il est possible que le verrou temporel ne soit pas suffisamment long pour la victime et qu’elle ne puisse pas publier la transaction « Justice » à temps. C’est là qu’intervient le système des « watchtowers » qu’on verra la prochaine fois.

Sur le même sujet : Comprendre le Lightning Network – Episode 5 : le mécanisme anti-triche par Fanis Michalakis


A propos de l’auteur

Bitcoiner, testeur et bidouilleur, JohnOnChain est avant tout un expert et un aventurier du bitcoin. A suivre absolument sur Twitter.

Soutenez ses expérimentations en lui envoyant un tip : https://lnbits.openchain.fr/lnurlp/31