Actualités produits

Qu'est ce que l'arbre de Merkle ?

Chers Bitgetters du monde entier,

L'arbre de Merkle est une structure de données, également connue sous le nom d'arbre de hachage. L'arbre de Merkle stocke les données dans les nœuds feuilles de la structure de l'arbre. En hachant les données étape par étape jusqu'au nœud racine le plus élevé, tout changement dans les données des nœuds feuilles sera transmis aux nœuds de niveau supérieur et finalement affiché comme un changement dans la racine de l'arbre.


1. Les rôles de l'arbre de Merkle
- Preuve à divulgation nulle de connaissance (Zero-knowledge)
- Assurer l'immuabilité des donnée
- Assurer la confidentialité des données


2. Présentation de l'arbre de Merkle de Bitget Limited
2.1 Informations sur les nœuds
Les informations stockées dans chaque nœud de l'arbre comprennent :
1. la valeur de hachage
2. le nombre de crypto contenus dans l'instantané des actifs de l'utilisateur (BTC, ETH, USDT par exemple)
Qu'est ce que l'arbre de Merkle ? image 0

2.2 Règles de hachage
Nœuds feuilles (sauf les nœuds de padding)

Qu'est ce que l'arbre de Merkle ? image 1

- encryptUid : UID chiffré de l'utilisateur
- nonce : une valeur unique attribuée à chaque utilisateur
- soldes : chaîne json composée du nombre de cryptomonnaies présentes dans l'instantané des actifs de l'utilisateur, (note : supprimer le 0 non valide à la fin et garder une précision de 8 bits).
- Par exemple : {"BTC":1.763,"ETH":362,"USDT":1077200.2274}


Nœud parent

Qu'est ce que l'arbre de Merkle ? image 2

- h1 : hash du noeud enfant à gauche du noeud actuel,
- h2 : hash du noeud enfant à droite du noeud actuel,
- niveau : là où se situe le nœud parent

Définition du niveau des nœuds de l'arbre : Un arbre de Merkle complet (arbre binaire complet) nécessite 2^n données de nœuds feuilles, niveau de nœud feuille = n + 1, niveau de nœud parent = niveau de nœud enfant - 1, niveau de nœud racine = 1, le niveau de nœud feuille est le maximum.

Règles du nœud de padding
Un arbre de Merkle complet (arbre binaire complet) nécessite 2^n données de nœuds feuilles mais le nombre réel de données peut ne pas correspondre et être impair. Dans le cas présent, si un nœud k n'a pas de nœud frère, alors le padding automatique génère un nœud frère k', et hash(k') = hash(k), le nombre de cryptomonnaies du nœud k' étant fixé à zéro.
Par exemple:

Qu'est ce que l'arbre de Merkle ? image 3

Alors le noeud de padding est hash4 = hash3, les soldes stockés sont {"BTC" : 0, "ETH" : 0, "USDT" : 0}, comme le montre le nœud en surbrillance de la figure 1.
Figure une
Qu'est ce que l'arbre de Merkle ? image 4

Qu'est ce que l'arbre de Merkle ? image 5
Donc, hash6 = SHA256 (hash3 + hash4, {BTC: (2+0), ETH:(1+0), USDT:(12+0)}, niveau)

Méthode de vérification
a. Méthode de vérification : Selon la définition de l'arbre de Merkle de Bitget Limited, la valeur de hachage du noeud parent est calculée à partir du noeud feuille de l'utilisateur jusqu'au noeud racine, et la valeur de hachage du noeud racine est comparée à la valeur de hachage de l'arbre de Merkle dans "Étape de vérification - Étape 1", si les deux valeurs sont identiques, la vérification réussit, sinon, la vérification échoue.

b. Exemple: En combinant la figure une et le fichier json suivant, en se basant sur le nœud feuille h3 propre à l'utilisateur et les informations fournies par le nœud adjacent h4, nous pouvons calculer le hash du nœud parent h6. Ensuite, avec les informations fournies par le nœud adjacent h5, nous pouvons calculer le hash du nœud parent h7 et ensuite comparer la valeur de hachage avec le nœud racine h7 fourni dans les données du chemin de l'arbre de Merkle pour voir si les valeurs de hachage sont identiques afin de terminer la validation.
Chemin des données de l'arbre de Merkle en format json :
Qu'est ce que l'arbre de Merkle ? image 6


Étapes de vérification
a. Connectez-vous à votre compte Bitget, cliquez sur "Aperçu des actifs - Preuve des actifs "et vous pouvez directement consulter les audits récents en cliquant sur "Preuve des actifs". Les données au moment de votre audit seront affichées par défaut.

Qu'est ce que l'arbre de Merkle ? image 7

b. Si vous souhaitez vérifier manuellement que vos actifs sont inclus dans l'arbre de Merkle, vous pouvez le faire en respectant les étapes de vérification. Cliquez sur le bouton "Télécharger les données" pour obtenir les éléments nécessaires pour la validation manuelle. Un fichier portant le nom par défaut : merkel_tree_bg.json sera téléchargé.
Qu'est ce que l'arbre de Merkle ? image 8
Opérations spécifiques :
Dans notre exemple, le nom du fichier est merkel_tree_bg.json. Le texte des données json du chemin de l'arbre de merkel est indiqué ci-dessous :
Qu'est ce que l'arbre de Merkle ? image 9
c. Téléchargez l'outil de vérification open source ProofOfReserves.zip fourni par Bitget Limited.
d. Décompressez le fichier ProofOfReserves.zip dans le dossier actuel et transférez le fichier merkel_tree_bg.json téléchargé à l'étape 2 dans le même dossier. Dans notre cas, le fichier est stocké dans Téléchargements, et le nom du dossier est preuve-de-réserves, la capture d'écran est la suivante :
Qu'est ce que l'arbre de Merkle ? image 10
e. Ouvrez le terminal du programme (Système Mac : terminal. Système Windows : cmd)
f. Saisissez la commande cd ~/Téléchargements/preuve-de-réserves dans le terminal, et accédez au dossier du contenu téléchargé.
g. Vérifiez vos données en entrant la ligne de commande suivante

Mac/Linux
Qu'est ce que l'arbre de Merkle ? image 11
Windows
Cliquez sur le fichier start.bat

Remarque : si vous utilisez un système Mac et que vous rencontrez des problèmes avec les paramètres de sécurité au cours de cette étape, accédez à Préférences système -> Sécurité et confidentialité -> Général -> Appuyez sur le bouton de verrouillage pour effectuer des modifications -> Autoriser les applications téléchargées depuis : App Store et développeurs approuvés -> Autoriser les outils.
Si le problème suivant se produit, zsh : autorisation refusée : . /start.sh, exécutez la commande suivante

Qu'est ce que l'arbre de Merkle ? image 12

h. Afficher les résultats
(1) Si vos données correspondent et que la vérification a réussi, alors le résultat est "Le hash de la racine de l'arbre de Merkle est conforme, la vérification a réussi".
Qu'est ce que l'arbre de Merkle ? image 13
(2) Si vos données ne correspondent pas et que la vérification échoue, le résultat est "Le hash de la racine de l'arbre de Merkle est non conforme, la vérification a échoué".
Qu'est ce que l'arbre de Merkle ? image 14

i. Vous pouvez également vous référer au code de l'outil de vérification open source de Bitget Limited ainsi qu'à la définition de l'arbre de Merkle (voir la section "Qu'est-ce que l'arbre de Merkle") et écrire votre propre programme pour vérifier le chemin des données obtenu à l'étape 2, ou pour contrôler que vos actifs sont inclus dans l'arbre de Merkel généré par cet audit.

L'équipe Bitget