summaryrefslogtreecommitdiffstats
path: root/src/merkletree.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/merkletree.rs')
-rw-r--r--src/merkletree.rs18
1 files changed, 5 insertions, 13 deletions
diff --git a/src/merkletree.rs b/src/merkletree.rs
index fdbb5ac..53e6cdc 100644
--- a/src/merkletree.rs
+++ b/src/merkletree.rs
@@ -48,15 +48,11 @@ impl MerkleTree {
"Merkle Tree requires at least one element"
);
- let mut leaves: Vec<Node> = data_slices
+ let leaves: Vec<Node> = data_slices
.iter()
.map(|data| Node::new_leaf(hasher.hash(data)))
.collect();
- if leaves.len() % 2 != 0 {
- leaves.push(leaves.last().unwrap().clone());
- }
-
Self::build(hasher, leaves)
}
@@ -65,11 +61,7 @@ impl MerkleTree {
where
H: Hasher + 'static + std::marker::Sync + Clone,
{
- let mut leaves = fs::hash_dir(hasher.clone(), paths);
-
- if leaves.len() % 2 != 0 {
- leaves.push(leaves.last().unwrap().clone());
- }
+ let leaves = fs::hash_dir(hasher.clone(), paths);
Self::build(hasher, leaves)
}
@@ -176,11 +168,11 @@ mod tests {
let data = &["hello".as_bytes()];
let tree = MerkleTree::new(SHA256Hasher::new(), data);
- assert_eq!(tree.height(), 2);
- assert_eq!(tree.len(), 2);
+ assert_eq!(tree.height(), 1);
+ assert_eq!(tree.len(), 1);
assert_eq!(
tree.root().hash(),
- "286d189fda11bf4e906b6973a173009f47ede16532f1bae726223f8ee155d73b"
+ "2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824"
);
}