Merkle tree fails to compute the root when there's no need in dummy nodes - fix

This commit is contained in:
Sergey Vasilyev
2020-04-28 01:12:21 +03:00
committed by Pratyush Mishra
parent 97ca70b854
commit 4e0d92a6ec

View File

@@ -161,14 +161,16 @@ impl<P: MerkleTreeConfig> MerkleHashTree<P> {
let mut cur_height = tree_height; let mut cur_height = tree_height;
let mut padding_tree = Vec::new(); let mut padding_tree = Vec::new();
let mut cur_hash = tree[0].clone(); let mut cur_hash = tree[0].clone();
while cur_height < (Self::HEIGHT - 1) as usize { let root_hash = if cur_height < Self::HEIGHT as usize {
cur_hash = hash_inner_node::<P::H>(&parameters, &cur_hash, &empty_hash, &mut buffer)?; while cur_height < (Self::HEIGHT - 1) as usize {
padding_tree.push((cur_hash.clone(), empty_hash.clone())); cur_hash = hash_inner_node::<P::H>(&parameters, &cur_hash, &empty_hash, &mut buffer)?;
cur_height += 1; padding_tree.push((cur_hash.clone(), empty_hash.clone()));
} cur_height += 1;
}
let root_hash = hash_inner_node::<P::H>(&parameters, &cur_hash, &empty_hash, &mut buffer)?; hash_inner_node::<P::H>(&parameters, &cur_hash, &empty_hash, &mut buffer)?
} else {
cur_hash
};
end_timer!(new_time); end_timer!(new_time);
Ok(MerkleHashTree { Ok(MerkleHashTree {