Skip to content

Instantly share code, notes, and snippets.

@hgedia
Created November 15, 2018 12:24
Show Gist options
  • Select an option

  • Save hgedia/a723ab5a194d51bab8f14556ecba7454 to your computer and use it in GitHub Desktop.

Select an option

Save hgedia/a723ab5a194d51bab8f14556ecba7454 to your computer and use it in GitHub Desktop.
const MerkleTree = require('merkletreejs')
const crypto = require('crypto')
function sha256(data) {
// returns Buffer
return crypto.createHash('sha256').update(data).digest()
}
function buf2hex(buffer) { // buffer is an ArrayBuffer
return Array.prototype.map.call(new Uint8Array(buffer), x => ('00' + x.toString(16)).slice(-2)).join('');
}
const leaves = [
'50b1afbb801c6cc77226ed64fe167d272b16b4a3d34c36d2f1cfcc3cdd395dce087bf039b3d2e296080425dd848d05174a800514618ffc37949341ffebaf44201c',
'40b1afbb801c6cc77226ed64fe167d272b16b4a3d34c36d2f1cfcc3cdd395dce087bf039b3d2e296080425dd848d05174a800514618ffc37949341ffebaf44201c',
'60b1afbb801c6cc77226ed64fe167d272b16b4a3d34c36d2f1cfcc3cdd395dce087bf039b3d2e296080425dd848d05174a800514618ffc37949341ffebaf44201c',
].map(x => sha256(x))
const tree = new MerkleTree(leaves, sha256)
console.log("----------------------------------------------------------------------------------");
console.log("TRee " + JSON.stringify(tree));
console.log("----------------------------------------------------------------------------------");
const root = tree.getRoot();
console.log("----------------------------------------------------------------------------------");
console.log("Root " + buf2hex(tree.getRoot()));
console.log("----------------------------------------------------------------------------------");
const proof = tree.getProof(leaves[2])
console.log("----------------------------------------------------------------------------------");
console.log("Proof : " + JSON.stringify(proof))
console.log("----------------------------------------------------------------------------------");
const layers = tree.getLayers();
console.log("----------------------------------------------------------------------------------");
console.log("Layers : " + JSON.stringify(layers));
console.log("----------------------------------------------------------------------------------");
const verified = tree.verify(proof, leaves[2], root);
console.log("----------------------------------------------------------------------------------");
console.log("Verified " + verified);
console.log("----------------------------------------------------------------------------------");
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment