1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
//! # merkrs
//!
//! A Rust Merkle tree library compatible with
//! [OpenZeppelin's JavaScript implementation](https://docs.openzeppelin.com/contracts/4.x/api/utils#MerkleProof).
//!
//! ## Features
//!
//! - **[`StandardMerkleTree`]** — ABI-encoded Solidity values with double leaf hashing
//! - **[`SimpleMerkleTree`]** — raw `[u8; 32]` values with single leaf hashing
//! - Single-leaf and multi-proof generation / verification
//! - Serialisation compatible with the OZ JavaScript `standard-v1` / `simple-v1` formats
//! - Keccak-256 hashing (Ethereum compatible)
//!
//! ## Quick start
//!
//! ```rust
//! use merkrs::{Bytes32, SimpleMerkleTree, simple};
//!
//! # fn main() -> merkrs::Result<()> {
//! let values: Vec<Bytes32> = vec![[1u8; 32], [2u8; 32], [3u8; 32], [4u8; 32]];
//! let tree = SimpleMerkleTree::new(&values, simple::Options::default())?;
//!
//! let proof = tree.proof(&values[0])?;
//! assert!(tree.verify_proof(&values[0], &proof)?);
//! # Ok(())
//! # }
//! ```
pub use Bytes32;
pub use ;
pub use ;
pub use ;
use pretty_assertions as _;
pub use ;
pub use ;
pub use ;