pub struct Proof<H: Hasher> {
pub siblings: Vec<H::Digest>,
}Expand description
A Merkle proof for a leaf in a Binary Merkle Tree.
Fields§
§siblings: Vec<H::Digest>The sibling hashes from the leaf up to the root.
Implementations§
Source§impl<H: Hasher> Proof<H>
impl<H: Hasher> Proof<H>
Sourcepub fn verify(
&self,
hasher: &mut H,
leaf: &H::Digest,
position: u32,
root: &H::Digest,
) -> Result<(), Error>
pub fn verify( &self, hasher: &mut H, leaf: &H::Digest, position: u32, root: &H::Digest, ) -> Result<(), Error>
Verifies that a given leaf at position is included in a Binary Merkle Tree
with root using the provided hasher.
The proof consists of sibling hashes stored from the leaf up to the root. At each level, if the current node is a left child (even index), the sibling is combined to the right; if it is a right child (odd index), the sibling is combined to the left.
Trait Implementations§
Source§impl<H: Hasher> EncodeSize for Proof<H>
impl<H: Hasher> EncodeSize for Proof<H>
Source§fn encode_size(&self) -> usize
fn encode_size(&self) -> usize
Returns the encoded size of this value (in bytes).
Source§impl<H: Hasher> Read for Proof<H>
impl<H: Hasher> Read for Proof<H>
impl<H: Eq + Hasher> Eq for Proof<H>
Auto Trait Implementations§
impl<H> Freeze for Proof<H>
impl<H> RefUnwindSafe for Proof<H>
impl<H> Send for Proof<H>
impl<H> Sync for Proof<H>
impl<H> Unpin for Proof<H>
impl<H> UnwindSafe for Proof<H>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Encode for Twhere
T: Write + EncodeSize,
impl<T> Encode for Twhere
T: Write + EncodeSize,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more