[][src]Crate rcmerkle

Merkle Tree to calculate Root. Suppert Two Way: One is traditional use MerkleTree, it need send all hashed list. Two is efficient, but need to save state, like state machine. it need send new value, it will return the lastest root. Example:

use rcmerkle::{BetterMerkleTreeSHA256, Hash, MerkleTreeSHA256, SHA256};

let list = [
   "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n",
];
let hashed_list: Vec<SHA256> = list.iter().map(|v| SHA256::hash(v.as_bytes())).collect();
let mut better_merkle = BetterMerkleTreeSHA256::new();

for i in 0..hashed_list.len() {
   let root1 = MerkleTreeSHA256::root(hashed_list[0..i + 1].to_vec());
   let root2 = better_merkle.root(hashed_list[i].clone());
   assert_eq!(root1, root2);
}

Structs

BetterMerkleTree

Efficient, and save state.

Keccak256

helper Keccak256(SHA3)

MerkleTree

Traditional merkle tree.

SHA256

helper SHA256

Traits

Hash

trait to define different hash function

Type Definitions

BetterMerkleTreeKeccak256
BetterMerkleTreeSHA256
MerkleTreeKeccak256
MerkleTreeSHA256