À retenir

  • Un arbre de Merkle est une structure de données cryptographique qui organise les données en paires de hachages, les combinant vers le haut jusqu’à ce qu’un seul hachage — la racine de Merkle — représente l’ensemble de l’ensemble de données.

  • Les racines de Merkle permettent aux réseaux de blockchain de vérifier si une transaction est incluse dans un bloc sans télécharger l’intégralité du bloc, grâce à une preuve de Merkle compacte dont la taille augmente logarithmiquement avec le nombre de transactions.

  • Bitcoin intègre la racine de Merkle dans chaque en-tête de bloc, ce qui permet à des clients légers de vérifier les transactions en utilisant uniquement les en-têtes de bloc, plutôt que l’ensemble de la blockchain.

  • Ethereum utilise un Merkle Patricia Trie plus complexe pour stocker les soldes des comptes et l’état des contrats intelligents, ce qui rend possibles les preuves d’état pour les clients légers et les rollups de niveau 2.

BInance Academy courses banner

Introduction

Les arbres de Merkle font partie des idées fondamentales qui rendent les systèmes blockchain efficaces et vérifiables à grande échelle. Ils permettent aux réseaux de résumer des ensembles de données entiers dans une seule empreinte cryptographique, tout en rendant possible la preuve qu’une transaction spécifique ou qu’une information donnée est incluse. Pour comprendre pourquoi les arbres de Merkle comptent dans la conception de la blockchain, examinons comment ils fonctionnent, comment différents réseaux les utilisent, et comment des structures plus récentes comme les arbres Verkle pourraient les améliorer à l’avenir.

Comment fonctionnent les arbres de Merkle

Un arbre de Merkle, nommé d’après le chercheur en informatique Ralph Merkle qui a breveté ce concept en 1979, est une structure de données utilisée pour résumer et vérifier efficacement l’intégrité de grands ensembles de données. Dans une blockchain, les arbres de Merkle compressent des milliers de transactions en une seule valeur compacte stockée dans l’en-tête du bloc.

L’arbre est construit du bas vers le haut à l’aide de fonctions de hachage cryptographiques. Chaque nœud feuille contient le hachage d’une seule portion de données, comme une transaction. Ensuite, ces hachages de feuilles sont regroupés par paires : le hachage de chaque paire est calculé en concaténant les deux hachages des enfants, puis en hachant le résultat. Ce processus se répète en remontant, couche par couche, jusqu’à ce qu’un seul hachage reste au sommet : la racine de Merkle.

Comme chaque nœud parent dépend de ses deux enfants, toute modification d’une feuille entraîne une cascade vers le haut et produit une racine de Merkle complètement différente. Cette propriété fait des arbres de Merkle un outil efficace pour détecter toute altération : si deux copies d’un ensemble de données produisent la même racine de Merkle, alors les ensembles sont identiques avec une probabilité extrêmement élevée.

Racines de Merkle

La racine de Merkle est un hachage de taille fixe, généralement 32 octets (256 bits) dans les applications blockchain, qui sert d’empreinte digitale pour l’ensemble de données. Les en-têtes de bloc, dans la plupart des réseaux blockchain, incluent la racine de Merkle avec d’autres métadonnées comme les horodatages et le hachage du bloc précédent, ce qui permet de garder les en-têtes compacts tout en s’engageant cryptographiquement sur l’ensemble complet des transactions contenues dans le bloc.

Pour illustrer simplement, prenons un fichier de 8 Go découpé en huit morceaux. Appelons ces fragments A à H. Ensuite, chaque fragment est passé dans une fonction de hachage, ce qui nous donne huit hachages différents.

Fragments A-H and each of their hashes.
Chaque fragment des huit est passé dans une fonction de hachage afin d’obtenir leurs hachages.

Avec le hachage de tous les fragments, si un seul est erroné, vous le saurez en le comparant à celui de la source, n’est-ce pas ? C’est possible, mais cela peut aussi être incroyablement inefficace. Si votre fichier comporte des milliers de fragments, allez-vous tous les hacher puis comparer minutieusement les résultats ?

La racine de Merkle apporte une solution plus élégante. Prenez chaque paire de hachages, combinez-les, puis hachez le tout. Vous obtenez hA + hB, hC + hD, hE + hF et hG + hH, puis vous arrivez à quatre hachages.

Merkle root first and second round of hashes
La structure ressemble à un arbre à l’envers. En bas, nous avons les feuilles, qui sont combinées pour produire les nœuds, puis, enfin, la racine.

Ensuite, un autre tour de hachage et vous obtenez deux valeurs : hABCD et hEFGH. Enfin, hachez les deux dernières pour obtenir le hachage maître, et vous aurez la racine de Merkle (ou root hash) : hABCDEFGH.

Preuves et vérification de Merkle

