# SegWit

Segregated Witness, ou SegWit, est le nom utilisé pour un changement de soft fork implémenté dans le format de transaction de Bitcoin.
Le titre officiel « Segregated Witness (Consensus layer) » portait le numéro de proposition d'amélioration Bitcoin BIP141. L'objectif déclaré était d'empêcher la malléabilité non intentionnelle des transactions bitcoin, d'autoriser la transmission facultative de données et de contourner certaines restrictions de protocole (telles que la limite de taille de bloc ) avec un soft fork.
Il visait également à atténuer un problème de limitation de taille de blockchain qui réduit la vitesse de transaction bitcoin. Pour ce faire, il divise la transaction en deux segments, supprime la signature de déverrouillage (données « témoin ») de la partie d'origine et l'ajoute en tant que structure distincte à la fin. La section d'origine continue à contenir les données de l'expéditeur et du destinataire, et la nouvelle structure « témoin » contiendrait des scripts et des signatures. Le segment de données d'origine serait compté normalement, mais le segment « témoin » sera, en effet, compté comme un quart de sa taille réelle.

## Histoire
### Limite de taille de bloc

Bitcoin est une crypto-monnaie, une forme de monnaie utilisant la cryptographie pour sécuriser les transactions.
Chaque enregistrement d'une unité de bitcoins est appelé un « bloc », et tous les blocs sont liés séquentiellement en utilisant un hachage cryptographique sur le bloc précédent et en stockant sa sortie dans le suivant. Cela forme une chaîne de blocs, ou une blockchain.
Chaque bloc contient des informations sur qui envoie et reçoit une unité donnée de bitcoin (une transaction), ainsi que la signature qui approuve chaque transaction. À l'origine, il n'y avait pas de limite à la taille des blocs. Cependant, cela a permis à des acteurs malveillants de créer de fausses données « bloquées » qui étaient très longues comme une forme d'attaque par déni de service (attaque DoS). Ces faux blocs seraient détectés, mais cela prendrait beaucoup de temps, ce qui ralentirait tout le système.

### Scalabilité et malléabilité

La conception actuelle de la blockchain bitcoin est considérée comme présentant deux lacunes.

#### Évolutivité

Un nouveau bloc est ajouté à la chaîne à des intervalles aléatoires d'une moyenne de conception de 10 minutes (la preuve de travail provoque ce délai). Avec la limite de taille de bloc, cela limite le nombre de transactions pouvant être traitées dans un temps donné. Certains sites contournent ce problème en utilisant des "paiements hors chaîne" effectuant des transactions sans les écrire dans la blockchain, ce qui implique divers compromis concernant la confiance et la finalité des transactions.
D'autres ont proposé des changements au bitcoin qui réformeraient le format de la blockchain d'une manière rétro-incompatible. Par exemple, FlexTrans (Flexible Transactions) réduirait la taille des transactions en changeant la façon dont elles sont décrites en un système de « balise », permettant plus de transactions par bloc. Ceci est incompatible avec les systèmes qui ne sont pas mis à jours.

### Témoins séparés comme solution

Les données de signature appelées le « témoin » seraient séparées de l'enregistrement de l'arbre de Merkle indiquant qui envoie ou reçoit les bitcoins. Les données témoins sont déplacées à la fin, et chaque octet ne compterait que pour un quart d'unité.
Il traite également la malléabilité des signatures, en sérialisant les signatures séparément du reste des données de transaction, de sorte que l'ID de transaction ne soit plus malléable.

## Activation

Le 21 juillet 2017, les mineurs de bitcoins ont bloqué une mise à niveau logicielle appelée Bitcoin Improvement Proposal (BIP) 91, ce qui signifie que la mise à niveau de Segregated Witness a été activée au bloc 477 120.
SegWit atténue le problème de mise à l'échelle de deux manières :
* SegWit résout la malléabilité des transactions, permettant ainsi au Lightning Network, un réseau superposé de canaux de micropaiement, résolvant hypothétiquement le problème de mise à l'échelle en permettant à un nombre pratiquement illimité de transactions instantanées et peu coûteuses de se produire « hors chaîne ».
* SegWit introduit une nouvelle métrique pour mesurer l'impact des transactions et des blocs sur le réseau : le poids (weight). Le poids est défini par : poids = 4 × taille de base + taille du témoin. Cela signifie, qu'en théorie la nouvelle taille maximale d'un bloc est de 4 Mo, bien qu'en pratique cela est pratiquement impossible. Cette augmentation de la taille des blocs permet d'améliorer la scalabilité de bitcoin en permettant plus de transactions par bloc.
Le 8 août, une autre étape a été franchie lorsque 100 % des pools de minage de bitcoins ont signalé la prise en charge de SegWit, bien que SegWit ne soit pas entièrement activé avant le 21 août au plus tôt, après quoi les mineurs commenceraient à rejeter les blocs qui ne prennent pas en charge SegWit.
Initialement, la plupart des transactions bitcoin n'ont pas pu utiliser la mise à niveau.
Segregated Witness a été activé le 24 août 2017. Le prix du bitcoin a augmenté de près de 50 % dans la semaine suivant l'activation de SegWit. Le 21 juillet 2017, le bitcoin s'échangeait à 2 748 dollars, en hausse de 52 % par rapport aux 1 835 dollars du 14 juillet 2017.
Au cours de la première semaine d'octobre, la proportion de transactions sur le réseau utilisant SegWit est passée de 7 % à 10 %, indiquant une augmentation du taux d'utilisation.
Un petit groupe de mineurs de bitcoins principalement basés en Chine, qui n'étaient pas satisfaits des plans d'amélioration SegWit proposés par bitcoin, a avancé des plans alternatifs pour une scission qui a créé Bitcoin Cash.
En février 2018, les transactions SegWit dépassaient 30 %.

### SegWit2x

Le témoin séparé (BIP141) ne doit pas être confondu avec SegWit2x (SegWit2Mb). En mai 2017, Digital Currency Group (à ne pas confondre avec la Digital Currency Initiative du MIT Media Lab) a annoncé qu'il avait proposé une proposition, appelée SegWit2x (« l'accord de New York »), activant Segregated Witness à 80% seuil du taux de hachage bitcoin total, signalisation au bit 4 ; et l'activation d'une limite de taille de bloc de 2 Mo dans les six mois avec une prise en charge supérieure à 80 % du taux de hachage bitcoin total.
À la mi-2017, bien que la proposition SegWit2x bénéficiait d'un soutien supérieur à 90% du hashrate, cependant, la proposition SegWit2x a été controversée en ce que le travail sur le projet est limité à un groupe de développeurs sur invitation uniquement. À la mi-juillet 2017, il est devenu évident que les mineurs soutenaient la mise en œuvre de la partie Segwit de l'accord avant l' UASF du 1er août 2017, tentant ainsi d'éviter le risque d'un hard fork pour le réseau bitcoin.
Le 8 novembre 2017, les développeurs de SegWit2x ont annoncé que le hard fork prévu vers le 16 novembre 2017 avait été annulé faute de consensus.

## BIP associés

* BIP141 Segregated Witness (Consensus layer) – activé le 24 août 2017
* BIP143 Transaction Signature Verification for Version 0 Witness Program – activé le 24 août 2017
* BIP144 Segregated Witness (Peer Services) – activé le 24 août 2017
* BIP148 Activation obligatoire du déploiement de segwit - activé (a mandaté l'activation de BIP141, 143, 144)