2 个版本 (1 个稳定版)

100.29.1 2024年2月18日
0.29.1 2024年2月18日

#1589 in 神奇豆子

Apache-2.0

415KB
10K SLoC

Build Status

trie

提供Apache2许可证的Base-16修改版Merkle树("trie")数据结构的通用实现。

实现有两种格式

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

仅trie Hash可以在禁用其(默认)std功能的no_std构建中使用。

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

  • hash-db 库,用于提供 Hasher(所有可以生成加密散列的事物的特质)和 HashDB(可以将字节数组推入其中并根据其散列值检索的数据库特质)。适用于 no_std,但在此情况下将仅提供 Hasher
  • memory-db 库,包含 MemoryDB,这是一个仅使用内存映射实现的 HashDB
  • hash256-std-hasher 库,是对 32 字节密钥已散列的 std::hash::Hasher 的实现。这对于构建 MemoryDB 的后端 HashMap 非常有用。

还有三个库仅用于测试

  • keccak-hasher 库,基于 Keccak-256 算法的 Hasher 实现。
  • reference-trie 库,简单的 trie 格式实现;它提供了 NodeCodecTrieStream 实现,使其适用于 Trie DB 和 Trie Root。
  • trie-standardmap 库,是一个用于创建大型测试数据集的键/值生成工具,具有特定的质量。
  • trie-bench 库,是一个针对 trie 格式实现的全面标准基准测试工具。它使用 criterion 项目,因此可以使用稳定的 rustc 分支进行基准测试。

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

用于 Substrate 项目。如果您使用此库并希望您的项目在此列出,请联系我们。

构建 &c。

构建是通过 cargo 完成的,正如您所期望的。

构建

cargo build --all

测试

cargo test --all

基准测试

cargo bench --all

no_std 中构建

cargo build --no-default-features

依赖项

~4MB
~81K SLoC