Évoluez avec la vitesse : le réseau Bitcoin Lightning expliqué
Publié: 2022-03-11Le Bitcoin Lightning Network est une solution indépendante qui est annoncée comme la solution à tous les problèmes empêchant l'adoption de Bitcoin par le grand public. Il prétend résoudre le sombre problème de mise à l'échelle, effectuer des transactions instantanées, maintenir les frais de transaction au minimum et retirer vos transactions de la blockchain. Comment un système indépendant du cœur du Bitcoin peut-il offrir ces améliorations ? Comment peut-il violer les règles conventionnelles de Bitcoin en proposant des transactions sécurisées sans aucune confirmation ? Qu'est-ce que le réseau Bitcoin Lightning ?
Dans cet article, nous allons explorer ce qu'est réellement le Bitcoin Lightning Network, comment il peut offrir les garanties qu'il offre et son état actuel.
Remarque : Cet article suppose que vous êtes familiarisé avec Bitcoin. Si vous n'êtes pas familier avec le fonctionnement des crypto-monnaies ou si vous avez besoin d'un rappel, lisez Crypto-monnaie pour les nuls : Bitcoin et au-delà.
Prérequis : le problème de mise à l'échelle de Bitcoin
Si vous êtes au courant du problème de mise à l'échelle de Bitcoin, n'hésitez pas à ignorer cette section, mais si vous ne l'êtes pas ou si vous avez besoin d'un rappel, lisez la suite.
Bitcoin a un problème de mise à l'échelle. Bitcoin est conçu pour stocker toutes les transactions dans une structure de données appelée bloc. Un bloc contient des informations sur le bloc précédent, diverses données sur les récompenses de minage, et la majeure partie du bloc n'est que des données de transaction. Les blocs sont également fixés à une taille maximale de 1 Mo. C'est sur ce dernier point que se situe le problème.
Étant donné que les blocs ont une taille de 1 Mo et qu'un bloc est créé toutes les 10 minutes, en supposant que les transactions ne sont pas SegWit (à venir plus tard), le réseau peut traiter un maximum de 3,3 à 7 transactions par seconde. Pour une monnaie conçue pour être utilisée en masse par des milliards d'humains et leurs machines, 7 transactions par seconde ne sont tout simplement pas à la hauteur. Visa, quant à elle, prétend pouvoir traiter 24 000 transactions par seconde.
Au fur et à mesure que le nombre de transactions commence à augmenter, votre transaction individuelle est en concurrence avec les autres pour être incluse dans un espace de bloc limité, et ainsi, la probabilité que la vôtre soit incluse dans le bloc commence à diminuer. Étant donné que les mineurs peuvent décider arbitrairement quelles transactions inclure dans un bloc, à ces occasions, la seule façon d'inciter les mineurs à inclure votre transaction est d'augmenter vos frais de transaction. Cependant, cela commence à rendre les transactions d'un coût prohibitif, comme cette transaction de 192 octets pour 92,98 $ où les frais de transaction étaient de 14,86 $.
Alors, comment « dimensionnons-nous » Bitcoin ? Il existe trois grandes écoles de pensée ou, comme j'aime les appeler, des batailles de la Great Scaling Bitcoin Flamewars :
- Taille de bloc croissante : 2X, 8X, …, ∞X
- Petites transactions : SegWit et al.
- Sidechains : le réseau Bitcoin Lightning
Augmenter la taille du bloc Bitcoin
Celui-ci est assez simple à comprendre : si la limite de bloc de 1 Mo est le problème, agrandissez-le ! Le débat à ce sujet a été féroce et fait toujours rage. Finalement, le 1er août 2017, Bitcoin (BTC) a été bifurqué et Bitcoin Cash (BCH) est né. La principale différence entre les deux est que BCH a des blocs de 8 Mo. Cela permet de garder les blocs pratiquement vides et les frais très bas.
Cependant, des blocs de 8 Mo signifient que la taille totale de la blockchain BCH augmentera probablement à un rythme beaucoup plus rapide, faisant des coûts de stockage une barrière à l'entrée beaucoup plus élevée sur la scène des mineurs. L'argument est que cela réduirait le nombre total de mineurs, qui sécurisent également la blockchain, réduisant la décentralisation et la sécurité globale du réseau Bitcoin.
Une autre critique des blocs plus grands est que cela ne résout pas le problème lui-même ; au lieu de cela, il corrige temporairement le problème. Il y aura toujours une limite maximale avec des blocs plus grands, et la limite maximale sera toujours bien inférieure à la limite cible que nous essayons d'atteindre : 24 000 transactions par seconde. Même avec ses plus gros blocs de 8 Mo, BCH a une limite de 61 transactions par seconde.
Petites transactions : témoin séparé
D'autres solutions soulignent que le format de transaction actuel n'est pas le plus efficace et visent à regrouper plus de transactions dans le même bloc. Le plus notable d'entre eux s'appelle Segregated Witness (SegWit), proposé via BIP 91 et activé dans le bloc 481824 le 25 août 2017. SegWit fait désormais partie de Bitcoin, réjouissez-vous !

