Module hasher

Source
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§

HasherDigestAlgorithm
A struct that impls DigestAlgorithm for use with MerkleTree.
HasherNode
Newtype wrapper for hash output that impls NodeValue.

Traits§

HasherDigest
Convenience trait and blanket impl for downstream trait bounds.

Type Aliases§

GenericHasherMerkleTree
Like HasherMerkleTree except with additional parameters.
HasherMerkleTree
Merkle tree generic over [Digest] hasher H.