pub struct SparseMerkleTree<F: PrimeField, H: FieldHasher<F>, const N: usize> {
pub tree: BTreeMap<u64, F>,
/* private fields */
}
Fields
tree: BTreeMap<u64, F>
data of the tree
Implementations
sourceimpl<F: PrimeField, H: FieldHasher<F>, const N: usize> SparseMerkleTree<F, H, N>
impl<F: PrimeField, H: FieldHasher<F>, const N: usize> SparseMerkleTree<F, H, N>
sourcepub fn insert_batch(
&mut self,
leaves: &BTreeMap<u32, F>,
hasher: &H
) -> Result<(), Error>
pub fn insert_batch(
&mut self,
leaves: &BTreeMap<u32, F>,
hasher: &H
) -> Result<(), Error>
Takes a collection of leaf data (hashes of secrets), inserts these hashes at leaf level, and propagates the changes up the tree to the root.
pub fn new(
leaves: &BTreeMap<u32, F>,
hasher: &H,
empty_leaf: &[u8]
) -> Result<Self, Error>
pub fn new_sequential(
leaves: &[F],
hasher: &H,
empty_leaf: &[u8]
) -> Result<Self, Error>
pub fn root(&self) -> F
sourcepub fn generate_membership_proof(&self, index: u64) -> Path<F, H, N>
pub fn generate_membership_proof(&self, index: u64) -> Path<F, H, N>
Give the path leading from the leaf at index
up to the root. This is
a “proof” in the sense of “valid path in a Merkle tree”, not a ZK
argument.
Auto Trait Implementations
impl<F, H, const N: usize> RefUnwindSafe for SparseMerkleTree<F, H, N> where
F: RefUnwindSafe,
H: RefUnwindSafe,
impl<F, H, const N: usize> Send for SparseMerkleTree<F, H, N> where
H: Send,
impl<F, H, const N: usize> Sync for SparseMerkleTree<F, H, N> where
H: Sync,
impl<F, H, const N: usize> Unpin for SparseMerkleTree<F, H, N> where
F: Unpin,
H: Unpin,
impl<F, H, const N: usize> UnwindSafe for SparseMerkleTree<F, H, N> where
F: UnwindSafe + RefUnwindSafe,
H: UnwindSafe,
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcepub fn borrow_mut(&mut self) -> &mut T
pub fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> Instrument for T
impl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
sourcefn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
pub fn vzip(self) -> V
sourceimpl<T> WithSubscriber for T
impl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
Attaches the provided Subscriber
to this type, returning a
WithDispatch
wrapper. Read more
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
Attaches the current default Subscriber
to this type, returning a
WithDispatch
wrapper. Read more