pub struct UnbalancedHashedMerkleTree;
Expand description
Merkle Tree variant that has pre-hashed leaves with arbitrary number of elements.
This can be considered a general case of BalancedHashedMerkleTree
. The root and proofs are
identical for both in case the number of leaves is a power of two. BalancedHashedMerkleTree
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 L6
Implementations§
Source§impl UnbalancedHashedMerkleTree
impl UnbalancedHashedMerkleTree
Sourcepub fn compute_root_only<'a, const N: usize, Iter>(
leaves: Iter,
) -> Option<[u8; 32]>
pub fn compute_root_only<'a, const N: usize, 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.
Sourcepub fn compute_root_and_proof<'a, const N: usize, Iter>(
leaves: Iter,
target_index: usize,
) -> Option<([u8; 32], Vec<[u8; 32]>)>
pub fn compute_root_and_proof<'a, const N: usize, 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 N: usize, 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 N: usize, 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.