miden_crypto::merkle

Struct MmrPeaks

source
pub struct MmrPeaks { /* private fields */ }

Implementations§

source§

impl MmrPeaks

source

pub fn new(num_leaves: usize, peaks: Vec<RpoDigest>) -> Result<Self, MmrError>

Returns new MmrPeaks instantiated from the provided vector of peaks and the number of leaves in the underlying MMR.

§Errors

Returns an error if the number of leaves and the number of peaks are inconsistent.

source

pub fn num_leaves(&self) -> usize

Returns a count of leaves in the underlying MMR.

source

pub fn num_peaks(&self) -> usize

Returns the number of peaks of the underlying MMR.

source

pub fn peaks(&self) -> &[RpoDigest]

Returns the list of peaks of the underlying MMR.

source

pub fn into_parts(self) -> (usize, Vec<RpoDigest>)

Converts this MmrPeaks into its components: number of leaves and a vector of peaks of the underlying MMR.

source

pub fn hash_peaks(&self) -> RpoDigest

Hashes the peaks.

The procedure will:

  • Flatten and pad the peaks to a vector of Felts.
  • Hash the vector of Felts.
source

pub fn verify(&self, value: RpoDigest, opening: MmrProof) -> bool

source

pub fn flatten_and_pad_peaks(&self) -> Vec<Felt>

Flattens and pads the peaks to make hashing inside of the Miden VM easier.

The procedure will:

  • Flatten the vector of Words into a vector of Felts.
  • Pad the peaks with ZERO to an even number of words, this removes the need to handle RPO padding.
  • Pad the peaks to a minimum length of 16 words, which reduces the constant cost of hashing.

Trait Implementations§

source§

impl Clone for MmrPeaks

source§

fn clone(&self) -> MmrPeaks

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

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

Performs copy-assignment from source. Read more
source§

impl Debug for MmrPeaks

source§

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

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

impl From<&MmrPeaks> for PartialMmr

source§

fn from(peaks: &MmrPeaks) -> Self

Converts to this type from the input type.
source§

impl From<&PartialMmr> for MmrPeaks

source§

fn from(partial_mmr: &PartialMmr) -> Self

Converts to this type from the input type.
source§

impl From<MmrPeaks> for PartialMmr

source§

fn from(peaks: MmrPeaks) -> Self

Converts to this type from the input type.
source§

impl From<MmrPeaks> for Vec<RpoDigest>

source§

fn from(peaks: MmrPeaks) -> Self

Converts to this type from the input type.
source§

impl From<PartialMmr> for MmrPeaks

source§

fn from(partial_mmr: PartialMmr) -> Self

Converts to this type from the input type.
source§

impl PartialEq for MmrPeaks

source§

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

Tests for self and other values to be equal, and is used by ==.
1.6.0 · source§

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

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

impl Eq for MmrPeaks

source§

impl StructuralPartialEq for MmrPeaks

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. 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 T
where 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

source§

type Output = T

Should always be Self
source§

impl<T> ToOwned for T
where T: Clone,

source§

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 T
where U: Into<T>,

source§

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 T
where U: TryFrom<T>,

source§

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

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

source§

fn vzip(self) -> V