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

source

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.

source

pub fn root(&self) -> RpoDigest

Returns the root of this Merkle tree.

source

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.

source

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.
source

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.
source

pub fn leaves(&self) -> impl Iterator<Item = (u64, &Word)>

Returns an iterator over the leaves of this MerkleTree.

source

pub fn inner_nodes(&self) -> InnerNodeIterator<'_>

Returns n iterator over every inner node of this MerkleTree.

The iterator order is unspecified.

source

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

source§

fn clone(&self) -> MerkleTree

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for MerkleTree

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<T: KvMap<RpoDigest, StoreNode>> From<&MerkleTree> for MerkleStore<T>

source§

fn from(value: &MerkleTree) -> Self

Converts to this type from the input type.
source§

impl PartialEq for MerkleTree

source§

fn eq(&self, other: &MerkleTree) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Eq for MerkleTree

source§

impl StructuralEq for MerkleTree

source§

impl StructuralPartialEq for MerkleTree

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for Twhere T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.