pub struct UnbalancedMerkleTree;Expand description
Merkle Tree variant that has pre-hashed leaves with arbitrary number of elements.
This can be considered a general case of BalancedMerkleTree. The root and proofs are
identical for both in case the number of leaves is a power of two. BalancedMerkleTree is
more efficient and should be preferred when possible.
The unbalanced tree is not padded, it is created the same way Merkle Mountain Range would be:
Root
/--------------\
H3 H4
/-------\ /----\
H0 H1 H2 \
/ \ / \ / \ \
L0 L1 L2 L3 L4 L5 L6Implementations§
Source§impl UnbalancedMerkleTree
impl UnbalancedMerkleTree
Sourcepub fn compute_root_only<'a, const MAX_N: u64, Item, Iter>(
leaves: Iter,
) -> Option<[u8; 32]>
pub fn compute_root_only<'a, const MAX_N: u64, Item, Iter>( leaves: Iter, ) -> Option<[u8; 32]>
Compute Merkle Tree Root.
MAX_N generic constant defines the maximum number of elements supported and controls stack
usage.
Returns None for an empty list of leaves, or if the number of leaves is larger than
MAX_N.
Sourcepub fn compute_root_and_proof<'a, const MAX_N: u64, Item, Iter>(
leaves: Iter,
target_index: usize,
) -> Option<([u8; 32], Vec<[u8; 32]>)>
pub fn compute_root_and_proof<'a, const MAX_N: u64, Item, Iter>( leaves: Iter, target_index: usize, ) -> Option<([u8; 32], Vec<[u8; 32]>)>
Compute Merkle Tree root and generate a proof for the leaf at target_index.
Returns Some((root, proof)) on success, None if index is outside of list of leaves.
MAX_N generic constant defines the maximum number of elements supported and controls stack
usage.
Sourcepub fn compute_root_and_proof_in<'a, 'proof, const MAX_N: u64, Item, Iter>(
leaves: Iter,
target_index: usize,
proof: &'proof mut [MaybeUninit<[u8; 32]>; { _ }],
) -> Option<([u8; 32], &'proof mut [[u8; 32]])>
pub fn compute_root_and_proof_in<'a, 'proof, const MAX_N: u64, Item, Iter>( leaves: Iter, target_index: usize, proof: &'proof mut [MaybeUninit<[u8; 32]>; { _ }], ) -> Option<([u8; 32], &'proof mut [[u8; 32]])>
Compute Merkle Tree root and generate a proof for the leaf at target_index.
Returns Some((root, proof)) on success, None if index is outside of list of leaves.
MAX_N generic constant defines the maximum number of elements supported and controls stack
usage.