Définition
Arbre de Merkle : définition
Un arbre de Merkle est une structure de données qui hache des éléments deux à deux jusqu'à obtenir une empreinte unique, la racine de Merkle, permettant de prouver qu'un élément appartient à un ensemble sans révéler tout l'ensemble.
Thème : Les bases de la crypto
On commence par calculer le hachage de chaque élément, par exemple chaque transaction d'un bloc : ce sont les feuilles. On hache ensuite ces empreintes par paires, puis les résultats par paires, et ainsi de suite jusqu'à un seul hachage au sommet, la racine. Modifier un seul élément change la racine, ce qui rend toute altération détectable. La racine sert ainsi d'empreinte compacte de tout l'ensemble.
L'intérêt majeur est la preuve d'inclusion. Pour montrer qu'une transaction figure dans un bloc, il suffit de fournir les hachages voisins sur le chemin qui mène à la racine. La taille de cette preuve croît de façon logarithmique : quelques dizaines de hachages suffisent même pour un très grand ensemble. Sur Bitcoin, la racine de Merkle des transactions est inscrite dans l'en-tête de chaque bloc, ce qui permet aux clients légers de vérifier un paiement sans télécharger le bloc entier. Le procédé sert aussi aux listes d'airdrops, aux allowlists de NFT et aux preuves de réserves des plateformes d'échange.
Un exemple concret
Imaginons qu'un projet veuille distribuer des tokens à 100 000 adresses. Au lieu d'enregistrer toute la liste dans son contrat, il n'y stocke que la racine de Merkle. Lorsque Inès réclame sa part, l'interface lui fournit une courte preuve composée de quelques hachages. Le contrat recalcule la racine à partir de son adresse et de cette preuve, et valide la réclamation si le résultat correspond.
Les risques à connaître
Une implémentation maladroite peut créer des failles, par exemple si un nœud intermédiaire peut être présenté comme une feuille. Bitcoin a connu une vulnérabilité de ce type liée à la duplication du dernier élément lorsque leur nombre est impair. La preuve garantit l'inclusion mais pas la justesse des données d'origine.
Questions fréquentes sur Arbre de Merkle
À quoi sert la racine de Merkle dans un bloc Bitcoin ?
Elle résume toutes les transactions du bloc dans l'en-tête. Toute modification d'une transaction changerait la racine, donc le hachage du bloc, ce qui la rendrait immédiatement détectable.
Une preuve de Merkle révèle-t-elle les autres éléments de la liste ?
Non, elle ne contient que des hachages intermédiaires, qui ne permettent pas de reconstituer les autres éléments.