Qu’est-ce que Segregated Witnesses (SegWit) ?

Par Kraken Learn team
11 min
26 nov. 2024

Guide du débutant de Bitcoin SegWit 💭

Segregated Witness (SegWit) est une mise à niveau apportée au code source de Bitcoin le 1er août 2017.

Bien que beaucoup aient apporté des améliorations à la blockchain Bitcoin, SegWit a rencontré une forte opposition qui a divisé la communauté. 

Au cœur du problème se trouvait un intérêt concurrent entre la rentabilité des mineurs et les développeurs de réseau cherchant à rendre Bitcoin moins cher et plus rapide à utiliser.

La tension a provoqué une zizanie au sein de la communauté, qui a culminé avec le premier soft fork activé par les utilisateurs du réseau et une scission hostile. La division a lancé une série de nouveaux projets dérivés de Bitcoin, dont Bitcoin Cash.

À ce jour, SegWit reste l’un des événements les plus controversés de l’histoire du Bitcoin. Mais il s’est également avéré être l’une de ses mises à jour les plus importantes pour la viabilité à long terme du protocole. 

Chaque année, de nombreux membres de la communauté Bitcoin célèbrent le 1er août comme le "jour de l’indépendance du Bitcoin". Cet événement marque l’occasion où la volonté du peuple a triomphé des intérêts centralisés des sociétés de minage de bitcoins établies.

Découvrons chacun de ces événements tels qu’ils se sont produits et dévoilons l’histoire de SegWit.

BTC icon
$70 764.00
+0,37 %
24 H
btc

Bitcoin avant SegWit ⏮️

Avant l’activation de SegWit, la capacité de bloc de Bitcoin était restée inchangée pendant de nombreuses années. La capacité de bloc fait référence au nombre maximal de transactions pouvant être enregistrées dans un bloc donné.

Lorsque Bitcoin a été lancé en 2009, son ou ses créateurs Satoshi Nakamoto n’ont défini aucun paramètre concernant la taille des blocs de Bitcoin.

Cependant, en 2010, Nakamoto a secrètement ajouté une limite de taille de bloc de 1 mégaoctet (Mo) sans l’approbation des autres contributeurs de Bitcoin.

Beaucoup pensaient que Nakamoto avait inclus la limite pour empêcher de futures attaques de déni de service distribué qui pourraient avoir un impact sur le réseau.

Ce plafonnement fixe de la capacité de bloc a eu pour effet indésirable de restreindre le potentiel d’évolutivité du bitcoin de plusieurs manières.

Débit faible et temps de transaction lent

Seul un nombre limité de transactions peut s’inscrire dans le bloc relativement petit de 1 Mo que Bitcoin a désormais adopté. Cette faible capacité signifiait que le réseau Bitcoin ne pouvait traiter qu’environ 2 à 3 transactions Bitcoin (BTC) par seconde, ce qui est très loin des réseaux de paiement numériques traditionnels qui peuvent traiter des dizaines de milliers de transactions par seconde.

En outre, pour qu’un bloc de transactions soit considéré comme valide dans le cadre du processus de minage de bitcoins, il doit recevoir six confirmations. En d’autres termes, six nouveaux blocs doivent être ajoutés à la blockchain après le bloc en question avant d’être finalisés. Avec un délai de bloc moyen de dix minutes, les confirmations de bloc de bitcoin prennent environ une heure.

À l’époque, lorsque seuls quelques cryptographes "cypherpunks" étaient au courant du bitcoin, ce n’était pas nécessairement un problème énorme. Mais si le réseau Bitcoin devait devenir un "système de monnaie électronique pair-à-pair" mondial, comme Satoshi l’envisageait dans le livre blanc Bitcoin, les choses devaient changer.

Frais élevés

Le faible débit de Bitcoin, limité par sa petite capacité de bloc, signifiait également que les frais étaient comparativement beaucoup plus élevés qu’ils ne le sont aujourd’hui.

