31 releases (18 breaking)

0.22.0 Jun 21, 2022
0.21.0 Jul 17, 2020
0.20.0 May 26, 2020
0.17.0 Mar 25, 2020
0.7.1 Jul 1, 2019

#32 in Cryptography

Download history 1197/week @ 2022-03-12 2419/week @ 2022-03-19 2151/week @ 2022-03-26 2307/week @ 2022-04-02 2115/week @ 2022-04-09 2064/week @ 2022-04-16 2330/week @ 2022-04-23 1424/week @ 2022-04-30 2600/week @ 2022-05-07 2600/week @ 2022-05-14 2236/week @ 2022-05-21 2405/week @ 2022-05-28 2330/week @ 2022-06-04 1922/week @ 2022-06-11 2283/week @ 2022-06-18 1795/week @ 2022-06-25

8,702 downloads per month
Used in 25 crates (12 directly)

BSD-3-Clause

240KB
5K SLoC

merkle

Build Status Issues License

merkle is a lightweight Rust implementation of a Merkle tree.

Features

  • external dependency agnostic
  • std::hash::Hasher compatibility
  • standard types hasher implementations
  • #[derive(Hashable)] support for simple struct
  • customizable merkle leaf/node hashing algorithm
  • support for custom hash types (e.g. [u8; 16], [u64; 4], [u128; 2], struct)
  • customizable hashing algorithm
  • linear memory layout, no nodes on heap
  • buildable from iterator, objects or hashes
  • certificate transparency style merkle hashing support
  • SPV support included (via proof type)
  • supports power of 2 arity merkletrees (only)
  • supports compound merkletrees (a tree of merkletrees)
  • supports compound-compound merkletrees (a tree of compound merkletrees)

Documentation

Documentation is available.

Examples

The most relevant examples are located in the following files:

  • test_common.rs: custom hash example xor128, misc shared utils
  • test_xor128.rs: most comprehensive tests for library features
  • proof.rs: contains impl and tests for proofs across pow2 arity trees

Building and testing

# Run tests in release mode
cargo test --release --all

# Run ignored tests in release mode
cargo test --release --all -- --ignored

Bug Reporting

Please report bugs either as pull requests or as issues in the issue tracker. merkle has a full disclosure vulnerability policy. Please do NOT attempt to report any security vulnerability in this code privately to anybody.

License

See LICENSE.

Dependencies

~2.5–3.5MB
~69K SLoC