Ce projet a pour but de montrer comment utiliser les arbres de Merkle dans la blockchain, avec Solidity, Hardhat et JavaScript. Les arbres de Merkle sont essentielles pour garantir l'intégrité des données dans un environnement décentralisé.
pnpm install
- Exécution des Tests : Pour lancer les tests du projet, utilisez la commande suivante :
pnpm test
- Génération de liste blanche : Pour générer une liste blanche à partir de l'arbre Merkle :
pnpm generate-whitelist
Le projet est organisé en utilisant des modules pour séparer la logique :
-
merkle-tree-builder.module
: Contient une classeMerkleTreeBuilder
qui permet de construire un arbre Merkle à partir d'une liste d'adresses. -
whitelist-generator.module
: Contient une classeWhitelistGenerator
qui génère une liste blanche à partir de l'arbre Merkle. -
buffer-to-hex.util
: Utilisé pour convertir des tampons en chaînes hexadécimales.
Le smart contract MerkleProof.sol
stocke la racine de Merkle au déploiement et fournit une fonction verify
pour vérifier les preuves de Merkle.
Une liste blanche d'adresses est définie dans le fichier config/address-whitelisted.js
:
const addressWhitelisted = [
'0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2',
'0x78731D3Ca6b7E34aC0F824c42a7cC18A495cabaB',
'0x5B38Da6a701c568545dCfcB03FcB875f56beddC4',
];
Note: L'adresse de la racine de Merkle dans le contrat doit correspondre à la racine de Merkle générée localement pour que les tests fonctionnent correctement.