Voici un moyen simple de comprendre ce problème. Imaginez que vous vous teniez dehors dans une foule de gens après avoir regardé un spectacle de théâtre. Tout le monde du théâtre veut prendre un taxi pour rentrer chez lui en même temps. S’il y a beaucoup de taxis dans le coin, il devrait être facile pour tout le monde de rentrer à la maison. Mais s’il n’y a que quelques taxis, les gens peuvent essayer de payer un prix plus élevé aux chauffeurs de taxi afin d’inciter le chauffeur à les ramener d’abord chez eux. En fonction de la demande, les prix des taxis pourraient grimper sensiblement au-dessus du taux normal.

Les frais de bitcoin fonctionnent selon les mêmes principes d’offre et de demande. Si beaucoup de gens veulent que leurs transactions soient traitées en même temps, certains peuvent choisir de payer plus de frais pour que leur transaction soit traitée plus rapidement par les mineurs. Pendant les périodes de forte utilisation du réseau Bitcoin, la congestion peut entraîner une concurrence entre les utilisateurs, ce qui peut entraîner une forte hausse des frais de transaction.

Malléabilité des transactions

Une autre nuance inhérente au fonctionnement des blocs Bitcoin a été connue sous le nom de malléabilité des transactions. Avant SegWit, les gens pouvaient modifier l’ID d’une transaction avant qu’elle ne reçoive suffisamment de confirmations sur la blockchain.

En prenant les informations relatives à une transaction spécifique et en les exécutant via une fonction de hachage, vous créez un identifiant de transaction. Pour en savoir plus sur les fonctions de hachage, consultez notre article Comment les crypto-monnaies utilisent-elles la cryptographie ?

Mais pour simplifier, vous pouvez considérer ces identifiants de transaction comme des empreintes numériques qui sont utilisées pour identifier et référencer les transactions sur la blockchain.

La modification de l’identifiant de transaction crée un hachage totalement nouveau qui peut parfois créer de la confusion pour le logiciel client de la blockchain. Tous les nœuds exécutent un logiciel client pour interagir avec la blockchain et remplir des rôles importants tels que la vérification des données.

Ce bug de malléabilité dans le code de Bitcoin a ouvert la porte à des attaques malveillantes. L’un des exemples les plus tristement célèbres d’attaque contre la malléabilité des transactions a été le piratage de la plateforme d’échange Mt. Gox en 2014, réputée pour être le plus grand piratage de Bitcoin de l’histoire.

Les experts rapportent qu’un pirate, ou un groupe de pirates, a vidé le portefeuille bitcoin de la plateforme d’échange Mt. Gox. Pour ce faire, ils ont notamment modifié l’identifiant de transaction de leurs retraits. 

L’attaque de malléabilité des transactions a donné l’impression que les retraits n’étaient pas confirmés sur la blockchain, alors qu’en réalité ils l’étaient.

Cette vulnérabilité, combinée à d’autres vecteurs d’attaque, a permis au(x) pirate(s) de siphonner plus de 840 000 BTC depuis la plateforme d’échange.

Quelles améliorations SegWit a-t-il apportées ? ⚙️

Pieter Wuille, contributeur de Bitcoin, a présenté la première mise à niveau SegWit lors d’un événement Bitcoin Hong Kong en 2015.

Sa solution était innovante sur trois fronts. SegWit a amélioré l’évolutivité de Bitcoin, supprimé la malléabilité et permis aux nœuds d’adopter la nouvelle structure de transaction. Le meilleur de tous, c’est que cela peut être mis en œuvre sans hard fork du réseau.

Signature numérique et informations de transaction distinctes

La proposition de Wuille a augmenté la capacité des blocs Bitcoin en "séparant" les données "témoins" d'un bloc et en les déplaçant vers la transaction CoinBase. Les transactions Coinbase sont les toutes premières transactions de chaque nouveau bloc Bitcoin. La transaction Coinbase est responsable de l’émission de crypto-monnaies nouvellement frappées en circulation en récompense du processus de minage de bitcoins.

Les mineurs qui réussissent à remporter le concours Proof-of-Work basé sur la cryptographie de Bitcoin gagnent ces tokens nouvellement frappés en tant que "récompenses de bloc".

