#trie #root-hash #key #merkle-tree #hasher #key-value #byte-slice

无 std trie-db

Merkle-Patricia Trie 泛型化键哈希器和节点编码

35 个不稳定版本

0.29.1 2024 年 5 月 14 日
0.28.0 2023 年 9 月 12 日
0.27.1 2023 年 3 月 17 日
0.24.0 2022 年 8 月 4 日
0.12.2 2019 年 3 月 29 日

#40Rust 模式

Download history 43052/week @ 2024-05-01 39408/week @ 2024-05-08 45031/week @ 2024-05-15 54064/week @ 2024-05-22 56096/week @ 2024-05-29 42077/week @ 2024-06-05 43611/week @ 2024-06-12 43109/week @ 2024-06-19 45725/week @ 2024-06-26 45181/week @ 2024-07-03 47085/week @ 2024-07-10 59434/week @ 2024-07-17 59459/week @ 2024-07-24 45689/week @ 2024-07-31 65953/week @ 2024-08-07 59914/week @ 2024-08-14

242,460 每月下载量
659 个 crate 中使用 (直接使用 15 个)

Apache-2.0

325KB
7.5K SLoC

Build Status

字典树

基于 Apache2 许可证的 Base-16 Modified Merkle Tree ("Trie") 数据结构的泛型实现。

实现有两种格式

  • Trie DB (trie-db crate),可以与后端数据库结合使用,提供可持久化的字典树结构,其内容可以修改,且其根哈希可以高效重新计算。
  • Trie Root (trie-root crate),提供了一种闭式函数,该函数接受键和值的枚举,并提供一个完全在内存和闭式中计算出的根。

单独的 Trie Hash 可以通过禁用其(默认的)std 特性在 no_std 构建中使用。

除此之外,还提供了一些支持 crate

  • hash-db crate,用于提供 Hasher(用于所有可以生成加密哈希的事物)和 HashDB(用于可以将字节数组推入其中,并根据其哈希检索它们的数据库)。适用于 no_std,但在这种情况下将仅提供 Hasher
  • memory-db crate,包含 MemoryDB,这是一个使用内存映射实现的 HashDB
  • hash256-std-hasher crate,这是一个用于 32 字节键的 std::hash::Hasher 实现。对于构建 MemoryDBHashMap 非常有用。

还有三个仅用于测试的 crate

  • keccak-hasher crate,这是一个基于 Keccak-256 算法的 Hasher 实现。
  • reference-trie crate,这是一个简单字典树的实现;它提供了 NodeCodecTrieStream 实现,使其适用于 Trie DB 和 Trie Root。
  • trie-standardmapcrate,一个用于创建满足特定质量要求的大型测试数据集的关键字/值生成工具。
  • trie-benchcrate,用于对trie格式实现进行综合标准基准测试的工具。使用criterion项目,可以在稳定的rustc分支上进行基准测试。

秉承Rust的所有精神,这个项目旨在实现可靠、安全和高性能。

用于Substrate项目。如果您使用此crate并希望您的项目列在这里,请与我们联系。

构建与c.

构建通过cargo进行,正如您所预期的那样。

构建

cargo build --all

测试

cargo test --all

基准测试

cargo bench --all

no_std下构建

cargo build --no-default-features

lib.rs:

trie接口和实现。

依赖项

~165KB