Les canaux de paiement ou canaux de paiement, sont une technologie conçue pour permettre des paiements instantanés sans garde entre deux ou plusieurs personnes qui utilisent une crypto-monnaie. Ceci afin d'offrir une meilleure expérience de paiement avec une excellente sécurité et des commissions très faibles.
LLes canaux de paiement ou canaux de paiement, sont un moyen conçu pour que les utilisateurs de crypto-monnaies Ils peuvent effectuer des transactions instantanées et à faible coût sans avoir un impact négatif sur le blockchain.
Ce besoin est motivé par les limites des crypto-monnaies telles que Bitcoin, et la plupart des crypto-monnaies du système, en termes d'évolutivité en transactions par seconde et de l'espace total de la blockchain. Ainsi, un canal de paiement permet à de nombreuses personnes d'effectuer un grand nombre de transactions en arrière-plan, mais seules deux transactions sont comptées sur la blockchain principale.
Bien entendu, lors de l'ouverture d'un canal de paiement (ou canal de paiement en anglais), les nœuds doivent bloquer les devises des utilisateurs afin qu'ils ne puissent pas être utilisés en dehors du canal pendant la durée de vie utile du canal. Cela a un coût énorme qui rend peu attrayant de garder les canaux de paiement ouverts. Mais pour cette raison, les canaux de paiement restent un moyen très efficace d'offrir une grande évolutivité aux crypto-monnaies.
À ce stade, vous vous demanderez sûrement, comment fonctionnent-ils? Ils sont en sécurité? Quels systèmes existent aujourd'hui? Nous répondrons à toutes ces questions ci-dessous dans ce nouvel article de Bit2Me Academy.
Origine des canaux de paiement dans les crypto-monnaies
L'idée des canaux de paiement par crypto-monnaie n'est pas nouvelle. Dès le début du développement de la technologie, cette idée y était présente. Satoshi Nakamoto Il l'a présenté comme une possibilité technologique applicable au Bitcoin. Ceci soutenu par OP_CODES de Script Bitcoin qui ont servi à remplacer les transactions et à contrôler leur validation. On parle d'OP_CODES nSequence y nLockTime, qui permettait à deux ou plusieurs parties de mettre à jour à plusieurs reprises le statut d'une transaction non confirmée avant qu'elle ne soit confirmée.
Le système rudimentaire de Nakamoto permettrait de créer des transactions pouvant contenir plusieurs entrées. Chacune de ces entrées serait signée et vérifiée par l'utilisateur et le détenteur des fonds décrits dans ladite entrée. Ainsi à chaque nouvelle signature, la valeur de nSequence passe à une valeur plus élevée, jusqu'à ce que la chaîne de signatures se termine par la confirmation de la transaction dans un bloc. Et en même temps, la transaction contient une comptabilité interne avec laquelle les utilisateurs sont d'accord.
Ainsi, une seule transaction peut signifier plusieurs transactions différentes pour différents utilisateurs. Le système permet également la possibilité que, dans le cas où les résultats ne sont pas convenus, l'utilisateur en question évite la signature et quitte ainsi le système. Dans ce cas, les fonds sont à nouveau sous votre contrôle et vous pouvez continuer sans problème.
D'autre part, Nakamoto a expliqué que nLockTime peut être utilisé dans le trading haute fréquence entre un ensemble de pièces. Pour y parvenir, nLockTime permettrait de continuer à mettre à jour une certaine transaction dans mempool, s'il y a accord unanime entre les parties. De cette manière, la transaction serait mise à jour à chaque fois qu'une des parties souhaite participer à la transaction (qui agit comme un canal de paiement). Lorsque les parties conviennent de fermer le canal, les signatures de tous les participants arrivent et définissent le nLockTime final pour la transaction, et attendent qu'il soit confirmé. Avec sa confirmation, le canal est fermé et toutes les opérations décrites par les entrées et sorties sont effectuées dans la même transaction.
Cependant, les deux options ne sont pas sûres. Les valeurs nSequence et nLockTime pourraient être manipulées par un mineur malveillant ou même un nœud malveillant. Cependant, l'idée de base des canaux de paiement avait émergé, et derrière elle commencerait des recherches approfondies pour développer une solution mieux sécurisée pour tous.
Le développement des premiers canaux de paiement commence
Les idées de Satoshi Nakamoto ont rapidement attiré l'attention des développeurs de la communauté, qui se sont rapidement retrouvés avec un problème complexe à résoudre. Comment faire participer plusieurs personnes à un système de paiement instantané sécurisé, décentralisé et basé sur le protocole Bitcoin sans le modifier inutilement? Concevoir une fonctionnalité comme celle-ci est un problème compliqué, mais il est plus compliqué de la programmer, et si nous ajoutons qu'une telle programmation est compatible sans casser aucun de ce qui précède, c'est extrêmement complexe. Même avec cela, deux façons de créer des canaux de paiement sont rapidement apparues et nous les expliquons ci-dessous.
Types de canaux de paiement
Unidirectionnel
Le système de canal de paiement le plus simple est le système de canal à sens unique. Dans ce système, l'utilisateur A peut effectuer un paiement B. Un nouvel utilisateur C peut rejoindre le canal et effectuer un paiement à D. Et ainsi, la chaîne de paiements dans le canal peut continuer à s'étendre.
Ces paiements sont contrôlés et sécurisés par des transactions du type multi-signaturePar conséquent, pour leur réalisation, les parties concernées doivent signer conformément aux données figurant dans les entrées et les sorties de la transaction. À mesure que le canal se développe, les entreprises du système se développent également et tout le monde doit signer pour que les fonds soient débloqués.
De plus, un nLockTime de 50 blocs est appliqué, pour empêcher les utilisateurs d'utiliser l'argent immédiatement, mais au contraire, l'argent ne sera disponible qu'après la confirmation de 50 blocs. À ce stade, vous pouvez voir le nLockTime comme un chèque qui n'est valide qu'après une certaine date, avant cette date, c'est juste un morceau de papier sans valeur. Le nLockTime peut être ajusté de la manière souhaitée par les parties.
De cette manière, tous les participants peuvent être sûrs que le paiement a été effectué, mais ne recevront l'argent qu'après que les conditions supplémentaires de la négociation de ce paiement seront remplies. Prenons, par exemple, que A a payé B pour réparer un ordinateur et que B a environ 500 minutes pour réparer ledit ordinateur. Sinon, A peut toujours intervenir dans la transaction, modifier sa valeur et récupérer son argent.
Bidirectionnel
Les canaux de paiement bidirectionnels sont en fait deux canaux unidirectionnels qui fonctionnent ensemble. Grâce à cela, A et B peuvent envoyer des paiements de manière bidirectionnelle, sans avoir besoin de fermer un canal précédent et d'ouvrir un autre nouveau canal pour les opérations de paiement. Le fonctionnement de base est conservé, à l'exception du fait que les canaux bidirectionnels sont parfaits pour effectuer des opérations plus dynamiques entre deux utilisateurs ou entités.
Pourquoi des canaux de paiement ont-ils été créés?
Dans Bitcoin, les transactions ne peuvent être confirmées que si elles sont incluses dans un bloc de la blockchain. Un processus qui se produit toutes les 10 minutes environ et dans lequel seulement 1 Mo d'informations peuvent entrer. Cela limite considérablement le nombre de transactions qui peuvent être confirmées dans chaque bloc, avec environ 2200 10 transactions confirmées toutes les XNUMX minutes.
Mais que faire si on triche? Et si nous incluions de nombreuses entrées et sorties dans une transaction et que les parties impliquées dans cette transaction signaient la transaction pour donner leur approbation? Avec cela, la transaction est finalement émise vers le réseau et validée, et donc une transaction équivaudrait à plusieurs transactions individuelles. Un piège très subtil vrai, mais aussi très utile et c'est justement ce que fait un canal de paiement. Au moins dans ses fonctionnalités les plus élémentaires.
De cette manière, les canaux de paiement sont transformés en une solution de deuxième couche qui permet aux utilisateurs d'effectuer des transactions sans avoir à dépendre directement du bloc suivant pour qu'une transaction soit considérée comme terminée. Ainsi, nous pouvons effectuer des transactions instantanées qui seront ensuite enregistrées à l'unanimité dans la blockchain principale, lorsque le canal de paiement est fermé. Rien n'est perdu, les pièces ne sont pas créées à partir de zéro, à la fin, tout se termine dans la même comptabilité et les chiffres s'additionnent.
C'est pourquoi les canaux de paiement ou canaux de paiement ont été créés. C'est un outil parfait pour rendre le paiement plus flexible en utilisant des crypto-monnaies, et tout cela, sans altérer les protocoles actuels.
Avantages et inconvénients des canaux de paiement
Avantages
- Ils offrent la possibilité d'effectuer des paiements instantanément entre les parties qui participent au canal de paiement. Mais cela vous permet également de planifier des paiements et de les sécuriser sous certaines conditions.
- Vous pouvez faire des micropaiements, même envoyer quelques satoshis.
- Cela permet de réduire les frais de transaction, grâce au fait que le paiement des frais de confirmation en chaîne se fait entre tous les participants du canal.
- Permet aux entreprises de recevoir des paiements en crypto-monnaies en laissant derrière eux les délais de confirmation en chaîne, mais sans sacrifier la sécurité.
- Selon les spécifications actuelles du canal de paiement, il est très difficile (voire impossible) de voler des fonds. En effet, les implémentations de canaux de paiement utilisent le schéma d'adresse multi-signature, dans lequel les actions ne sont effectuées que si elles portent les signatures de tous les participants.
Inconvénients
- Il y a une limite au nombre de transactions que nous pouvons effectuer avec un canal de paiement.
- Les fonds à dépenser sur un canal de paiement doivent être placés à l'avance. Cela signifie que si la chaîne est à court d'argent, il sera nécessaire d'en ouvrir une nouvelle pour effectuer plus d'opérations.
- Il existe encore des problèmes de sécurité concernant les canaux de paiement. Des cas tels que des vulnérabilités dans les codes des clients et des nœuds pour ce type de système. Ou encore, des vulnérabilités de la structure d'exploitation elle-même, comme dans le cas de Attaque de dilatation temporelle. Voilà quelques-uns des problèmes à résoudre avant la massification de ces systèmes.
Que savez-vous, cryptonuta?
Les canaux de paiement sont-ils une solution non sécurisée pour la mise à l'échelle des crypto-monnaies?FAUX!
Il existe un mythe dans lequel de nombreux utilisateurs de crypto-monnaies comme Bitcoin tombent, et c'est-à-dire que beaucoup disent que les canaux de paiement tels que le Lightning Network ne sont pas sécurisés. La réalité est que même si la technologie est encore dans sa phase de développement, les canaux de paiement comme LN sont très sécurisés. Ceci est différent d'autres options telles que celles basées sur des protocoles de consensus à haut débit et qui à leur tour conduisent à une centralisation (comme PoA ou PoET).
Premières implémentations des canaux de paiement
Désormais, les implémentations des canaux de paiement ont évolué ces dernières années et continuent d'évoluer. Nous citerons ici quelques propositions et quelles ont été leurs réalisations les plus remarquables.
BitcoinJ et ses canaux de paiement
Les développeurs Mike Hearn et Matt Corallo ont ajouté la prise en charge des canaux de paiement dans BitcoinJ, le 27 juin 2013. Avec la mise en œuvre, BitcoinJ est devenu la première bibliothèque externe à Bitcoin Core capable de prendre en charge ce système en toute sécurité. Bitcoin Core pourrait utiliser un système de paiement de ce type, mais comme nous l'avons mentionné au début de cette page, il n'était pas sécurisé car les mineurs ou les nœuds pouvaient manipuler ces canaux en utilisant les moyens existants (nLockTime et nSequence).
BIP-65, la naissance de CLTV
Bitcoin Core a fait une percée dans la possibilité de créer des canaux de paiement avec activation OP_CHECKLOCKTIMEVERIFY ou CLTV, un nouveau OP_CODE pour Bitcoin.
Grâce à ce code, il est possible de prouver qu'il est impossible de dépenser une sortie de transaction jusqu'à un moment dans le futur. Ceci est possible grâce au fait que CLTV permet de mettre en œuvre un test capable de savoir si une signature valide a été créée pour une transaction différente qui passe une certaine sortie. Si ce cas est détecté, CLTV peut invalider la nouvelle transaction, évitant ainsi d'éventuels schémas de double dépense.
En termes simples, le BIP-65 vous permet de créer une méthode de vérification des dépenses que nLockTime est incapable de gérer, permettant la création de canaux bidirectionnels sécurisés.
HTML
Les HTML ils constituent une autre évolution en faveur des canaux de paiement. Les HTLC fonctionnent essentiellement sur le routage des paiements. Autrement dit, ils acheminent les paiements en toute sécurité via plusieurs canaux de paiement. De cette manière, HTLC évite l'un des problèmes des canaux de paiement: le coût d'ouverture de nouveaux canaux de paiement. Ainsi, HTLC est en mesure d'utiliser des canaux de paiement toujours ouverts et d'acheminer les paiements de tout le monde entre ces paiements. Le résultat est un vaste réseau de canaux de paiement ouverts presque en permanence, prêts à permettre des paiements bidirectionnels en leur sein.
Cette fonctionnalité a fait des HTLC une partie intégrante de la conception de canaux de paiement plus avancés, tels que ceux utilisés par Réseau Lightning.
Canaux de paiement sur d'autres blockchains
Comme vous le savez, Bitcoin n'est pas la seule blockchain de crypto-monnaie, et ce n'est pas la seule dans laquelle il est capable d'intégrer des protocoles de canal de paiement. Crypto-monnaies comme Litecoin o EthereumIls sont également capables d'utiliser ce type de système. Presque toutes les crypto-monnaies présentant des problèmes d'évolutivité ont recherché une méthode pour utiliser les canaux de paiement pour évoluer. La raison est simple: les canaux de paiement sont plus faciles à mettre en œuvre qu'une réécriture des protocoles éprouvés de ces blockchains.
Par exemple, dans Litecoin, nous pouvons utiliser le réseau Lightning aujourd'hui, et dans Ethereum, nous pouvons utiliser le réseau Raiden ou Réseau de liquidité, bien que ce dernier utilise un système de canaux de paiement différent.
Comme vous le voyez, Blockchain ne se repose pas, et l'innovation autour d'elle est incessante. Les canaux de paiement semblent être venus pour rester, et bien qu'ils soient encore à un stade précoce, ils visent à rester, surtout si nous voulons voir les crypto-monnaies de manière massive dans le monde entier.