🌳 Merkle Tree

The simple and easy implementation of Rust Merkle Tree


Build Test

Crates.io

GitHub last commit GitHub commit activity

Crates.io

Table of Contents

Credits

GitHub Contributors Image

How to install

How to works

This library provides a clean and easy to use implementation of the Merkle Tree with the following features:

How to Use

Create a Merkle Tree

```rust use merkletreers::merkletree::tree::MerkleTree;

let tree = MerkleTree::new(vec!["a","b","c","d"]);

assert_eq!(tree.leafs(), [ "3ac225168df54212a25c1c01fd35bebfea408fdac2e31ddd6f80a4bbf9a5f1cb", "b5553de315e0edf504d9150af82dafa5c4667fa618ed0a6f19c69b41166c5510", "0b42b6393c1f53060fe3ddbfcd7aadcca894465a5a438f69c87d790b2299b9b2", "f1918e8562236eb17adc8502332f4c9c82bc14e19bfc0aa10ab674ff75b3d2f3", ]) ```

Create a Root

```rust use merkletreers::merkletree::tree::MerkleTree;

let tree = MerkleTree::new(vec!["a","b","c","d"]);

assert_eq!( tree.root(), vec!["115cbb4775ed495f3d954dfa47164359a97762b40059d9502895def16eed609c"], ); ```

Create Proof of a leaf ```rust use merkletreers::merkletree::{tree::MerkleTree, node::Node};

let mtree = MerkleTree::new(vec!["a", "b", "c", "d"]); assert_eq!( mtree.proof("a"), vec![ Node::left("3ac225168df54212a25c1c01fd35bebfea408fdac2e31ddd6f80a4bbf9a5f1cb"), Node::right("b5553de315e0edf504d9150af82dafa5c4667fa618ed0a6f19c69b41166c5510"), Node::right("64673cf40035df6d3a0d0143cc8426de49b9a93b9ad2d330cb4f0bc390a86d20") ] ); ```

Verify Proof of a leaf rust

Roadmap

| Feature | Status | Priority | |-|-|-| | Create Root | ✅ | 🔥 | | Create Proof | ✅ | 🔥 | | Verify Proof | ⏰ | 🔥 | | Support OpenZeppelin | ⏰ | 🔥 | | Compatible with MerkleTreeJs | ⏰ | 🔥 | | Use any Hash function | ⏰ | 🧐 | | Leafs of any size | ⏰ | 🧐 |

Contributing

License

MIT