Plan du site  
pixel
pixel

Articles - Étudiants SUPINFO

Introduction à Segregated Witness ( Segwit )

Par Anis BENZIANE Publié le 12/08/2019 à 22:19:38 Noter cet article:
(0 votes)
Avis favorable du comité de lecture

Introduction

Si vous avez fait un tour dans le monde de la crypto-monnaie au cours de l'année 2017, vous avez dû remarquer les frais insensés sur Bitcoin en décembre 2017 et en janvier 2018. L'adoption de Bitcoin a augmenté en fonction de son prix et donc le nombre de transactions effectuées par jour a augmenté. Il y a eu un moment où les coûts de transaction d'une journée en USD ont atteint 22 millions de dollars. Pour la perspective, il était a mis 2018 en moyenne à 200 mille dollars, c'est environ 99% de moins.

Alors que le prix de Bitcoin et le bear market de la crypto-monnaie ont eu un impact sur ce chiffre, ces deux dernières années, nous avons assisté à un effort massif de la communauté Bitcoin pour augmenter le nombre de transactions par seconde que la blockchain pouvait gérer. Pour atteindre cet objectif, deux stratégies ont été proposées, l'une d'entre elles étant l'effort de Bitcoin Core pour introduire SegWit, abréviation de "Segregated Witness" qui a été activé par un Soft Fork (USAF : User Activated Soft Fork) activée par l'utilisateur et l'autre par le Hard Fork de Bitcoin Cash. Pour mieux expliquer ceci, nous devons aborder les détails techniques de base simples de la blockchain Bitcoin.

Blockchain

Bitcoin fonctionne sur une blockchain, c'est une série de blocs reliés les uns aux autres, connecté les uns aux autres en utilisant son hachage pour faire un nouveau hachage. Dans le bloc il existe une série de transactions, chaque transaction contient une liste d'inputs et d'outputs ( entrées et sorties ), maintenant l'une des règles fondamentales du consensus est que chaque bloc, incluant toutes les données transaction, blocs et méta données, ne peut dépasser 1MB dans sa taille. C'est l'une des principales limitations qui ont empêché Bitcoin de s'habituer à l'augmentation massive des transactions, puisqu'il n'y a qu'un seul bloc miné par 10 minutes, le nombre de transactions "sur la liste d'attente" dépassant de loin le nombre de transactions qui pourraient être incluses dans un bloc. Une réponse simple à cela serait simplement d'augmenter la limite de taille des blocs, et c'est la solution proposée par Bitcoin Cash, mais cette solution nécessitait ce qu'on appelle une Hard Fork, un Hard Fork est un changement dans le protocole Bitcoin qui n'est pas rétrocompatible, un bloc après la Hard Fork peut être considéré valide même si avant le Fork il ne l'était pas, donc une des nouvelles modifications du protocole Bitcoin Cash est de rendre le bloc plus grand.

Le bloc le plus élevé enregistré était de 4,7 Mo, bien que la limite soit beaucoup plus élevée que cela. Mais l'un des inconvénients de Bitcoin Cash est qu'il a été créé dans des circonstances politiques qui n'étaient pas favorables à la communauté Bitcoin.

L'autre solution était user activated soft fork SegWit de Bitcoin Core, pour parler de SegWit nous devons d'abord expliquer un peu la structure d'un bloc, nous allons nous concentrer sur la partie transactions du bloc. Chaque transaction d'un bloc est représentée par la structure suivante :

Table 1. 

Field Name Size Description
Numéro de version 4 bytes Presque toujours un entier de 1
Compteur d'Input 1 - 9 Bytes Nombre entier positif qui compte le nombre d'inputs
Liste d'inputs Taille variable Pour chaque input il y a le hash de la transaction précédente, l'index d'output, un entier positif pour la taille du script, le script et un numéro de séquence qui est presque toujours 0xffffffffffffff
Compteur d'Output 1 - 9 bytes Nombre entier positif qui compte le nombre d'output
Liste d'Outputs Variable Pour chaque output il y a la valeur d'output en Satoshis, un entier positif pour la taille du script et le script lui-même.
Délai de blocage de la transaction 4 Bytes Ceci rend les outputs utilisables après une certaine hauteur de bloc ou un certain horodatage.

En regardant maintenant la transaction, vous remarquerez que la transaction n'a pas une grande taille , c'est un maximum de 26 octets + les octets pour la liste des outputs et inputs, la liste des inputs et outputs prend habituellement la plupart du bloc, et le composant principal dans chaque transaction est le script d'input ( aussi appelé unlocking scripts, scriptSig ou witness). Un script est une liste d'instructions qui définissent comment la prochaine personne va dépenser les bitcoins qu'elle a reçus, le script "déverrouille" le bitcoin pour dépenser quand cette personne peut fournir la clé publique de l'adresse qui a reçu les bitcoins et une signature qui démontre qu'elle possède la clé privée correspondante. Le terme "témoin" ( witness en anglais ) est un terme plus général pour un "unlocking scripts" ou "scriptSig".

Les scripts d'input prennent habituellement la plus grande taille dans les blocs Bitcoin et les créateurs derrière SegWit ont donc suggéré qu'ils pourraient simplement retirer les scripts (witness data : données témoins) de la liste des inputs et les placer ailleurs (ségrégées) au lieu de les placer dans la liste des outputs et inputs.

Les witness data représente un autre champ dans le bloc Bitcoin, et lorsque la taille du bloc est calculée, le witness n'est pas inclus dans la taille, de sorte que nous pouvons avoir 1 MB plein d'inputs, d'outputs et d'autres métadonnées de bloc, sans les scripts d'input ( witness ) nécessaires pour vérifier et débloquer les transactions. Cela a considérablement augmenté la taille autorisée pour les transactions elles-mêmes, une taille maximale de 4MB a été appliquée sur le bloc complet, y compris la taille des witness data.

