2 个版本 (1 个稳定版)
100.29.1 | 2024年2月18日 |
---|---|
0.29.1 | 2024年2月18日 |
#1589 in 神奇豆子
415KB
10K SLoC
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 格式实现;它提供了NodeCodec
和TrieStream
实现,使其适用于 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