Expand description
A convenience wrapper HasherMerkleTree
to instantiate MerkleTree
for any RustCrypto-compatible hash function.
use jf_merkle_tree::{hasher::HasherMerkleTree, AppendableMerkleTreeScheme, MerkleTreeScheme};
use sha2::Sha256;
let my_data = [1, 2, 3, 4, 5, 6, 7, 8, 9];
// payload type is `usize`, hash function is `Sha256`.
let mt = HasherMerkleTree::<Sha256, usize>::from_elems(Some(2), &my_data)?;
let commitment = mt.commitment();
let (val, proof) = mt.lookup(2).expect_ok()?;
assert_eq!(val, &3);
assert!(HasherMerkleTree::<Sha256, usize>::verify(commitment, 2, val, proof)?.is_ok());
HasherMerkleTree
requires the std
feature for your hasher, which is
enabled by default. Example:
[dependencies]
sha2 = "0.10"
Use GenericHasherMerkleTree
if you prefer to specify your own ARITY
and node Index
types.
Structs§
- Hasher
Digest Algorithm - A struct that impls
DigestAlgorithm
for use withMerkleTree
. - Hasher
Node - Newtype wrapper for hash output that impls
NodeValue
.
Traits§
- Hasher
Digest - Convenience trait and blanket impl for downstream trait bounds.
Type Aliases§
- Generic
Hasher Merkle Tree - Like
HasherMerkleTree
except with additional parameters. - Hasher
Merkle Tree - Merkle tree generic over [
Digest
] hasherH
.