Un hachage racine, ou racine merkle, est un type spécial de hachage créé afin de faciliter la vérification des données dans une arborescence Merkle. Sans aucun doute une structure informatique intéressante avec des utilisations dans de nombreux domaines et l'un d'entre eux est la technologie blockchain.
El hachage racine o hachage racine, est le nom donné au hachage résultant d'un arbre merkle. Son utilité principale est de servir de marqueur pour indiquer la fiabilité des informations de l'arbre de Merkle en question. Quelque chose de très utile dans un réseau P2P.
Pour mieux expliquer cette situation, imaginons l'exemple suivant:
Juan veut installer un nœud Bitcoin plein. Lors de son initialisation, le nœud Bitcoin doit se synchroniser avec le réseau. Ceci afin d'obtenir toutes les informations accumulées dans le blockchain Bitcoin Pour y parvenir, le nouveau nœud Bitcoin téléchargera toutes ces informations. Cependant, Bitcoin est un réseau sans confiance qui fonde son fonctionnement sur une série de fonctions cryptographiques. Ceci afin de garantir la véracité des informations sans avoir besoin de faire confiance à des tiers.
Pour ce faire, il utilise des fonctions de hachage cryptographiques telles que SHA-256. Au fur et à mesure que le nœud télécharge les informations, il vérifie que les hachages "les plus fiables" sont corrects. Si tel est le cas, le nœud Bitcoin poursuit son travail de téléchargement. Sinon, il supprime les informations et commence à télécharger les informations à partir d'une autre nouvelle source où tous les hachages de confiance correspondent. Une fois le téléchargement terminé, le nouveau nœud peut commencer son travail en étant sûr que toutes les informations ont été vérifiées et sont correctes.
L'exemple donné nous montre clairement l'utilité du hachage racine lors de la vérification de l'authenticité des données reçues. Mais il est également parfaitement applicable à toutes les blockchains et à leurs processus de synchronisation complets.
Comment créer un hachage racine?
Un hachage racine est généré à partir d'un hachage incrémentiel des informations dans chaque bloc de données. Ce processus garantit que chacun des blocs d'informations est traité et étiqueté avec un hachage unique et non répétable. Prenons par exemple la création d'un arbre Merkle à l'aide de l'algorithme de hachage SHA-256. Dans ce cas, nos blocs de données sont:
Une fois que nous avons les blocs de données sous la main, nous commençons à hacher chacun d'eux. Pour cela nous utiliserons la fonction SHA-256 qui nous donnerait le résultat suivant.
Ainsi, nous avons que chaque bloc se voit attribuer un hachage SHA-256 unique et irremplaçable. Ce sera notre balisage pour reconnaître l'authenticité et comment nous organiserons notre arbre Merkle. Poursuivant la procédure, il nous reste à joindre les blocs de données comme suit:
Comme vous pouvez le voir, nous concaténons les hachages des blocs voisins les uns avec les autres par paires. Nous avons donc les paires AB, CD, EF, GH. A la fin du premier tour, nous continuons à construire l'union des hachages mais cette fois avec les paires ABCD et EFGH. Et finalement nous finissons par tout concaténer dans un seul hachage qui inclut les hachages d'ABCD et d'EFGH pour donner l'origine au merkle racine (ABCDEFGH).
Ce dernier bloc en haut est notre hachage racine ou racine de merkle. C'est le hachage résultant de l'Arbre Merkle.