pub struct MerkleTree { /* private fields */ }
Expand description
A fully-balanced binary Merkle tree (i.e., a tree where the number of leaves is a power of two).
Implementations§
Source§impl MerkleTree
impl MerkleTree
Sourcepub fn new<T>(leaves: T) -> Result<MerkleTree, MerkleError>
pub fn new<T>(leaves: T) -> Result<MerkleTree, MerkleError>
Returns a Merkle tree instantiated from the provided leaves.
§Errors
Returns an error if the number of leaves is smaller than two or is not a power of two.
Sourcepub fn depth(&self) -> u8
pub fn depth(&self) -> u8
Returns the depth of this Merkle tree.
Merkle tree of depth 1 has two leaves, depth 2 has four leaves etc.
Sourcepub fn get_node(&self, index: NodeIndex) -> Result<RpoDigest, MerkleError>
pub fn get_node(&self, index: NodeIndex) -> Result<RpoDigest, MerkleError>
Returns a node at the specified depth and index value.
§Errors
Returns an error if:
- The specified depth is greater than the depth of the tree.
- The specified index is not valid for the specified depth.
Sourcepub fn get_path(&self, index: NodeIndex) -> Result<MerklePath, MerkleError>
pub fn get_path(&self, index: NodeIndex) -> Result<MerklePath, MerkleError>
Returns a Merkle path to the node at the specified depth and index value. The node itself is not included in the path.
§Errors
Returns an error if:
- The specified depth is greater than the depth of the tree.
- The specified value is not valid for the specified depth.
Sourcepub fn leaves(&self) -> impl Iterator<Item = (u64, &[BaseElement; 4])>
pub fn leaves(&self) -> impl Iterator<Item = (u64, &[BaseElement; 4])>
Returns an iterator over the leaves of this MerkleTree.
Sourcepub fn inner_nodes(&self) -> InnerNodeIterator<'_>
pub fn inner_nodes(&self) -> InnerNodeIterator<'_>
Returns n iterator over every inner node of this MerkleTree.
The iterator order is unspecified.
Sourcepub fn update_leaf<'a>(
&'a mut self,
index_value: u64,
value: [BaseElement; 4],
) -> Result<(), MerkleError>
pub fn update_leaf<'a>( &'a mut self, index_value: u64, value: [BaseElement; 4], ) -> Result<(), MerkleError>
Replaces the leaf at the specified index with the provided value.
§Errors
Returns an error if the specified index value is not a valid leaf value for this tree.
Trait Implementations§
Source§impl Clone for MerkleTree
impl Clone for MerkleTree
Source§fn clone(&self) -> MerkleTree
fn clone(&self) -> MerkleTree
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more