L’une des fonctionnalités les plus pratiques des arbres de Merkle est la possibilité de prouver qu’une portion précise de données appartient à l’ensemble sans révéler l’ensemble complet. On appelle cela une preuve de Merkle. Pour vérifier qu’une transaction est incluse dans un bloc, un client léger n’a besoin que de la transaction elle-même, d’un petit ensemble de hachages de frères le long du chemin vers la racine, et de la racine de Merkle provenant de l’en-tête du bloc. Le vérificateur recalcule les hachages le long du chemin et vérifie si le résultat correspond à la racine connue. Si c’est le cas, la transaction est mathématiquement prouvée comme faisant partie du bloc.

Merkle verification example, three hash rounds
Pour vérifier hD, il suffit des hachages affichés en rouge.

Prenons un scénario où vous souhaitez vérifier une transaction dont le TXID est hD. Si hC est fourni, vous pouvez calculer hCD. Ensuite, utilisez hAB pour calculer hABCD. Enfin, avec hEFGH, vérifiez que la racine de Merkle obtenue correspond à celle de l’en-tête du bloc. Si c’est le cas, cela prouve que la transaction a été incluse dans le bloc. Il serait presque impossible de produire le même hachage avec des données différentes.

Dans l’exemple ci-dessus, vous n’aurez besoin de hacher que trois fois. Sans preuve de Merkle, vous devriez le faire sept fois. Comme les blocs contiennent aujourd’hui des milliers de transactions, l’utilisation des preuves de Merkle permet d’économiser énormément de temps et de ressources de calcul.

La taille de la preuve augmente logarithmiquement avec le nombre de feuilles : pour un million de transactions (un arbre binaire de profondeur 20), il ne faut qu’environ 20 hachages, soit environ 640 octets. C’est ce qui permet aux nœuds légers, parfois appelés clients de « Simplified Payment Verification » (SPV), de vérifier les transactions sans télécharger l’ensemble de la blockchain, un processus qui nécessiterait autrement des centaines de gigaoctets de données.

Arbres de Merkle dans les réseaux blockchain

Bitcoin et la vérification des transactions

Dans Bitcoin, chaque en-tête de bloc contient une racine de Merkle de 32 octets qui engage toutes les transactions de ce bloc. Les mineurs Bitcoin construisent un arbre de Merkle à partir des transactions qu’ils incluent, et la racine obtenue est intégrée dans l’en-tête du bloc avec la solution de Preuve de Travail (Proof of Work). Cette conception signifie que l’en-tête du bloc, généralement d’environ 80 octets, suffit pour vérifier qu’une transaction spécifique a été incluse dans le bloc, sans avoir besoin des autres transactions.

Bitcoin utilise également des arbres de Merkle dans sa proposition MAST (Merkelized Abstract Syntax Trees), qui permet de représenter des conditions de dépense complexes dans les scripts Bitcoin sous la forme d’un arbre de Merkle. Seule la branche exécutée du script doit être révélée, ce qui permet de garder les conditions inutilisées privées et de réduire la taille des transactions.

Preuves d’état et de consensus

Ethereum utilise une variante plus sophistiquée appelée Merkle Patricia Trie, une structure d’arbre hexary (à 16 branches) qui stocke les soldes des comptes, le code des contrats et les données de stockage. Contrairement à l’arbre de Merkle binaire simple utilisé pour les transactions Bitcoin, le Merkle Patricia Trie est conçu pour supporter des mises à jour fréquentes de l’état : lorsqu’un solde de compte change, seule la trajectoire entre cette feuille et la racine doit être recalculée, plutôt que de reconstruire l’arbre entier.

Les preuves d’état générées à partir du Merkle Patricia Trie permettent aux clients légers Ethereum et aux rollups de niveau 2 de vérifier les soldes des comptes et le stockage des contrats sans exécuter un nœud complet. Ces preuves sont aussi essentielles pour les ponts inter-chaînes qui doivent vérifier des événements sur une chaîne à partir d’une autre.

Limites et développements futurs

Bien que les arbres de Merkle offrent une vérification efficace, la taille des preuves continue d’augmenter logarithmiquement avec la taille de l’ensemble de données. Pour Ethereum, à mesure que l’état grandit, les « block witnesses » — les preuves nécessaires pour valider un bloc — peuvent atteindre plusieurs mégaoctets. Cela pose un défi de scalabilité pour les clients sans état (stateless), qui devraient recevoir et vérifier ces preuves pour chaque bloc.

Les arbres Verkle, qui utilisent des engagements vectoriels basés sur des engagements polynomial (Kate-Zaverucha-Goldberg, ou KZG) au lieu du hachage traditionnel, offrent une solution potentielle. En regroupant de nombreux enfants sous chaque nœud (facteur d’embranchement de 256), les arbres Verkle produisent des preuves dont la taille est presque constante, environ 170 octets, quel que soit la taille de l’ensemble de données. Ethereum développe activement l’intégration des arbres Verkle, avec un déploiement attendu lors d’une mise à niveau future. Cette transition réduirait considérablement la charge de données des clients légers et améliorerait la scalabilité du réseau dans son ensemble.

