1个不稳定版本
0.1.0 | 2023年3月11日 |
---|
#1782 in 密码学
3KB
字典树
Apache2许可下提供的Base-16修改版Merkle树("字典树")数据结构的泛型实现。
实现有两种格式
- 字典树数据库(
trie-db
包),可以与后端数据库结合使用,提供一个可以修改内容并高效重新计算根哈希的持久字典树结构。 - 字典树根(
trie-root
包),提供一个封闭形式的函数,该函数接受键和值的枚举,并在内存中封闭形式地计算根。
仅使用字典树哈希即可在no_std
构建中使用,通过禁用其(默认)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
包,简单字典树格式的实现;这提供了NodeCodec
和TrieStream
实现,使其适用于字典树数据库和字典树根。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
依赖
~1.5MB
~40K SLoC