SegWit n'a pas seulement augmenté le nombre de transactions qui peuvent être relayées par seconde, il a également travaillé sur plusieurs problèmes comme la malléabilité des transactions, la simplification des logiciels de portefeuille et la mise en place du réseau Lightning.

Malléabilité des transactions

La malléabilité des transactions est une question qui est restée en suspens chez Bitcoin depuis sa naissance, pour expliquer ce qu'est la malléabilité des transactions, prenons un exemple. Tout d'abord, nous devons savoir que toute transaction dans Bitcoin a un identifiant de transaction "txid", c'est un double hachage de la version, des inputs, des outputs et du temps de verrouillage de cette transaction.

Disons que j'ai reçu un service de Steve et que je dois envoyer 0.5 btc pour ce service, donc je vais dans mon portefeuille, écrire l'adresse de Steve et cliquer sur envoyer. Ma transaction n'est toujours pas incluse dans aucun bloc ; Steve et moi attendons juste qu'elle soit incluse et confirmée. Pendant que nous attendons, Steve a fait une copie de cette transaction et a changé un peu le script, pas quelque chose qui aura un effet sur le résultat du script, juste un petit changement qui à son tour permet de changer l'identifiant de la transaction, comme le script faisait partie de la chaîne qui était haché pour produire l'identifiant de transaction, Steve diffuse sa transaction copiée et a réussi à l'inclure dans un bloc avant ma transaction, mon portefeuille me dira que ma transaction avait échoué car mes Bitcoins avaient déjà été dépensés. Pensant que c'est une erreur de ma part, j'envoie de nouveau l'argent à Steve, et Steve a fini par recevoir le double du montant qu'il était censé recevoir.

Maintenant avec SegWit, l'input script (witness) a été séparé de la liste des transactions dans les witness data, et les transactions ont maintenant deux identificateurs, txid et wtxid. Ainsi, lorsque nous prenons un hachage de la transaction pour calculer le "txid", nous n'incluons pas le script d'input (witness data), nous n'utilisons que les autres données dont nous savons qu'elles ne peuvent être trafiquées. Cette validation simplifiée des transactions logicielles du logiciel de porte-monnaie permet de s'appuyer sur l'immuabilité du numéro de transaction et de mettre en place le Lightning Network. Je vais parler du Lightning Network dans un prochain article, alors restez à l'écoute.

Possibilités futures

Segwit n'a pas seulement activé Lightning, il a ouvert la voie à de nombreux efforts de recherche pour être mis en œuvre sur la Blockchain Bitcoin, l'un de ces efforts est MAST ou Merkelized Abstract Syntax Trees . Cela permettra à Bitcoin de rédiger des contrats plus intelligents. Il sera possible de le faire en changeant la version du langage de script, ce qui permettra de réduire la taille des transactions, d'accroître la protection de la vie privée et d'élargir les contrats intelligents. Une autre est Schnorr Signatures, cette technologie change le schéma de données de signature, elle change l'algorithme de signature, les signatures Schnorr ont une taille maximale inférieure à celle de l'ECDSA, algorithme de signature numérique utilisé dans Bitcoin. En plus de réduire considérablement la taille de la signature, les signatures Schnorr peuvent aider dans les contrats intelligents et les portefeuilles à signatures multiples. SegWit peut également aider à réduire le Unspent Transaction Output Set, non dépensées, ce qui aidera les mineurs et les full node car cela réduira considérablement l'espace nécessaire pour exécuter une full node.

Segwit Upgrade

Segwit a été appliqué comme une soft fork, à l'opposé de la hard fork, un soft fork applique un changement de protocole rétrocompatible, ce qui signifie qu'un portefeuille exécutant l'ancien protocole Bitcoin verra toujours les transactions SegWit comme valables, il ne les comprendra pas correctement, mais ne les rejettera pas.

Le soft fork a été appliquée en incluant un script d'input comme d'habitude mais ayant sa valeur nulle, de cette façon les anciennes node verraient une transaction syntaxiquement fine et les nouvelles node obtiendraient le bloc et demanderaient alors les zitness data. L'activation de SegWit ne s'est produite qu'après que 95% des blocs aient signalé qu'ils la prendraient en charge si elle était mise en œuvre, actuellement environ 33% de toutes les transactions Bitcoin sont des transactions SegWit et les transactions Bitcoin ont eu des frais moyens au cours des dernières semaines qui sont les plus bas depuis deux ans. Au fur et à mesure que SegWit sera de plus en plus adopté, nous pourrions probablement assister à des microtransactions beaucoup moins chères apportées par le Lightning Network. L'UASF de SegWit et Bitcoin Cash ont connu une certaine agitation politique, mais cela montre que la communauté derrière Bitcoin a réussi à trouver un consensus et travaille toujours dur pour trouver une meilleure solution de paiement pour le monde.

A propos de SUPINFO | Contacts & adresses | Enseigner à SUPINFO | Presse | Conditions d'utilisation & Copyright | Respect de la vie privée | Investir
Logo de la société Cisco, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société IBM, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sun-Oracle, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Apple, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sybase, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Novell, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Intel, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Accenture, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société SAP, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Prometric, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Toeic, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo du IT Academy Program par Microsoft, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management

SUPINFO International University
Ecole d'Informatique - IT School
École Supérieure d'Informatique de Paris, leader en France
La Grande Ecole de l'informatique, du numérique et du management
Fondée en 1965, reconnue par l'État. Titre Bac+5 certifié au niveau I.
SUPINFO International University is globally operated by EDUCINVEST Belgium - Avenue Louise, 534 - 1050 Brussels