Segregated Witness est une proposition (BIP-141) conçue pour résoudre le problème de malléabilité des transactions de la blockchain Bitcoin.
1. Qu'est-ce que la malléabilité des transactions ?
Autrement dit, le contenu de la transaction n'a pas changé, mais l'ID de la transaction a changé. En raison de la symétrie de la courbe elliptique de l'algorithme de signature ECDSA utilisé dans le réseau Bitcoin, deux signatures valides peuvent toujours être calculées pour signer une transaction, et ces deux signatures valides peuvent également être calculées l'une à partir de l'autre. Après avoir diffusé une transaction, publiez une transaction avec le même contenu en utilisant des signatures différentes. Les deux transactions ont le même contenu mais des identifiants de transaction différents, ce qui induira en erreur les participants au réseau.
2. L'extension de transaction modifie la signature, mais le contenu de la transaction reste inchangé. Au final, le réseau confirmera toujours le contenu de la transaction. La deuxième signature est différente mais le contenu de la transaction est le même et sera invalidé. sur la sécurité des transactions. En fait, le réseau confirmera également le contenu de la transaction. Il n'y aura pas de problème de double dépense (le même argent est dépensé deux fois), alors quel sera l'impact réel de l'extension de la transaction ?
En fait, cela est principalement dû au fait que de nombreux services Bitcoin (tels que les échanges, les services d’automatisation tiers en chaîne) s’appuient sur les identifiants de transaction comme identifiants de transactions. Un exemple est que Little A a lancé un retrait de devises de l'échange, puis la transaction de retrait de devises a été diffusée avant que sa transaction ne soit vérifiée par le nœud, Little A a mené une attaque évolutive, qui s'est avérée être la nouvelle transaction générée par. l'attaque. La transaction est confirmée en premier, et tandis que la nouvelle transaction lui permettra d'obtenir des pièces, l'ancienne transaction sera rejetée par le réseau. Cependant, Little A s'est plaint à la bourse de ne pas avoir reçu les pièces. La bourse a constaté que la transaction précédente de transfert d'argent à Little A avait effectivement été rejetée, elle lui a donc remis un autre montant de pièces.
3. Il semble que le problème soit en réalité dû au fait que l'ID de transaction est utilisé comme identifiant de transaction. Est-il possible de ne pas utiliser l'ID de transaction comme identifiant de transaction ?
Analyser le contenu du bloc BTC, par exemple en utilisant la hauteur du bloc + la position de la transaction pour déterminer l'identité ? Ou déterminer vous-même l'identité en fonction du hachage d'entrée et de sortie de la transaction ? Ceux-ci peuvent en effet être utilisés comme identifiants uniques, mais ils sont soit inefficaces en pratique, soit moins pratiques et sécurisés que les identifiants de transaction (les identifiants de transaction seront directement enregistrés dans le contenu du bloc et ne changeront jamais après avoir été téléchargés dans la chaîne).
4. Comment segwit résout-il le problème de l’évolutivité des transactions ?
Segwit résout efficacement ce problème en séparant les données de signature de transaction (témoin) du bloc, et la modification de la signature n'affectera plus l'ID de transaction. Dans le même temps, segwit réduit également dans une certaine mesure la taille des blocs et améliore les capacités de traitement des transactions (par exemple, spv peut traiter plus de contenu de transaction avec la même bande passante).

5. Comment ce problème a-t-il été résolu avant le segwit ?
Après l'échec d'une transaction, vous devez signaler un message d'erreur basé sur l'échec de la transaction sur la blockchain et vérifier si une telle transaction a été initiée sur le réseau dans un court laps de temps pour déterminer si elle a subi une attaque d'extension de transaction. Dans le même temps, vous devez également essayer d’éviter de faire de la logique sur des transactions non confirmées ou confirmées en quelques blocs. Mais ces méthodes ne résolvent pas fondamentalement le problème.
