Comment fonctionnent les canaux de paiement et le réseau Lightning dans Bitcoin?

Cet article est consacré à la prise en compte des canaux de paiement hors chaîne: leurs types, leurs principes de fonctionnement et leurs fonctionnalités applicatives. Le matériel présenté aidera à comprendre pourquoi l'idée des canaux de paiement est révolutionnaire dans les systèmes de comptabilité financière. Nous parlerons des canaux de paiement spécifiquement pour Bitcoin. Cet article sera utile à ceux qui ne connaissent pas le concept de canaux de paiement, et donnera également une compréhension des principes du réseau Lightning.

Canaux de paiement et informations de base les concernant


Qu'est-ce qu'un canal de paiement?


Un canal de paiement est une méthode pour effectuer plusieurs paiements sans ajouter de transaction à la blockchain. Dans le même temps, les membres du canal interagissent uniquement entre eux. La présence de validateurs supplémentaires ou de tiers de confiance n'est pas requise.

Avantages du canal de paiement


Quels sont les avantages d'un canal de paiement par rapport aux transactions régulières?
Dans le cadre d'un canal de paiement déjà ouvert, les participants ont la possibilité d'effectuer des paiements instantanés. La partie destinataire effectue une vérification indépendante rapide et accepte le paiement. Il n'y a pas de commissions dans la version de base. En conséquence, les micropaiements ont leur place. C'est à cause de cette fonctionnalité que les canaux de paiement sont également appelés canaux de micropaiement.

Un autre avantage intéressant est que l'interaction des participants à la chaîne peut être effectuée en privé. En conséquence, les détails de chaque micropaiement resteront secrets pour tout le monde, bien que le fait même d'utiliser un canal de paiement entre des adresses Bitcoin spécifiques soit connu de tous.

Caractéristiques du canal de paiement


Cela ne veut pas dire que les canaux de paiement présentent de graves défauts par rapport aux transactions régulières, mais il existe certaines caractéristiques.

Le canal de paiement doit être ouvert et, par conséquent, fermé tôt ou tard. Cela se fait par des transactions en chaîne distinctes. Pour eux, le paiement d'une commission est inévitable et une confirmation en attente est requise. Pour une transaction d'ouverture, il est préférable d'attendre la confirmation complète.

Dans un canal spécifique, les paiements ne sont disponibles que dans un montant prédéterminé. Il est défini par les participants eux-mêmes, gelant la quantité souhaitée à l'aide d'un script Bitcoin spécial.

Les canaux de paiement peuvent être unidirectionnels et bidirectionnels, mono-directionnels ou bidirectionnels, respectivement. Cela dépend de la méthodologie d'implémentation du canal elle-même.

La durée de vie de la chaîne et le nombre maximal de paiements peuvent ou non être limités. Cela dépend de la technique. En conséquence, les canaux peuvent être fermés après un certain temps ou plus tôt que prévu. De plus, la chaîne peut être fermée par consentement mutuel des participants ou à la demande de l'un d'entre eux, mais avec certaines fonctionnalités.

Dans une version simplifiée, le fonctionnement du canal de paiement peut être représenté dans un tel schéma.

image

Il existe un réseau Bitcoin. Il y a deux utilisateurs: Alice et Bob. Ils ont des portefeuilles Bitcoin avec un module supplémentaire pour que le canal de paiement fonctionne selon une certaine méthode. Ces modules échangent des données pour des paiements directs.

Dont l'idée?


Pour la première fois, l'idée de canaux de paiement a été décrite par Satoshi Nakamoto lui-même dans une lettre personnelle à l'un des développeurs de protocoles actifs il y a de nombreuses années. Ensuite, en Bitcoin, des mises à jour assez importantes n'ont pas été acceptées, ce qui a permis de concevoir des canaux de paiement fiables. Cependant, plus tard, cela est devenu possible et en 2013 est revenu à cette idée vraiment prometteuse.

À propos des méthodes de mise en œuvre des canaux de paiement


Nous en considérerons quatre principaux.
Les canaux de paiement de type Spillman sont la version la plus simple d'un canal à sens unique avec une durée de vie limitée et un nombre illimité de paiements.

