arnaucube 0e84b1172e | 5 years ago | |
---|---|---|
src | 5 years ago | |
.gitignore | 5 years ago | |
.travis.yml | 5 years ago | |
Cargo.toml | 5 years ago | |
LICENSE | 5 years ago | |
README.md | 5 years ago |
Sparse MerkleTree implementation in Rust.
The MerkleTree is optimized in the design and concepts, to have a faster and lighter MerkleTree, maintaining compatibility with a non optimized MerkleTree. In this way, the MerkleRoot of the optimized MerkleTree will be the same that the MerkleRoot of the non optimized MerkleTree.
Compatible with the Go version: https://github.com/arnaucube/go-merkletree
Create new tree:
let mut mt: MerkleTree = new(140);
Add value to leaf:
let val = TestValue {
bytes: "this is a test leaf".as_bytes().to_vec(),
index_length: 15,
};
mt.add(&val);
Get proof:
let mp = mt.generate_proof(val.hi());
Verify proof:
// check if the value exist
let v = verify_proof(mt.root, mp, val.hi(), val.ht(), mt.num_levels);
// check if the don't value exist
let v = verify_proof(mt.root, mp, val.hi(), EMPTYNODEVALUE, mt.num_levels);