Tout d’abord, il existe de nombreuses crypto-monnaies, et chacune d’entre elles a son propre règlement sur la façon dont elle fonctionne. Ce livre de règles est connu sous le nom de protocole. Vous vous demandez probablement ce que cela a à voir avec SegWit. Eh bien, comme tout programme informatique, les crypto-monnaies ont besoin d’être améliorées, et elles doivent être mises à jour. Au cours de ce processus, les bogues et les problèmes sont détectés et corrigés. L’année dernière, le protocole Bitcoin a été mis à jour avec nul autre que SegWit. Vous vous demandez toujours ce qu’est SegWit ? Nous sommes sur le point d’y arriver !
Alors, comment est né le SegWit ? Pieter Wuille a été le premier à présenter ce concept lors d’une conférence sur le bitcoin en 2015. Qui est Wuille ? Il est un développeur de Bitcoin et le co-fondateur de Blockstream. Lorsqu’il a évoqué cette idée pour la première fois, il a mentionné que SegWit pourrait être la réponse à une faille dans le protocole Bitcoin. Une telle réponse ou solution est connue comme un correctif dans le développement de logiciels. Il s’est inquiété de la malléabilité des transactions ou de la possibilité de voler des bitcoins aux utilisateurs en modifiant de minuscules éléments d’information sur les transactions. Cela a suscité beaucoup d’émoi et il a fallu attendre deux ans pour que le système soit opérationnel. Il a d’abord été mis en ligne en août 2017, et quelques mois plus tard, ce même correctif a été appliqué au protocole Litecoin. Litcoin était basé sur le protocole du Bitcoin et partageait la même faille gênante. Segwit a permis de résoudre le problème de la malléabilité des transactions et d’apporter quelques autres améliorations. Il y a encore ceux qui remettent en question la validité de Segwit dans le réseau Bitcoin, à tel point qu’ils sont partis créer leurs propres crypto-monnaies, mais c’est une autre histoire pour une autre fois. Pour comprendre ce que fait SegWit pour gérer la malléabilité des transactions, nous allons devoir discuter de la terminologie et des bases du fonctionnement des transactions Bitcoin.
Bitcoin est un réseau massif composé de milliers d’ordinateurs appelés « nœuds ». Chacun de ces nœuds détient un enregistrement de chaque transaction effectuée par Bitcoin. C’est ce qu’on appelle une blockchain. Le traitement des transactions est principalement effectué par un groupe de nœuds appelés « mineurs ». Une fois que les mineurs ont placé les nouvelles transactions dans un groupe appelé blocs, elles peuvent être ajoutées à la blockchain. Chacun de ces blocs contient 1 Mo d’informations sur les transactions. Ces blocs sont généralement traités en 10 minutes, mais cela peut prendre plus longtemps. Le bitcoin, quant à lui, peut traiter de 3 à 7 transactions par seconde. Comment fonctionnent exactement les transactions ? Essayons ce scénario.
Samantha aimerait envoyer 10 bitcoins à son ami Jack. Pour cela, elle a besoin de plusieurs éléments d’information. Elle doit connaître une adresse publique, similaire à une adresse électronique, et une clé privée qui fait office de mot de passe. Si tout le monde peut voir l’adresse publique, seuls Samantha et Jack peuvent voir la clé privée, et ils prouvent que ces adresses publiques appartiennent bien à deux de nos deux amis, Samantha et Jack.
Une fois qu’elle a cette information, Samantha diffuse une requête au réseau. Les mineurs traitent alors cette transaction et la chiffrent avec un code informatique appelé ID de transaction. La transaction est mise en attente et attend son tour d’être traitée. Cela peut prendre un certain temps, en fonction du montant des frais de transaction payés. Plus vous payez cher, plus le service est rapide. L’identifiant de la transaction est ensuite ajouté à tous les autres identifiants de la transaction appartenant à d’autres utilisateurs et crypté une fois de plus. Ce processus se poursuit jusqu’à ce que 1 Mo soit traité et qu’un bloc soit créé.
Ainsi, dans le premier exemple, tout s’est bien passé pour nos amis. Examinons ce qui pourrait se passer dans le même scénario si une malfaçon de transaction devait se produire. Disons que notre ami Jack, n’est pas un si bon ami que ça. Il pourrait facilement inciter Samantha à envoyer 20BTC au lieu de 10BTC en utilisant à son avantage la faille de malléabilité des transactions dans le protocole Bitcoin et en modifiant les données du témoin de son amie Samantha avant la confirmation de la transaction. L’identifiant de la transaction changerait, mais pas la transaction elle-même, et Samantha ne verrait plus que les 10 milliards de dollars d’origine. Lorsque le réseau confirme cette transaction trafiquée, elle est annulée par la transaction originale. Maintenant, Jack va appeler Samantha et se plaindre qu’il n’a pas encore reçu ces 10 milliards, alors qu’il les a reçus. Samantha, en bonne amie qu’elle est, regarde et constate que sa demande initiale n’a pas été traitée. Elle paiera alors des frais de transaction plus élevés pour s’en assurer. Puis il est traité, et le vieux Jacky Boy reçoit encore 10 milliards de dollars. Samantha et les mineurs sont laissés dans l’ignorance car ils n’ont aucune idée de ce qui se passe, car une fois qu’une transaction est ajoutée à la blockchain, elle ne peut être ni modifiée ni supprimée.
C’est là que SegWit entre en jeu. Pour mettre fin à l’utilisation des données du témoin dans la modification des informations de la transaction, Pieter Wuille a suggéré de les supprimer complètement de la transaction. C’est ainsi que SegWit est né et a obtenu son nom. Cela signifie un témoin ségrégué. Puisque ségréguer signifie supprimer, c’est ce que fait SegWit avec les données des témoins. Un témoin séparé crée une sidechain. Dans ces chaînes latérales, les données des témoins sont conservées à l’écart de la chaîne principale. Cela garantit que des gens comme Jack ne peuvent pas changer les identifiants de transaction. Une autre caractéristique intéressante du Bitcoin segwit est qu’il est rétrocompatible. Cela signifie que les nœuds qui n’ont pas été mis à jour peuvent toujours fonctionner avec les nœuds qui l’ont été. Ce point est considéré comme crucial. Il ne devrait jamais y avoir de mise à jour rompant la rétrocompatibilité. Une telle « mise à jour » est un hard-fork et nécessiterait de tuer la chaîne principale.