#[repr(C)]pub struct IndexedMerkleTree<H, I>where
H: Hasher,
I: CheckedAdd + CheckedSub + Copy + Clone + PartialOrd + ToBytes + TryFrom<usize> + Unsigned,{
pub merkle_tree: MerkleTree<H>,
/* private fields */
}
Fields§
§merkle_tree: MerkleTree<H>
Implementations§
Source§impl<H, I> IndexedMerkleTree<H, I>where
H: Hasher,
I: CheckedAdd + CheckedSub + Copy + Clone + PartialOrd + ToBytes + TryFrom<usize> + Unsigned,
usize: From<I>,
impl<H, I> IndexedMerkleTree<H, I>where
H: Hasher,
I: CheckedAdd + CheckedSub + Copy + Clone + PartialOrd + ToBytes + TryFrom<usize> + Unsigned,
usize: From<I>,
pub fn new( height: usize, canopy_depth: usize, ) -> Result<Self, IndexedReferenceMerkleTreeError>
Sourcepub fn init(&mut self) -> Result<(), IndexedReferenceMerkleTreeError>
pub fn init(&mut self) -> Result<(), IndexedReferenceMerkleTreeError>
Initializes the reference indexed merkle tree on par with the on-chain indexed concurrent merkle tree. Inserts the ranges 0 - BN254 Field Size - 1 into the tree.
Sourcepub fn init_opt(&mut self) -> Result<(), IndexedReferenceMerkleTreeError>
pub fn init_opt(&mut self) -> Result<(), IndexedReferenceMerkleTreeError>
Initializes the reference indexed merkle tree on par with the on-chain indexed concurrent merkle tree. Inserts the ranges 0 - BN254 Field Size - 1 into the tree.
pub fn get_path_of_leaf( &self, index: usize, full: bool, ) -> Result<BoundedVec<[u8; 32]>, IndexedReferenceMerkleTreeError>
pub fn get_proof_of_leaf( &self, index: usize, full: bool, ) -> Result<BoundedVec<[u8; 32]>, IndexedReferenceMerkleTreeError>
pub fn root(&self) -> [u8; 32]
pub fn update( &mut self, new_low_element: &IndexedElement<I>, new_element: &IndexedElement<I>, new_element_next_value: &BigUint, ) -> Result<(), IndexedReferenceMerkleTreeError>
pub fn append( &mut self, value: &BigUint, indexed_array: &mut IndexedArray<H, I>, ) -> Result<(), IndexedReferenceMerkleTreeError>
pub fn get_non_inclusion_proof( &self, value: &BigUint, indexed_array: &IndexedArray<H, I>, ) -> Result<NonInclusionProof, IndexedReferenceMerkleTreeError>
pub fn verify_non_inclusion_proof( &self, proof: &NonInclusionProof, ) -> Result<(), IndexedReferenceMerkleTreeError>
Trait Implementations§
Source§impl<H, I> Clone for IndexedMerkleTree<H, I>where
H: Hasher + Clone,
I: CheckedAdd + CheckedSub + Copy + Clone + PartialOrd + ToBytes + TryFrom<usize> + Unsigned + Clone,
impl<H, I> Clone for IndexedMerkleTree<H, I>where
H: Hasher + Clone,
I: CheckedAdd + CheckedSub + Copy + Clone + PartialOrd + ToBytes + TryFrom<usize> + Unsigned + Clone,
Source§fn clone(&self) -> IndexedMerkleTree<H, I>
fn clone(&self) -> IndexedMerkleTree<H, I>
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreAuto Trait Implementations§
impl<H, I> Freeze for IndexedMerkleTree<H, I>
impl<H, I> RefUnwindSafe for IndexedMerkleTree<H, I>where
I: RefUnwindSafe,
H: RefUnwindSafe,
impl<H, I> Send for IndexedMerkleTree<H, I>
impl<H, I> Sync for IndexedMerkleTree<H, I>
impl<H, I> Unpin for IndexedMerkleTree<H, I>
impl<H, I> UnwindSafe for IndexedMerkleTree<H, I>where
I: UnwindSafe,
H: UnwindSafe,
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> 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