From 0edcad0098add50d867d23a35014993928af7651 Mon Sep 17 00:00:00 2001 From: jjy Date: Thu, 19 Sep 2019 19:19:44 +0800 Subject: [PATCH] Optimize merkle proof verify --- src/mmr.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/mmr.rs b/src/mmr.rs index 3fa80fb..723cebe 100644 --- a/src/mmr.rs +++ b/src/mmr.rs @@ -169,7 +169,7 @@ impl> MerkleProof { let mut proof_iter = self.proof.iter(); // calculate peak's merkle root // start bagging peaks if pos reach a peak pos - while !peaks.contains(&pos) { + while peaks.binary_search(&pos).is_err() { let proof = match proof_iter.next() { Some(proof) => proof, None => break, @@ -189,8 +189,8 @@ impl> MerkleProof { } // bagging peaks - // bagging with left peaks if pos is last peak - let mut bagging_left = Some(&pos) == peaks.last(); + // bagging with left peaks if pos is last peak(last pos) + let mut bagging_left = pos == self.mmr_size - 1; for proof in &mut proof_iter { sum_elem = if bagging_left { M::merge(&sum_elem, &proof)