Bitcoind : comprendre bitcoin : utilisation des arbres merkle

  • La racine Merkle est essentielle pour assurer la sécurité des blocs dans la blockchain Bitcoin.
  • Chaque en-tête de bloc contient un hachage racine Merkle représentant toutes les transactions du bloc, toute modification apportée à ces transactions entraîne un changement dans la racine Merkle.
  • L'utilisation d'un arbre Merkle permet une vérification efficace et simple de l'inclusion d'une transaction dans un bloc sans révéler toutes les transactions ou même leurs hachages.
  • Le processus mathématique de vérification d'une preuve Merkle implique une itération du hachage jusqu'à obtenir une racine calculée correspondant à la racine connue du bloc, confirmant ainsi l'inclusivité de la transaction.

La racine Merkle joue un rôle important dans la manière dont les blocs de la blockchain Bitcoin sont liés entre eux en toute sécurité. Chaque nouveau bloc contient un hachage du en-tête du bloc précédent. Cela connecte les blocs dans une chaîne, car si quelque chose change dans un bloc précédent, le hachage changera également.

Plus précisément, chaque en-tête de bloc contient un hachage racine Merkle représentant toutes les transactions de ce bloc. Si même une seule transaction dans le bloc était modifiécela provoquerait le Racine Merkle à changer. Cela rendrait l'ensemble du bloc hachage d'en-tête changer aussi.

Ainsi, la racine Merkle permet de détecter toute modification apportée aux transactions précédentes. Si une transaction était supprimée d'un bloc précédent, la racine Merkle dans l'en-tête de tous les blocs suivants changerait. Cela briserait la chaîne de hachage reliant les blocs.

Bitcoind : comprendre bitcoin : utilisation des arbres merkle

Vous vous demandez peut-être pourquoi nous ne le faisons pas simplement hacher toutes les transactions ensemble pour créer un champ de hachage des transactions dans l'en-tête du bloc, au lieu de les hacher dans paires pour créer une racine Merkle.

Bien que le hachage de toutes les transactions ensemble garantirait que les données intégritéce serait ne pas être efficace pour vérification. Par exemple, si un nœud souhaite vérifier qu'une transaction est contenue dans un bloc (qui contient, disons, 100 transactions), il devra télécharger et hacher les 99 autres hachages de transactions. Si le hachage résultant correspond au hachage attendu, alors la transaction est confirmée comme étant dans le bloc.

Cependant, avec un arbre Merkle, le processus est beaucoup plus efficace. Le nœud n'a besoin que d'obtenir quelques preuves Merkle. Avec un algorithme mathématique simple, il peut confirmer que la transaction est bien incluse dans le bloc. En effet, les arbres Merkle permettent de prouver que les données appartiennent à un ensemble sans avoir besoin de stocker l'ensemble de l'ensemble.

Par exemple, pour prouver qu'une transaction spécifique « a » fait partie d'un arbre Merkle, tous les membres du réseau connaîtront la fonction de hachage utilisée par tous les arbres Merkle. Le hachage de « a » et le hachage correspondant sont hachés ensemble, remontant dans l'arborescence jusqu'à hachage de racinelequel est publiquement connu, Est obtenu. En comparant les résultats obtenus Racine de Merkle et le Racine de Merkle déjà disponible dans l'en-tête du bloc, la présence de la transaction 'a' dans ce bloc peut être vérifiée. À partir de cet exemple, il est clair que pour vérifier la présence de « a », « a » n'a pas besoin d'être révélé, ni les autres transactions ; seuls certains de leurs hachages sont suffisants. Cela fait Preuve Merkle une méthode efficace et simple pour vérifier l’inclusivité.

Le mathématique Le processus de vérification d'une preuve Merkle implique de hacher la valeur en question avec les hachages fournis dans la preuve, de manière itérative, jusqu'à ce que vous arriviez à une racine Merkle calculée. Si cette racine calculée correspond à la racine Merkle connue du bloc, la preuve est valide et la transaction est confirmée comme faisant partie du bloc.

Lorsque vous diffusez une transaction sur le réseau Bitcoin, votre portefeuille peut télécharger les nouveaux en-têtes de bloc et vérifier si la transaction qu'il a créée pour vous est incluse ou non dans le nouveau bloc. Ceci est rendu possible par la structure Merkle Tree.