#hasher #trie #hash #traits #modified #merkle-tree #base-16

blake3-hasher

blake3-256实现Hasher trait

1个不稳定版本

0.1.0 2023年3月11日

#1782 in 密码学

Apache-2.0

3KB

Build Status

字典树

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包,简单字典树格式的实现;这提供了NodeCodecTrieStream实现,使其适用于字典树数据库和字典树根。
  • 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