#merkle #merkle-tree #mafintosh #generator #tree

merkle-generator

generate a merkle tree based on incoming data

4 releases

Uses old Rust 2015

0.2.0 May 9, 2017
0.1.2 Jan 19, 2017
0.1.1 Jan 19, 2017
0.1.0 Jan 19, 2017

#7 in #mafintosh

Download history 3/week @ 2023-11-02 6/week @ 2023-11-09 2/week @ 2023-11-16 5/week @ 2023-11-23 15/week @ 2023-11-30 1/week @ 2023-12-07 5/week @ 2023-12-14 9/week @ 2023-12-21 5/week @ 2023-12-28 1/week @ 2024-01-04 1/week @ 2024-01-11 9/week @ 2024-01-18 5/week @ 2024-01-25 6/week @ 2024-02-01 5/week @ 2024-02-08 50/week @ 2024-02-15

66 downloads per month

MIT license

6KB
126 lines

merkle-generator

Rust version of mafintosh/merkle-tree-stream. Generate a merkle tree based on incoming data.

Cargo Version

merkle-generator = "0.1.2"

Usage

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);

Tree Structure

See mafintosh/flat-tree-rs for more information about how node/parent indexes are calculated.

License

The MIT License

Dependencies

~5–14MB
~238K SLoC