olivmath / merkly

🌳 The simple and easy implementation of Merkle Tree
https://pypi.org/project/merkly
MIT License
43 stars 10 forks source link

Implement compatibility with MerkleTreeJs #21

Closed olivmath closed 9 months ago

olivmath commented 9 months ago

Merkly ❤️ MerkleTreeJs

OBJECTIVE

Implementation in JS (MerkleTreeJS)

const { MerkleTree } = require('merkletreejs')
const SHA256 = require('crypto-js/sha256')

const leaves = ['a', 'b', 'c', 'd'].map(SHA256)
const tree = new MerkleTree(leaves, SHA256, {})
const root = tree.getRoot().toString('hex')

console.log("SHA256('a'): ", SHA256('a').toString())
console.log("SHA256('a'): ", SHA256('b').toString())
console.log("SHA256('a'): ", SHA256('c').toString())
console.log("SHA256('a'): ", SHA256('d').toString())
console.log("ROOT: ", root)
SHA256('a'):  ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb
SHA256('a'):  3e23e8160039594a33894f6564e1b1348bbd7a0088d42c4acb73eeaed59c009d
SHA256('a'):  2e7d2c03a9507ae265ecf5b5356885a53393a2029d241394997265a1a25aefc6
SHA256('a'):  18ac3e7343f016890c510e93f935261169d9e3f565436429830faf0934f4f8e4
ROOT:  14ede5e8e97ad9372327728f5099b95604a39593cac3bd38a343ad76205213e7

Implementation in Merkly

from merkly.mtree import MerkleTree
import hashlib

def sha256(data):
    return hashlib.sha256(data.encode()).hexdigest()

leaves = ["a", "b", "c", "d"]
tree = MerkleTree(leaves, sha256, merkletreejs=True)
root = "tree.root()"

print("SHA256('a'): ", sha256('a'))
print("SHA256('b'): ", sha256('b'))
print("SHA256('c'): ", sha256('c'))
print("SHA256('d'): ", sha256('d'))
print("ROOT: ", root)
SHA256('a'):  ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb
SHA256('a'):  3e23e8160039594a33894f6564e1b1348bbd7a0088d42c4acb73eeaed59c009d
SHA256('a'):  2e7d2c03a9507ae265ecf5b5356885a53393a2029d241394997265a1a25aefc6
SHA256('a'):  18ac3e7343f016890c510e93f935261169d9e3f565436429830faf0934f4f8e4
ROOT:  14ede5e8e97ad9372327728f5099b95604a39593cac3bd38a343ad76205213e7

Compatibility

olivmath commented 9 months ago

Compatibility