#trie #key-value #node #root-hash #merkle-tree #hasher #hash-db

no-std trie-db-fun

Merkle-Patricia Trie,支持键哈希和节点编码泛型

2个版本 (1个稳定版)

100.28.0 2024年2月18日
0.28.0 2024年2月18日

#279 in 数据库接口


2 个Crates使用(通过 reference-trie-fun

Apache-2.0

325KB
7.5K SLoC

Build Status

trie

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

实现有两种格式

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

仅使用Trie Hash即可在no_std构建中使用,通过禁用其(默认)std功能。

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

  • hash-db crate,用于提供Hasher(所有可生成加密哈希的事物 trait)和HashDB(可以将字节切片推入其中,并允许根据其哈希检索的数据库 trait)。适用于no_std,但在这种情况下将仅提供Hasher
  • memory-db crate,包含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

依赖项

~165KB