Merge pull request #5 from nervosnetwork/refactor-proof-verify

refactor: MerkleProof calculate_root
This commit is contained in:
Jiang Jinyang
2020-01-20 18:59:38 +08:00
committed by GitHub
+7 -2
View File
@@ -171,7 +171,7 @@ impl<T: PartialEq + Debug, M: Merge<Item = T>> MerkleProof<T, M> {
&self.proof
}
pub fn verify(&self, root: T, mut pos: u64, elem: T) -> Result<bool> {
pub fn calculate_root(&self, mut pos: u64, elem: T) -> Result<T> {
let peaks = get_peaks(self.mmr_size);
let mut sum_elem = elem;
let mut height = 0;
@@ -211,6 +211,11 @@ impl<T: PartialEq + Debug, M: Merge<Item = T>> MerkleProof<T, M> {
M::merge(&proof, &sum_elem)
};
}
Ok(root == sum_elem)
Ok(sum_elem)
}
pub fn verify(&self, root: T, pos: u64, elem: T) -> Result<bool> {
self.calculate_root(pos, elem)
.map(|calculated_root| calculated_root == root)
}
}