#merkle-tree #merkle #tree #state-machine

rcmerkle

高效的Merkle树计算函数和状态机

2个版本

0.1.1 2019年6月4日
0.1.0 2019年6月4日

#50 in #merkle

MIT/Apache

10KB
185

Latest Version Latest Version

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许可协议,您可任选其一。

任选其一。

依赖

~1.5MB
~14K SLoC