Plus tard, une autre amélioration du protocole Bitcoin a été adoptée et les canaux de paiement de style CLTV, qui représentent une méthode précédente améliorée, sont devenus possibles.

Les canaux de paiement Poon-Dryja sont une méthode de canal bidirectionnelle avec une durée d'exécution illimitée. Ils nécessitent quelques mises à jour supplémentaires du protocole Bitcoin qui ont été récemment adoptées. De plus, ces canaux sont utilisés dans la conception du réseau Lightning.

Les canaux de paiement duplex Decker-Wattenhofer sont une option permettant d'utiliser deux canaux unidirectionnels en même temps, améliorant leurs propriétés en formant non pas une chaîne séquentielle de transactions remplaçables, mais tout un arbre de transactions remplaçables. De plus, ces canaux peuvent avoir plus de deux participants.

Nous allons nous attarder sur les deux premières méthodes plus en détail, mais nous allons d'abord répéter certaines fonctionnalités du protocole Bitcoin.

Une partie du protocole Bitcoin


nLockTime est un champ dans le corps de chaque transaction qui contient un horodatage ou un numéro de bloc. Avant cette heure ou la hauteur de la chaîne de blocs, les validateurs ne sont pas autorisés à inclure une transaction dans un bloc.

nSequence est un champ dans chaque entrée de transaction qui contient la valeur du temps pendant lequel la confirmation de cette transaction n'est pas possible. De plus, le temps est calculé par rapport au moment où la sortie dépensée par cette entrée a été confirmée.

MultiSignature permet de fixer de telles conditions à l'issue d'une transaction pour laquelle il est nécessaire de fournir plusieurs signatures électroniques. Ces signatures seront vérifiées par des clés publiques spécifiques.

Canaux de paiement de type Spillman


Ainsi, les canaux de paiement de style Spillman sont une méthode de création de canaux de paiement unidirectionnels où il y a un rôle d'expéditeur et un rôle de destinataire. Le temps de fonctionnement d'un tel canal est fixé arbitrairement par l'expéditeur, tandis que le récepteur peut fermer prématurément le canal.

Regardons les principales étapes d'un tel canal dans le diagramme.

image

Pour plus de commodité, imaginez qu'il existe un service qui échange l'accès au réseau mondial via un point d'accès Wi-Fi, et un client qui souhaite accéder au réseau pendant une journée. Le service coûtera un bitcoin. De toute évidence, le client ne fait pas confiance au service pour un tel montant et souhaite payer le trafic par seconde.

Ensuite, ils décident d'ouvrir un canal de paiement pour une journée avec un montant d'un bitcoin. Le service génère une nouvelle paire de clés pour la signature électronique et transfère la clé publique au client. Le client, à son tour, génère une nouvelle paire de clés et utilise sa clé publique et la clé publique du service pour former l'adresse multisignature 2 sur 2. En outre, le client forme la transaction numéro un, dans laquelle il envoie un bitcoin à une adresse multisignature, le signe, mais ne le distribue pas au réseau Bitcoin, car le service peut se substituer au client et refuser de signer toute transaction pour le transfert ultérieur d'un bitcoin.

Par conséquent, le client forme la transaction numéro deux, où les pièces avec des adresses multisignatures sont envoyées à l'adresse qu'il contrôle. De plus, il définit le champ nLockTime afin que la transaction puisse être confirmée en une journée. Il ne signe pas cette transaction, mais l'envoie au service. À son tour, le service accepte que le client puisse récupérer la pièce entière pour lui-même, mais pas plus tôt que dans une journée, et signe la transaction avec sa clé. Il passe la signature au client, le client la vérifie. Il a maintenant la possibilité de pré-signer la transaction avec sa clé et est garanti de récupérer la pièce si le service décide de refuser le service.

À l'étape suivante, le client distribue la transaction numéro un au réseau Bitcoin ou la transfère au service pour distribution s'il n'a pas la connexion elle-même. Après la confirmation de la première transaction, le canal de paiement est considéré comme ouvert.

Dans ce cas, la transaction numéro un est appelée transaction de financement et la seconde est transaction de remboursement.

