Racine de Merkle
La racine de Merkle (Merkle root) est le hash sommet d'un arbre de Merkle. Elle figure dans l'en-tête de bloc et résume toutes les transactions du bloc en 32 octets. Modifier une seule transaction modifie la racine. C'est la pierre angulaire de l'intégrité des blocs.
Définition et origine
La racine de Merkle est le sommet d'un arbre de hachage binaire (Merkle tree), inventé par Ralph Merkle en 1979 dans le cadre des signatures digitales. Bitcoin l'utilise depuis le bloc genèse pour résumer l'intégralité des transactions d'un bloc en exactement 32 octets, qui sont eux-mêmes inclus dans l'en-tête de bloc de 80 octets soumis au proof of work.
Comment elle est calculée
L'algorithme procède par paires :
- On hash chaque transaction individuellement :
H_i = SHA256(SHA256(tx_i)). - On concatène les hashes deux à deux et on rehash :
H_{i,j} = SHA256(SHA256(H_i || H_j)). - Si le nombre d'éléments est impair, le dernier est dupliqué (une particularité Bitcoin qui a causé la vulnérabilité CVE-2012-2459).
- On répète jusqu'à obtenir un unique hash de 32 octets : la racine de Merkle.
Root
/ \
H_AB H_CD
/ \ / \
HA HB HC HD
| | | |
A B C D <- transactions
Pourquoi c'est crucial
La racine de Merkle assure trois propriétés essentielles :
- Intégrité : modifier une seule transaction change la racine, donc l'en-tête, donc invalide le proof of work.
- Preuves compactes : prouver qu'une transaction est dans un bloc demande seulement
log₂(N)hashes (12 pour un bloc de 4 000 transactions) — c'est la base du SPV décrit dans le whitepaper section 8. - Vérification légère : les clients SPV téléchargent les en-têtes seuls et demandent des Merkle proofs ponctuelles, sans avoir besoin de la chaîne entière.
Détails Bitcoin spécifiques
| Élément | Valeur |
|---------|--------|
| Algorithme | Double SHA-256 |
| Taille | 32 octets |
| Position | Octets 36-67 de l'en-tête |
| Bloc genèse | 4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b |
À retenir
La racine de Merkle est ce qui transforme des millions de transactions en un seul nombre infalsifiable. Sans elle, ni le minage, ni le SPV, ni la vérification du contenu d'un bloc ne seraient envisageables à l'échelle de Bitcoin.
Termes lies
- Arbre de MerkleUn arbre de Merkle est une structure de données où chaque nœud non-terminal est le hash de ses enfants. Bitcoin l'utilise pour résumer toutes les transactions d'un bloc en une seule racine. Il permet aux nœuds légers (SPV) de vérifier qu'une transaction est dans un bloc sans tout télécharger. C'est aussi la base de Taproot (MAST).
- En-tête de blocL'en-tête de bloc est la partie résumée d'un bloc Bitcoin (80 octets). Il contient la version, le hash du bloc précédent, la racine de Merkle, l'horodatage, les nBits (cible) et le nonce. C'est lui que les mineurs hachent pour produire la preuve de travail. Les nœuds SPV ne synchronisent que les en-têtes.
- BlocUn bloc est un ensemble de transactions Bitcoin validées et regroupées par un mineur. Chaque bloc contient un en-tête, un nonce et une référence au bloc précédent (hash), formant ainsi la chaîne. Un bloc est ajouté en moyenne toutes les 10 minutes via la preuve de travail. Sa taille est limitée à 4 millions de weight units (~1-4 MB).
Glossaire inspire du dictionnaire de Loic Morel sur Pandul.fr.