FAQ

Qu’est-ce qu’un arbre de Merkle, simplement ?

Un arbre de Merkle est une façon d’organiser des données pour qu’un petit élément d’information, la racine de Merkle, puisse représenter un grand ensemble de données. Il fonctionne en hachant à répétition des paires de données jusqu’à ce qu’il ne reste qu’un seul hachage, ce qui permet de vérifier si un élément précis appartient à l’ensemble sans avoir à vérifier chaque élément individuellement.

Qu’est-ce qu’une racine de Merkle ?

La racine de Merkle est le hachage unique tout en haut d’un arbre de Merkle. Elle sert d’empreinte digitale compacte pour toutes les données situées en dessous. Dans les réseaux blockchain, la racine de Merkle est stockée dans l’en-tête du bloc et « engage » toutes les transactions de ce bloc, ce qui permet une vérification efficace qu’une transaction fait partie du bloc.

Comment fonctionne une preuve de Merkle ?

Une preuve de Merkle fournit une transaction ainsi qu’un ensemble minimal de hachages de frères (siblings) nécessaires pour recalculer le chemin depuis cette transaction jusqu’à la racine de Merkle. Le vérificateur hache la transaction, la combine avec les hachages fournis dans le bon ordre, puis vérifie si le résultat final correspond à la racine de Merkle connue dans l’en-tête du bloc. Si c’est le cas, la transaction est prouvée comme faisant partie du bloc.

Pourquoi les arbres de Merkle sont-ils importants pour la blockchain ?

Les arbres de Merkle permettent aux réseaux de blockchain de séparer les en-têtes de bloc des données de transaction complètes. Un client léger peut télécharger uniquement les en-têtes de bloc (environ 80 octets par bloc) et vérifier malgré tout qu’une transaction a bien été incluse, grâce à une preuve de Merkle compacte. Sans arbres de Merkle, vérifier une transaction nécessiterait de télécharger le bloc complet ou l’intégralité de la chaîne.

Quelle est la différence entre un arbre de Merkle et un arbre Verkle ?

Les deux sont des accumulateurs cryptographiques utilisés pour prouver l’appartenance de données, mais ils reposent sur des mathématiques différentes. Les arbres de Merkle utilisent des fonctions de hachage et produisent des preuves dont la taille augmente logarithmiquement avec la taille de l’ensemble (O(log n)). Les arbres Verkle utilisent des engagements polynomial (KZG) et produisent des preuves dont la taille est presque constante, de quelques centaines d’octets, quelle que soit la taille de l’ensemble de données, ce qui les rend plus adaptés aux preuves d’état de blockchain à grande échelle.

Dernières réflexions

Les arbres de Merkle sont un pilier de l’architecture des blockchains, permettant une vérification sans confiance à grande échelle. En compressant l’ensemble d’un bloc de transactions en un seul hachage de 32 octets, ils permettent aux participants de vérifier des données sans tout télécharger. Ce principe sous-tend tout, des portefeuilles SPV de Bitcoin aux preuves d’état d’Ethereum et aux ponts inter-chaînes. À mesure que les réseaux blockchain continuent de croître, de nouvelles structures cryptographiques comme les arbres Verkle pourraient éventuellement compléter ou remplacer les arbres de Merkle, mais le concept sous-jacent — l’intégrité des données efficace basée sur le hachage — restera probablement une brique fondamentale des systèmes distribués pendant encore longtemps.

Pour aller plus loin

  • Quel est l’algorithme de consensus d’une blockchain ?

  • Histoire de la cryptographie

  • Solutions de scalabilité de la couche 1 vs la couche 2

  • Qu’est-ce que le sharding et comment ça marche ?

Avertissement : ce contenu vous est présenté « en l’état » à titre d’information générale et à des fins éducatives uniquement, sans aucune déclaration ni garantie d’aucune sorte. Il ne doit pas être interprété comme un conseil financier, juridique ou autre conseil professionnel, et ne vise pas à recommander l’achat d’un produit ou service particulier. Vous devriez demander votre propre avis à des conseillers professionnels appropriés. Lorsque le contenu est fourni par un contributeur tiers, veuillez noter que les opinions exprimées appartiennent au contributeur tiers et ne reflètent pas nécessairement celles de Binance Academy. Les prix des actifs numériques peuvent être volatils. La valeur de votre investissement peut baisser ou augmenter, et vous pourriez ne pas récupérer le montant investi. Vous êtes seul responsable de vos décisions d’investissement et Binance Academy n’est responsable d’aucune perte que vous pourriez subir. Pour en savoir plus, consultez nos Conditions d’utilisation, l’Avis de risque et les Conditions de Binance Academy.