Les données des témoins, également connues sous le nom de ScriptSig ou Script de déverrouillage, comprennent la signature numérique et les informations de clé publique nécessaires pour déverrouiller le bitcoin transféré. La mise à niveau SegWit a introduit un "champ témoin" distinct pour la partie ScriptSig d’une transaction.

En traitant les informations de signature numérique séparément du champ de saisie des transactions, il y avait plus d’espace pour les transactions dans chaque bloc.

Plus de transactions par bloc équivaut à des capacités de débit de transaction plus élevées. Ainsi, au lieu de 2-3 transactions par seconde, Bitcoin peut traiter entre 7 et 10 transactions SegWit par seconde. Une capacité accrue signifie également des frais réduits, car la blockchain Bitcoin peut traiter un volume plus élevé de transactions.

Malgré cette séparation, il est important de noter que les nœuds traitent toujours les données de transaction et les données des témoins on-chain. Aucune sidechain ou protocole de couche 2 n’est utilisé.

Poids du bloc

Avant SegWit, les mineurs mesuraient les blocs de bitcoins par taille (en octets). Ce système fonctionnait bien lorsque les blocs contenaient à la fois des données sur les témoins et les transactions, mais il rencontrait des problèmes lorsqu’ils étaient séparés.

Pour y remédier, la mise à niveau a introduit une mesure appelée poids de bloc pour gérer la taille des blocs.

Avec ce concept, chaque bloc de 1 mégaoctet se compose de 4 000 000 d’unités de poids (WU). Une pondération est attribuée à chaque transaction selon la formule suivante :

Taille de la transaction de base en octets (sans données témoins) * 3 + Taille totale de la transaction en octets.

En supprimant les données des champs témoins du calcul, les transactions SegWit ont une pondération beaucoup plus faible. En revanche, une transaction non SegWit contient toujours des données sur les témoins. Cela signifie que les transactions non SegWit pèsent toujours 4 fois plus que les transactions SegWit.

Ce concept augmente théoriquement la taille d’un bloc de bitcoins de 1 Mo à 4 Mo, si un bloc est presque entièrement composé de données de témoins. Cependant, cela n’est pas possible en pratique.

Le principal avantage du système pondéré est qu’il incite les mineurs à traiter des blocs contenant principalement des transactions SegWit. En supposant que les transactions SegWit entraînent les mêmes frais que les blocs hérités, un mineur peut traiter beaucoup plus de transactions SegWit par bloc. Plus ils traitent de transactions par bloc, plus ils gagnent de frais.

C'est gagnant pour les deux parties. C'est ce qu'on pourrait penser.

Fini les problèmes de malléabilité des transactions

Dans le cadre de la structure SegWit, l’identifiant de transaction haché ne contient que les informations de transaction, et non les informations du champ témoin.

Cette modification supprime la composante modifiable d’une transaction Bitcoin qui permettait auparavant des attaques de malléabilité.

Par conséquent, des solutions d’évolutivité secondaires telles que le Bitcoin Lightning Network sont devenues possibles.

 

Pourquoi SegWit a-t-il fait polémique ? 🤔

De nombreux membres de la communauté de développement ont estimé que SegWit n’était pas allé assez loin pour résoudre les problèmes d’évolutivité de Bitcoin.

Les principaux arguments contre l’activation de SegWit sont les suivants :

  • Le débit accru de Bitcoin, de 7 à 10 transactions par seconde, est encore loin d’être suffisant pour un système de paiement mondial décentralisé.
  • Les frais resteraient relativement élevés, ce qui rendrait des choses comme les microtransactions financièrement irréalisables.
  • Les mineurs peuvent toujours traiter les blocs de transaction hérités, ce qui signifie que la malléabilité reste une menace.
  • Il a ensuite été découvert que SegWit annulerait le mécanisme ASICBOOST de Bitmain, un exploit utilisé pour augmenter considérablement l’efficacité des plateformes de minage.

Environ un an après la proposition de Wuille, lui et d’autres développeurs Bitcoin Core, dont Eric Lombrozo, avaient préparé le code pour la mise en service de la prochaine mise à jour Bitcoin Core 0.13.1. La seule étape restante pour activer SegWit était pour les mineurs de commencer à traiter de nouveaux blocs SegWit. 

