Struct miden_crypto::merkle::MerkleTree
source · 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(leaves: Vec<Word>) -> Result<Self, MerkleError>
pub fn new(leaves: Vec<Word>) -> Result<Self, 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, &Word)>
pub fn leaves(&self) -> impl Iterator<Item = (u64, &Word)>
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: Word
) -> Result<(), MerkleError>
pub fn update_leaf<'a>( &'a mut self, index_value: u64, value: Word ) -> 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 moresource§impl Debug for MerkleTree
impl Debug for MerkleTree
source§impl<T: KvMap<RpoDigest, StoreNode>> From<&MerkleTree> for MerkleStore<T>
impl<T: KvMap<RpoDigest, StoreNode>> From<&MerkleTree> for MerkleStore<T>
source§fn from(value: &MerkleTree) -> Self
fn from(value: &MerkleTree) -> Self
source§impl PartialEq for MerkleTree
impl PartialEq for MerkleTree
source§fn eq(&self, other: &MerkleTree) -> bool
fn eq(&self, other: &MerkleTree) -> bool
self
and other
values to be equal, and is used
by ==
.