pub struct Tree<H: Hasher> { /* private fields */ }Expand description
Constructed Binary Merkle Tree (BMT).
Implementations§
Source§impl<H: Hasher> Tree<H>
impl<H: Hasher> Tree<H>
Sourcepub fn proof(&self, position: u32) -> Result<Proof<H::Digest>, Error>
pub fn proof(&self, position: u32) -> Result<Proof<H::Digest>, Error>
Generates a Merkle proof for the leaf at position.
This is a single-element multi-proof, which includes the minimal siblings needed to reconstruct the root.
Sourcepub fn range_proof(
&self,
start: u32,
end: u32,
) -> Result<RangeProof<H::Digest>, Error>
pub fn range_proof( &self, start: u32, end: u32, ) -> Result<RangeProof<H::Digest>, Error>
Generates a Merkle range proof for a contiguous set of leaves from start
to end (inclusive).
The proof contains the minimal set of sibling digests needed to reconstruct the root for all elements in the range. This is more efficient than individual proofs when proving multiple consecutive elements.
Sourcepub fn multi_proof(&self, positions: &[u32]) -> Result<Proof<H::Digest>, Error>
pub fn multi_proof(&self, positions: &[u32]) -> Result<Proof<H::Digest>, Error>
Generates a Merkle proof for multiple non-contiguous leaves at the given positions.
The proof contains the minimal set of sibling digests needed to reconstruct the root for all elements at the specified positions. This is more efficient than individual proofs when proving multiple elements because shared siblings are deduplicated.
Positions are sorted internally; duplicate positions will return an error.
Trait Implementations§
Auto Trait Implementations§
impl<H> Freeze for Tree<H>
impl<H> RefUnwindSafe for Tree<H>
impl<H> Send for Tree<H>
impl<H> Sync for Tree<H>
impl<H> Unpin for Tree<H>
impl<H> UnwindSafe for Tree<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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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>
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>
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