Aller au contenu principal
Transactions

WTXID

Le WTXID est l'identifiant complet d'une transaction SegWit, incluant les données witness. Différent du TXID pour les transactions SegWit. Permet d'éviter la malléabilité historique. Utilisé pour l'arbre de Merkle de la coinbase.

Définition

Le WTXID (Witness Transaction ID) est un identifiant de 32 bytes calculé sur l'intégralité d'une transaction Bitcoin, y compris les données witness (signatures, scripts révélés). Il s'oppose au TXID classique, qui exclut volontairement la zone witness depuis l'introduction de SegWit en 2017. Pour une transaction pre-SegWit (legacy), WTXID == TXID. Pour une transaction SegWit, ils diffèrent.

Pourquoi cette distinction

Avant SegWit, les transactions souffraient du problème de malléabilité : un attaquant pouvait modifier la signature (sans en changer la validité cryptographique) et donc faire muter le TXID avant confirmation. Cela cassait les protocoles construits sur Bitcoin, notamment Lightning. SegWit a déplacé les signatures hors du domaine de hashing du TXID. Conséquence : le TXID est désormais figé dès la création, ce qui rend Lightning possible. Mais il fallait quand même un identifiant qui couvre TOUT, pour la cohérence des blocs et le gossip réseau : c'est le WTXID.

Calcul

| Identifiant | Inclut | |---|---| | TXID | Version, inputs (sans witness), outputs, locktime | | WTXID | Version, marker, flag, inputs, witness, outputs, locktime |

Les deux sont des doubles SHA-256 sérialisés.

Usage dans la blockchain

Chaque bloc contient deux arbres de Merkle :

  1. Arbre TXID classique, dont la racine est dans le block header (compatible legacy).
  2. Arbre WTXID, dont la racine est inscrite dans une sortie de la coinbase sous forme de commitment (OP_RETURN avec un préfixe spécifique). Ce commitment permet aux clients SegWit de vérifier toutes les witness sans avoir besoin de hard fork.

La coinbase a un WTXID spécial fixé à 0x00...00 par convention, car au moment de calculer le commitment, on ne peut pas se référencer soi-même.

Cas d'usage

  • wtxid relay (BIP-339, déployé en 2021 dans Bitcoin Core 0.21) : les nœuds annoncent et déduplicent les transactions par WTXID plutôt que TXID, réduisant le bandwidth et évitant certaines attaques de pinning.
  • Détection de pénalité Lightning plus fiable.

À retenir

Le WTXID est le hash "vrai et complet" d'une transaction. Le TXID, lui, est volontairement amputé pour la stabilité. Les deux coexistent depuis SegWit, et chacun a son usage : TXID pour les références externes stables, WTXID pour la cohérence réseau et la vérification cryptographique exhaustive.

Termes lies

← Retour au glossaire complet

Glossaire inspire du dictionnaire de Loic Morel sur Pandul.fr.