2个版本
0.1.1 | 2019年6月4日 |
---|---|
0.1.0 | 2019年6月4日 |
#50 in #merkle
10KB
185 行
rcmerkle
计算Merkle树根
支持双向
- 一种是以传统方式使用MerkleTree,需要发送所有哈希列表。
- 二是高效,但需要保存状态,类似于状态机。需要发送新值,它将返回最新的根。
示例
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);
}
许可协议
本项目许可协议为Apache License 2.0,或MIT许可协议,您可任选其一。
- Apache License 2.0 (LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT许可协议 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
依赖
~1.5MB
~14K SLoC