SegWit prend les données de signature des transactions et les stocke dans une structure distincte du bloc de transaction, réduisant ainsi la taille des transactions individuelles et faisant un meilleur usage de l'espace limité dans chaque bloc. Cette structure est alors facultative lors de la synchronisation de la blockchain, entraînant une taille réduite sur disque omis.
Cela se traduit également par une solution au problème de malléabilité des transactions, et les transactions qui ne dépensent que des sorties SegWit ne sont plus vulnérables.
Le réseau Bitcoin Lightning
Le Lightning Network est un réseau de deuxième couche qui transmet des transactions signées, mais non diffusées, entre pairs et s'appuie sur la blockchain Bitcoin uniquement pour le règlement final des fonds. Cela signifie que les transactions ne sont pas du tout limitées à la taille du bloc, que les délais de confirmation ne sont pas pertinents et que la blockchain Bitcoin n'a pas besoin de stocker toutes les transactions qui se produisent.
Qui a développé le Bitcoin Lightning Network ? Il a été décrit pour la première fois dans un livre blanc rédigé par Joseph Poon et Thaddeus Dryja, mais a depuis évolué en un effort communautaire avec des tiers et même des entreprises contribuant aux spécifications et aux implémentations.
Plus d'informations plus tard.
SegWit vs Augmentation de la taille de bloc vs Bitcoin Lightning Network
Quel est le meilleur, alors ? Je n'ai aucune preuve empirique sur laquelle fonder ma réponse, c'est donc une opinion : même si je pense qu'une meilleure utilisation de l'espace de bloc (à la SegWit) est une bonne chose, je pense qu'une augmentation de la taille des blocs reviendrait à pousser le poteau de but vers l'avenir. Si l'utilisation de Bitcoin devait augmenter considérablement, nous nous retrouverions dès le début à débattre d'une autre augmentation de la taille des blocs.
Être en désaccord? Laissez un commentaire ci-dessous!
Cela dit, même si je pense qu'un réseau de règlement alternatif comme Bitcoin Lightning est une idée merveilleuse, j'attends également de voir comment cela fonctionne dans le monde réel. Pour l'instant, ce n'est pas vraiment dans l'état que mon père et moi pourrions utiliser.
Le réseau Bitcoin Lightning expliqué
J'ai déjà mentionné que le Lightning Network est un réseau de deuxième couche qui transmet des transactions signées, mais non diffusées, entre pairs et s'appuie sur la blockchain Bitcoin uniquement pour le règlement final des fonds.
Voyons comment cela fonctionnerait dans la vraie vie.
Nœuds et canaux Lightning
Un nœud Lightning fonctionne un peu comme et contrairement à un nœud Bitcoin en ce sens qu'il fonctionne en réseau, valide les transactions et communique avec d'autres nœuds, mais il fait des choses que les nœuds Bitcoin ne font pas historiquement : il détient des fonds, agit comme un intermédiaire financier automatisé. , surveille activement les « canaux » Lightning pour détecter les comportements malveillants et réagit de manière défensive (cela sera expliqué en détail plus tard), etc.
Pour exécuter ces fonctions, les nœuds ont besoin d'argent.
Remarque : ces exemples supposent initialement que tout le monde exécute un nœud Bitcoin Lightning Network connecté à Internet 24h/24 et 7j/7, ce qui ne sera évidemment pas le cas. Cette hypothèse sera brisée dans la section Lightning Wallet vs Lightning Node.
Création d'un canal Lightning
Supposons que vous et votre ami Bob ayez une relation qui implique un bon nombre de transactions financières. Vous traînez ensemble de temps en temps pour déjeuner ou regarder un film. Parfois, l'un d'entre vous est à court d'argent, et parfois l'autre et vous finissez généralement par vous venger l'un l'autre par la suite.
Cependant, en tant que défenseurs de la cryptographie, vous décidez tous les deux d'essayer Lightning et de créer un nouveau canal mutuel que vous financez à parts égales avec un demi-bitcoin chacun (c'est beaucoup de déjeuners).
Créer un nouveau canal Lightning revient à créer un portefeuille bitcoin multi-signatures qui nécessite vos deux signatures pour approuver une transaction, mais avec une différence ; vous recevez chacun une « transaction d'engagement » signée, mais non encore diffusée, conformément au livre blanc de Lightning Network, qui vous restitue vos dépôts initiaux. De cette façon, si votre amitié traverse une période difficile, ou si l'un de vous a besoin d'argent, vous pouvez fermer unilatéralement la chaîne en diffusant cette transaction et tout le monde reçoit les sommes qui lui reviennent.

