1个不稳定版本

0.1.0 2023年7月30日

#1543 in 加密学

MIT/Apache

67KB
1K SLoC

Blake3树

该库提供了一种优化并支持SIMD的增量Blake3验证器。

原因

在bao中实现的验证流没有利用Blake3实现的快速路径。在其他情况下,你可能需要一个良好的API和表示。

无论如何,你可以依赖这个库在这些情况下运行。

基准测试

我们更关注优化生成证明的服务器。由于它可能为许多客户端提供服务,因此在我们实现这些结构和功能时,我们专注于确保服务器端尽可能快和高效。

基准测试结果应该表明为内容生成证明需要少于130纳秒,左侧的数字是块数(每个块是256KB),并且有两个性能类别,分别以前缀-beginning-resume开头。

由于证明是通过流发送的,我们有两种模式:第一种模式生成/验证连接中的第一个证明,从那时起,我们可以假设客户端已经拥有我们想要证明的任何数据的证明。

块计数 gen-proof-beginning gen-proof-resume verify-proof-beginning verify-proof-resume
128 108.15 ns (✅ 1.00x) 40.00 ns (🚀 2.70x faster) 1.29 us (❌ 11.89x slower) 406.94 ns (❌ 3.76x slower)
256 112.77 ns (✅ 1.00x) 39.54 ns (🚀 2.85x faster) 1.45 us (❌ 12.87x slower) 425.84 ns (❌ 3.78x slower)
384 117.39 ns (✅ 1.00x) 40.30 ns (🚀 2.91x faster) 1.57 us (❌ 慢13.39倍) 385.81 ns (❌ 慢3.29倍)
512 117.18 ns (✅ 1.00倍) 40.08 ns (🚀 快2.92倍) 1.64 us (❌ 慢13.99倍) 429.25 ns (❌ 慢3.66倍)
640 118.22 ns (✅ 1.00倍) 41.03 ns (🚀 快2.88倍) 1.68 us (❌ 慢14.25倍) 444.00 ns (❌ 慢3.76倍)
768 123.92 ns (✅ 1.00倍) 40.70 ns (🚀 快3.04倍) 1.77 us (❌ 慢14.31倍) 464.59 ns (❌ 慢3.75倍)
896 127.28 ns (✅ 1.00倍) 42.33 ns (🚀 快3.01倍) 1.83 us (❌ 慢14.37倍) 419.08 ns (❌ 慢3.29倍)
1024 123.98 ns (✅ 1.00倍) 39.82 ns (🚀 快3.11倍) 1.82 us (❌ 慢14.66倍) 456.85 ns (❌ 慢3.69倍)
1152 123.36 ns (✅ 1.00倍) 40.60 ns (🚀 快3.04倍) 2.00 us (❌ 慢16.23倍) 504.14 ns (❌ 慢4.09倍)
1280 125.86 ns (✅ 1.00倍) 40.44 ns (🚀 快3.11倍) 1.92 us (❌ 慢15.25倍) 404.97 ns (❌ 慢3.22倍)
1408 122.72 ns (✅ 1.00倍) 42.42 ns (🚀 快2.89倍) 2.04 us (❌ 慢16.62倍) 409.35 ns (❌ 慢3.34倍)
1536 124.84 ns (✅ 1.00倍) 40.72 ns (🚀 快3.07倍) 1.95 us (❌ 慢15.61倍) 480.34 ns (❌ 慢3.85倍)
1664 129.51 ns (✅ 1.00倍) 41.09 ns (🚀 快3.15倍) 1.93 us (❌ 慢14.88倍) 430.46 ns (❌ 慢3.32倍)
1792 129.69 ns (✅ 1.00倍) 41.68 ns (🚀 快3.11倍) 2.04 us (❌ 慢15.70倍) 452.77 ns (❌ 慢3.49倍)
1920 127.72 ns (✅ 1.00倍) 40.97 ns (🚀 快3.12倍) 2.00 us (❌ 慢15.63倍) 526.98 ns (❌ 慢4.13倍)

使用 criterion-table 制作

依赖项

~3.5MB
~89K SLoC