Comment l'interaction est-elle effectuée dans les calculs au sein du canal de paiement? Regardons le schéma suivant.

image

Pour envoyer le premier paiement, le client demande à Bitcoin l'adresse du service, qu'il contrôle indépendamment. De plus, le client forme la transaction numéro trois, dans laquelle une pièce de monnaie avec une adresse multisignature est répartie entre deux sorties: la première est un paiement à l'adresse de service en une seconde de fonctionnement du point d'accès, et la seconde est la livraison à la propre adresse du client. Le client signe la transaction numéro trois avec sa clé et la transmet au service. Le service vérifie l'exactitude de la transaction et de la signature, après quoi il accepte le paiement, car il peut re-signer cette transaction avec sa clé privée et est garanti de recevoir le paiement pendant la première seconde de trafic s'il le fait dans les 24 heures. Mais si le service a l'intention de continuer à fournir un service au client et à recevoir un paiement au sein du canal, il enregistre simplement la transaction numéro trois localement jusqu'à la fermeture du canal.

Pour envoyer tous les paiements ultérieurs, le client modifie la sortie de la transaction numéro trois, respectivement, la signe à nouveau et transfère uniquement la signature et le montant de la modification au service. Le service vérifie également les données reçues et enregistre la nouvelle version de la transaction numéro trois, car dans cette version, il reçoit plus de pièces.

Comment se fait la fermeture du canal?

image

Le diagramme montre que le service doit avoir le temps de publier la dernière version de la transaction numéro trois sur le réseau Bitcoin avant la fin de la durée de fonctionnement du canal. Sinon, l'expéditeur peut tricher, pré-signer et publier la transaction numéro deux, où il prendra le montant total à son adresse.

Il est à noter que le client peut publier une transaction de remboursement à tout moment pendant le fonctionnement de la chaîne. Le service considérerait un tel comportement comme moldu. Par conséquent, il surveille constamment l'apparition de cette transaction sur le réseau et, s'il est détecté, résilie le contrat avec le client, fermant le canal plus tôt que prévu en publiant la dernière version de la transaction numéro trois.

Canaux de paiement de type CLTV


Voyons maintenant une version améliorée de cette méthode, à savoir les canaux de paiement de type CLTV.

Cette méthode de canaux de paiement est devenue applicable après la mise à jour de la softfork Bitcoin avec l'ajout d'un nouveau code de script - OP_CHECKLOCKTIMEVERIF. Sa particularité est que maintenant dans la sortie de transaction, vous pouvez définir de telles règles selon lesquelles les pièces ne peuvent être dépensées que dans une transaction avec le paramètre set nLockTime non inférieur à celui spécifié. En fait, cela signifie que, entre autres conditions, les pièces ne peuvent être dépensées qu'après un certain temps. Maintenant, en utilisant des opérations de branchement de conditions scriptées, à savoir IF-ELSE, vous pouvez définir différentes conditions de dépense en fonction du temps. L'avantage de ces canaux de paiement par rapport aux précédents est que vous n'avez pas besoin de créer une transaction de remboursement. Au lieu de cela, vous pouvez spécifier une double condition pour dépenser des pièces dans le script de sortie de la transaction de financement. Autrement dit, avant l'heure de fermeture du canal, les pièces peuvent être dépensées selon les règles de la multisignature, et après la fermeture, une signature suffira.

Comment les canaux de paiement sont-ils appliqués?


Il y a deux options: soit sous forme pure pour des paiements réguliers entre des parties préétablies, soit la formation d'un réseau de foudre en changeant de canal entre eux. La commutation signifie la possibilité d'effectuer un paiement entre des utilisateurs qui n'ont pas ouvert un canal de paiement entre eux, mais qui ont des canaux ouverts avec d'autres participants au réseau. Ensuite, la valeur sera transmise à travers une chaîne de canaux de participants non autorisés, s'il en existe un.