Effectuer des transactions éclair avec des personnes avec lesquelles vous avez des canaux
Disons que vous sortez à nouveau pour le déjeuner un jour et que vous finissez par devoir à Bob l'équivalent de 8 000 satoshis (0,31 USD au moment où j'écris ceci). À l'heure actuelle, si vous utilisez Bitcoin pour régler ce montant, vous finirez par payer 0,10 USD et attendre une heure, ce qui le rendra irréalisable.
Avec Lightning, cependant, vous pouvez le faire gratuitement en remplaçant simplement votre "Transaction d'engagement" par une nouvelle transaction que vous pourrez conserver tous les deux. Seulement cette fois, Bob a 8 000 satoshis de plus, et vous en avez moins. (Si vous envisagez de tricher en diffusant l'ancienne transaction à ce stade, attendez la section sur la fermeture d'un canal .)
Vous pouvez diffuser la transaction et fermer la chaîne, cependant, la fermeture de la chaîne entraînerait des frais de transaction, et comme aucun de vous n'a besoin du montant immédiatement, vous pouvez simplement conserver la chaîne et l'utiliser pour régler de futures dettes.
Effectuer des transactions éclair avec des personnes avec lesquelles vous n'avez pas de canaux
Disons qu'un jour, Bob invite un autre de ses amis, Alice, et après une heure intense à manger des sandwichs, vous êtes tous les deux redevables à Alice car la boutique n'a accepté que Coinye (une crypto-monnaie disparue abandonnée après la poursuite de Kanye West), ce qu'Alice est arrivé avoir.
Maintenant, en supposant que Bob a un canal ouvert avec Alice, avec Lightning, vous pouvez également payer Alice via Bob. Votre nœud calcule l'itinéraire optimal entre vous et Alice - dans ce cas, avec Bob comme intermédiaire financier - et les intermédiaires peuvent tous verser de l'argent, avec une somme modique s'ils le souhaitent.
Fermeture d'un canal : deux bonnes façons et une mauvaise façon
Il existe trois façons de fermer un canal Lightning :
- En collaboration : l'une des parties du canal initie la fermeture d'un canal Bitcoin Lightning et l'autre approuve. Il n'y a pas de blocage dans le temps et l'argent est prêt à être dépensé dès que l'approbation est confirmée. C'est la "meilleure" façon de fermer un canal.
- Unilatéralement : n'importe laquelle des parties du canal peut fermer un canal Bitcoin Lightning lorsque l'une des parties le souhaite, même si l'autre partie n'approuve pas. Il en résulte un blocage dans le temps où l'autre partie peut contester la fermeture avec une transaction « Breach Remedy » (voir le scénario 3 ci-dessous), mais supposons que cela ne se produise pas. Après l'expiration du délai, les fonds sont libres d'utilisation. C'est une façon « acceptable » de fermer un canal.
- Remède contre la violation : étant donné que les transactions éclair sont une liste horodatée de transactions signées où la répartition des fonds varie, il est possible qu'une partie tente de tricher (violer la confiance) en fermant unilatéralement un canal avec une ancienne transaction où elle détient plus de fonds (voir scénario 2). Il en résulte un blocage dans le temps, et pendant cette période, la partie lésée peut non seulement récupérer ses propres fonds, mais aussi balayer toute la capacité du canal à l'aide d'une transaction « Breach Remedy », comme décrit dans le livre blanc Bitcoin Lightning Network.
Lightning Node contre Lightning Wallet
Dans l'exemple ci-dessus, nous avons utilisé le terme "nœud" Lightning, ce qui vous ferait penser que vous devriez maintenir votre nœud opérationnel 24h/24 et 7j/7 sur Internet. Et oui, vous auriez raison. Le Lightning Network est conçu pour que les nœuds soient toujours en ligne, garantissant que le réseau fonctionne près de sa capacité maximale. Et, si personne n'est en ligne pour surveiller une tentative de tricherie et qu'elle réussit, la chaîne se fermera un peu comme une fermeture unilatérale régulière, vous laissant sans vos fonds.
Cependant, le livre blanc Lightning Network décrit un remède à ce problème :
… il convient de surveiller périodiquement la blockchain pour voir si sa contrepartie a diffusé une transaction d'engagement invalidée, ou de déléguer un tiers pour le faire. Un tiers peut être délégué en donnant uniquement la transaction Breach Remedy à ce tiers. Ils peuvent être incités à regarder la blockchain diffuser une telle transaction en cas de malveillance de la contrepartie en versant à ces tiers des frais dans la sortie. Étant donné que le tiers ne peut agir que lorsque la contrepartie agit de manière malveillante, ce tiers n'a aucun pouvoir pour forcer la fermeture du canal.
Ces tiers sont souvent appelés tours de guet et devraient supprimer le fardeau des utilisateurs toujours en ligne.
L'état du réseau Lightning
Le Bitcoin Lightning Network au 27 mars 2019 :
- A plus de 7,5 mille nœuds
- A près de 40 000 canaux ouverts
- Un peu plus de 1 000 BTC en capacité
Il croît à un rythme de :
- 25 nœuds par heure
- 304 chaînes par heure
Il existe de nombreuses implémentations de nœuds Lightning Network, même un portefeuille Eclair Lightning sur le Play Store. C'est encore expérimental, manque de finition et de la caractéristique importante de recevoir des fonds, mais à mon avis, même si l'écosystème est petit, il se développe sainement.
Spécifications et implémentations
La spécification Bitcoin Lightning Network est en état de demande de commentaires (RFC) et est constituée d'une série de documents appelés Basis of Lightning Technology (BOLTS). Les BOLTS changent constamment à partir de cette publication et des contributions bienvenues.
Il existe également plusieurs implémentations compatibles BOLT des nœuds Lightning Network :
- LND : abréviation de Lightning Network Daemon, il s'agit d'une implémentation principalement basée sur Go.
- Eclair : une implémentation principalement basée sur Scala.
- C-lightning : une implémentation principalement basée sur C.
Pour plus de ressources, voir la conclusion de cet article.
Avantages et critiques du réseau d'éclairage
Alors, que pouvons-nous réaliser avec le Lightning Network ?
- Véritables micro-transactions (fractions de centimes)
- Frais les plus bas imaginables (fractions de centimes)
- Un degré de confidentialité (pas d'enregistrements blockchain)
Cependant, comme je l'ai déjà dit, il existe un certain nombre de critiques à l'encontre du Lightning Network, dont certaines sont valables et présentent des défis non résolus auxquels Lightning est confronté :
- Routage et centralisation : étant donné que le Lightning Network est en constante évolution, les états des canaux changeant, s'ouvrant et se fermant tous les jours, et il existe un stockage centralisé de l'historique vers lequel se replier, les itinéraires de paiement doivent être recalculés à chaque fois. C'est très bien lorsque le réseau est petit, mais lorsqu'il devient suffisamment grand, votre petit nœud fonctionnant sur un matériel minuscule peut ne pas avoir la puissance de traitement nécessaire pour calculer l'itinéraire. La solution à ce problème peut être un super-nœud centralisé avec des connaissances avancées que vous pouvez interroger. Ceci est décrit plus en détail ici.
- Trop de prêts : mieux décrit dans cet article, qui a même amené Vitalik Buterin, le co-fondateur d'Ethereum, à participer. Cela dit essentiellement que puisqu'une chaîne de 10 sauts pour payer 10 $ oblige tout le monde à payer 10 $ à terme, vous feriez finir par déplacer 100 $ de fonds. À un moment donné, déplacer de grandes quantités devient impossible. Que cela soit vrai ou non dans le monde réel n'a pas encore été déterminé, mais c'est néanmoins un argument convaincant.
Ai-je raté des critiques ? Veuillez me le faire savoir dans les commentaires ci-dessous.
Autres lectures et ressources
J'espère que vous comprenez enfin ce qu'est réellement le Lightning Network. Au fond de tout cela, il s'agit simplement d'un système de messagerie basé sur l'échange de jetons cryptographiques. Ce n'est pas encore parfait ou largement utilisable, mais cela ne veut pas dire que ce n'est pas une pièce d'ingénierie impressionnante.
Je recommande de lire le livre blanc original de Bitcoin Lightning Network. Je pourrais également recommander une liste de lectures et d'applications, de livres et d'articles supplémentaires, mais l'utilisateur de GitHub Ben Congdon est déjà allé de l'avant et l'a fait, je vous recommande donc de consulter bcongdon/awesome-lightning-network
. Merci Ben! En tant que développeur Bitcoin, vous vous devez de lire autant que possible sur cette nouvelle technologie.
Si tout cela était trop d'informations, terminons cela sur une note amusante. Voici une vidéo amusante du soi-disant Satoshi Craig Wright tentant de parler des bons vieux jours du bitcoin.