#merkle-tree #merkle #binary-tree #crypto #no-std

no-std merkle-lite

为 Rust Crypto 哈希函数提供简单、快速且可组合的二叉 Merkle 树和证明

16 个版本

0.1.0 2023 年 1 月 23 日
0.0.15 2023 年 1 月 23 日

#1323加密学

MIT/Apache

42KB
721

merkle-lite

CI License Cargo Documentation

为 Rust Crypto 哈希函数提供简单、快速且可组合的二叉 Merkle 树和证明

示例

从有序的哈希数组中组合 MerkleTree 非常简单,可以使用 MerkleProof 验证包含证明

use merkle_lite::MerkleTree;
use rand_core::RngCore;

// Composes MerkleTree from the 50,000 random hashes.
let tree: MerkleTree<sha3::Sha3_256> = std::iter::repeat([0u8; 32])
    .map(|mut leaf| {
        rand_core::OsRng.fill_bytes(&mut leaf);
        leaf
    })
    .take(50_000)
    .collect();

// Verifies the proof of inclusion for the arbitrary leaves.
let tree_leaves = tree.get_leaves();
let leaf_indices = [12, 0, 1, 1201, 13_903, 980];
let leaf_hashes: Vec<_> = leaf_indices
    .iter()
    .map(|index| (*index, tree_leaves[*index]))
    .collect();
assert_eq!(
    tree.proof(&leaf_indices)
        .expect("proof")
        .verify(&leaf_hashes)
        .expect("verify")
        .as_ref(),
    tree.root().expect("root"),
);

许可证

许可协议为以下之一

任选其一。

贡献

除非您明确声明,否则根据 Apache-2.0 许可证定义的,您有意提交的任何贡献,都应按照上述方式双许可,无需任何附加条款或条件。

依赖项

~330KB