Dans le cas du réseau Lightning, il existe des difficultés et des fonctionnalités supplémentaires. Il s'agit du développement d'un format généralement accepté pour les canaux de commutation et les nœuds de protocole de communication. Il est important que les portefeuilles de certains développeurs puissent fonctionner avec les portefeuilles d'autres. Un autre défi est le problème de routage sur ce réseau. La tâche est telle que vous devez trouver le moyen le plus court de transférer de la valeur, en tenant compte du fait que, dans chaque canal, il y a des restrictions sur le montant du transfert dans chaque direction.

Caractéristiques réseau


Dans le diagramme suivant, examinons les fonctionnalités du réseau Bitcoin et du réseau Lightning.

image

Dans le réseau Bitcoin, les nœuds échangent des données sur les transactions et les blocs, ainsi que les adresses réseau les uns des autres. Dans ce cas, un consensus est atteint et une base de données commune est formée. En plus des nœuds complets, il existe des nœuds légers dans le réseau Bitcoin qui ne reçoivent que les informations dont ils ont besoin, sans traiter et stocker tout l'historique.

Dans un réseau Lightning, les nœuds n'échangent pas de transactions toutes faites et n'atteignent pas de consensus. Mais il est également important pour eux de mettre à jour les informations sur l’état de chacun et d’échanger des messages pour maintenir le travail dans les canaux de paiement. Il est à noter que le réseau de foudre ne sera pas non plus homogène, dans le sens où il y aura des nœuds avec plus et moins de charge, ainsi que des nœuds à activité instable. Très probablement, il y aura des hubs dans le réseau, des nœuds avec un grand nombre de canaux de paiement ouverts, et ils devront faire face à une charge importante. Et les utilisateurs ordinaires ouvriront au mieux un ou deux canaux de paiement, et avec l'un de ces hubs.

Cela se produira, car pour ouvrir chaque canal de paiement, vous devez geler un certain nombre de pièces, alors vous ne pouvez accepter et envoyer des paiements que dans un montant limité. Si un utilisateur ordinaire divise ses pièces en plusieurs parties et ouvre plusieurs canaux, il recevra en fait une très petite fenêtre de paiement dans chaque canal par rapport au montant initial. Dans le même temps, de grandes organisations telles que les développeurs de portefeuilles, les échanges centralisés ou les marchands populaires feront office de plaques tournantes. Ils peuvent se permettre de maintenir un grand nombre de canaux ouverts pendant de grandes quantités et pendant de longues périodes sans se déconnecter.

Problèmes brûlants


Tenez compte des questions fréquemment posées sur les canaux de paiement et le réseau Lightning.

- Quelle est la fiabilité des paiements dans les canaux par rapport aux transactions Bitcoin régulières?

Par fiabilité, les paiements dans les canaux peuvent être comparés aux paiements ordinaires, c'est-à-dire que les pièces ne seront pas emportées et les paiements ne seront pas annulés. Mais il existe un certain nombre de fonctionnalités telles que la nécessité d'ouvrir et de fermer les canaux en temps opportun, les restrictions sur la quantité à l'intérieur du canal, la nécessité d'une synchronisation constante avec le réseau Bitcoin, la probabilité de geler des pièces pendant un certain temps.

- La bande passante dans les canaux et le réseau Lightning est-elle limitée?

Le fait est qu'il n'y a pas de restriction, mais il peut y avoir des retards associés au traitement des canaux, à la reconnaissance du réseau et à la construction de l'itinéraire, qui dépendent des performances de participants spécifiques. De plus, les nœuds peuvent se déconnecter de manière imprévisible, ce qui peut entraîner certaines restrictions lors des paiements effectués par d'autres participants.

- Les membres du canal doivent-ils se faire confiance?

Non, le mécanisme des canaux de paiement offre une protection contre toute action malveillante des parties en interaction.

- Quelle est l'utilité des canaux pour une personne qui souhaite envoyer un seul paiement?

Si une personne veut se débarrasser des dernières pièces et ne prévoit plus d'accepter et d'envoyer des paiements, il n'est pas logique d'ouvrir un canal, vous devez envoyer une transaction en chaîne normale. Dans tous les autres cas, l'ouverture d'une chaîne sera utile.

Une des conférences du cours en ligne Blockchain « Canaux de paiement hors chaîne » est également consacrée à ce sujet.

Source: https://habr.com/ru/post/fr414793/


All Articles