diff --git a/src/mmr.rs b/src/mmr.rs index 723cebe..cbbbc6c 100644 --- a/src/mmr.rs +++ b/src/mmr.rs @@ -162,6 +162,14 @@ impl> MerkleProof { } } + pub fn mmr_size(&self) -> u64 { + self.mmr_size + } + + pub fn proof_items(&self) -> &[T] { + &self.proof + } + pub fn verify(&self, root: T, mut pos: u64, elem: T) -> Result { let peaks = get_peaks(self.mmr_size); let mut sum_elem = elem; diff --git a/src/util.rs b/src/util.rs index 1c68af0..94ec617 100644 --- a/src/util.rs +++ b/src/util.rs @@ -1,4 +1,4 @@ -use crate::{MMRStore, Merge, Result, MMR}; +use crate::{MMRStore, Merge, MerkleProof, Result, MMR}; use std::cell::RefCell; use std::collections::HashMap; use std::fmt::Debug; @@ -70,4 +70,9 @@ impl> MemMMR { mmr.commit()?; Ok(pos) } + + pub fn gen_proof(&self, pos: u64) -> Result> { + let mmr = MMR::>::new(self.mmr_size, &self.store); + mmr.gen_proof(pos) + } }