Skip to content

Instantly share code, notes, and snippets.

@geeknees
Created August 14, 2022 05:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save geeknees/cd819e1008aa339b863c53ff7b2e1218 to your computer and use it in GitHub Desktop.
Save geeknees/cd819e1008aa339b863c53ff7b2e1218 to your computer and use it in GitHub Desktop.
whitelistMarkleTree
const { MerkleTree } = require("merkletreejs");
const keccak256 = require("keccak256");
// List of 7 public Ethereum addresses
let addresses = [
"0x...",
"0x1..",
"0x2..",
"0x3..",
"0x4..",
"0x5..",
"0x6..",
// ...
];
// Hash addresses to get the leaves
let leaves = addresses.map((addr) => keccak256(addr));
// Create tree
let merkleTree = new MerkleTree(leaves, keccak256, { sortPairs: true });
// Get root
let rootHash = merkleTree.getRoot().toString("hex");
console.log(rootHash);
console.log("---------");
// Pretty-print tree
console.log(merkleTree.toString());
// 'Serverside' code
let address = addresses[0];
let hashedAddress = keccak256(address);
let proof = merkleTree.getHexProof(hashedAddress);
console.log(proof);
// Check proof
let v = merkleTree.verify(proof, hashedAddress, rootHash);
console.log(v); // returns true
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment