1个不稳定版本
0.1.0 | 2023年7月30日 |
---|
#1543 in 加密学
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