Pour cimenter sa mise en œuvre, plus de 95% de tous les mineurs de bitcoins devraient montrer qu’ils soutiennent SegWit dans les deux premières semaines suivant son lancement, un obstacle majeur compte tenu des circonstances à l’époque.

Fourchette souple activée par l’utilisateur

Il va sans dire que les grandes sociétés de minage telles que Bitmain étaient toujours mécontentes des changements proposés et refusaient de soutenir l’activation de SegWit.

Début 2017, un développeur utilisant le pseudonyme de "Shaolinfry" a évoqué la possibilité que les nœuds Bitcoin appliquent un "soft fork" dans une publication en ligne Bitcoin-dev. 

Jamais un fork logiciel activé par les utilisateurs n’avait été tenté sur le réseau Bitcoin auparavant, mais il permettrait aux développeurs de faire passer SegWit avec environ 51% de soutien des mineurs. Ceux qui refusaient de prendre en charge de nouveaux blocs risquaient de voir leurs blocs rejetés par les nœuds. La solution n’était pas sans risques. Si SegWit ne reçoit pas le soutien suffisant des mineurs, le résultat entraînera invariablement une scission de la chaîne.

Les opposants à SegWit ont proposé une autre mise à niveau du hard fork SegWit 2X. Un projet qui implémenterait SegWit et augmenterait la taille de bloc de Bitcoin à 2 Mo.

Contrairement à l’ancienne mise à niveau, SegWit 2X ne serait pas rétrocompatible avec les versions précédentes du client Bitcoin. Ces changements ont nécessité la mise à jour du logiciel des nœuds pour continuer à fonctionner sur le réseau.

SegWit et l’accord de New York 🗽

Les plus grandes entreprises du secteur se sont réunies lors du Consensus 2017 et ont signé collectivement un mémorandum appelé "Accord de New York". Ce document prévoyait la mise en service de SegWit à l'été et l'augmentation de la taille de bloc de Bitcoin à 2 Mo en novembre.

Avant novembre, Shaolinfry a rédigé deux propositions d’amélioration du bitcoin (BIP), BIP148 et BIP149. La première solution représentait une solution sûre et rapide ; la prise en charge du signal pour les blocs SegWit ou les nœuds rejettera vos blocs. Ce dernier allongeait l’horizon de temps pour l’intégration des mineurs, en fixant une date limite d’activation pour juillet de l’année suivante.

À l’approche de cette date, l’ingénieur de la garantie Bitmain, James Hillard, a proposé un nouveau BIP, le BIP91. Sa solution visait à rendre SegWit 2X et BIP148 compatibles entre eux. Pourquoi risquer une chaîne divisée en deux mises à jour SegWit concurrentes alors que vous pouvez les rendre compatibles ?

Le 1er août, un support de minage suffisant a confirmé l’activation de SegWit. La deuxième étape de l ' Accord de New York n ' a toutefois pas reçu le même appui.

L’impossibilité d’augmenter la taille de bloc de Bitcoin à 2 Mo a entraîné la formation de Bitcoin Cash (BCH), un nouveau projet dérivé de la blockchain Bitcoin.

$469.78
+1,42 %
24 H
bch

L’importance du jour de l’indépendance du Bitcoin

L’introduction de SegWit et la décision de la communauté de rejeter l’augmentation de la taille des blocs ont constitué un moment historique pour l’ensemble de la communauté Bitcoin.

SegWit a montré l’importance du consensus lorsqu’il s’agissait de modifier la blockchain Bitcoin, ainsi que l’étendue de la décentralisation du pouvoir offerte par le Bitcoin.

Aucune personne n’a pu prendre le contrôle du réseau et mener sa proposition à bien.

Au lieu de cela, la communauté a débattu, itéré et poursuivi le long processus de consensus en tant que groupe collectif — et non sur la direction d’une seule personne.

Commencer à acheter du bitcoin

Maintenant que vous savez tout sur SegWit, êtes-vous prêt à poursuivre votre expérience crypto et à acheter du Bitcoin ?

Consultez le centre d’apprentissage de Kraken et la page Comment acheter du bitcoin (BTC) et ouvrez un compte Kraken dès aujourd’hui.