#merkle-tree #merkle #incoming #data #generate #node #hash

merkle-generator

基于传入数据生成梅克尔树

4个版本

使用旧的Rust 2015

0.2.0 2017年5月9日
0.1.2 2017年1月19日
0.1.1 2017年1月19日
0.1.0 2017年1月19日

#9 in #incoming

MIT许可证

6KB
126

merkle-generator

Rust版本的mafintosh/merkle-tree-stream。基于传入数据生成梅克尔树。

Cargo Version

merkle-generator = "0.1.2"

使用方法

extern crate merkle_generator;

// define how to hash incoming data
fn parent(a: &Node, b: &Node) -> Vec<u8> {
    let ref mut hash = a.hash.clone();
    hash.extend(b.hash.iter().cloned());

    digest::digest(&digest::SHA256, data.as_slice())
        .as_ref()
        .to_vec()
}

// define how to hash two merkle tree node hashes into a new parent hash
fn leaf(leaf: &Node, roots: &Vec<Node>) -> Vec<u8> {
    let data = leaf.data.clone().unwrap();
    digest::digest(&digest::SHA256, data.as_slice()).as_ref().to_vec()
}

let mut gen = Generator::new(leaf, parent);

let nodes = gen.next(b"Hello World".to_vec());
println!("{:?}", nodes);

树结构

有关节点/父索引计算的更多信息,请参阅mafintosh/flat-tree-rs

许可证

MIT许可证

依赖项

~5–13MB
~235K SLoC