30 个版本 (7 个破坏性更新)

0.8.0 2022年2月11日
0.7.9 2021年8月15日
0.7.6 2021年7月31日
0.2.1 2021年3月14日

#61 in #operating-systems

Download history 66/week @ 2024-03-13 69/week @ 2024-03-20 68/week @ 2024-03-27 60/week @ 2024-04-03 52/week @ 2024-04-10 47/week @ 2024-04-17 56/week @ 2024-04-24 47/week @ 2024-05-01 53/week @ 2024-05-08 46/week @ 2024-05-15 43/week @ 2024-05-22 104/week @ 2024-05-29 81/week @ 2024-06-05 57/week @ 2024-06-12 57/week @ 2024-06-19 49/week @ 2024-06-26

每月 247 次下载
15 crate 中使用 (3 个直接使用)

GPL-3.0 许可证

3.5MB
67K SLoC

snarkvm-marlin

Crates.io Authors License

marlin 是一个 Rust 库,它实现了

R1CS 的预处理 zkSNARK
具有
通用且可更新的 SRS

该库最初是作为 Marlin 论文 的一部分开发的。

概述

具有 预处理 的 zkSNARK 实现了对任意计算的简洁验证,而不仅仅是结构化计算的验证。非正式地说,在离线阶段,可以预处理所需的计算以生成其简短摘要;随后,在在线阶段,可以使用此摘要来检查与该计算相关的任意数量的参数。

本库中的预处理 zkSNARK 依赖于一个结构化参考字符串(SRS),它包含参数系统所需的系统参数,以生成/验证参数。本库中的 SRS 是 通用 的,这意味着它支持(确定性)预处理任何给定大小限制内的任意计算。SRS 也是 可更新的,这意味着任何人都可以向其中贡献一份新的随机数份额,这有助于其在现实世界的部署。

本库中的构建方法遵循在 Marlin 论文 中引入的方法,通过结合以下两个要素获得具有通用和可更新 SRS 的预处理 zkSNARK

  • 代数全息证明
  • 多项式承诺方案

第一个成分作为本库的一部分提供,是一种高效的R1CS(许多论证系统支持的算术电路可满足性的推广)代数全息证明。第二个成分来自poly-commit。有关评估细节,请参阅Marlin论文

性能分析

此库配置了性能分析基础设施,可以打印详细的执行时间跟踪。要启用此功能,请使用以下命令编译:cargo build --features print-trace

基准测试

以下所有基准测试都是在algebra库中实现的BLS12-381曲线上进行的,并启用了asm功能。基准测试在一台运行在3.0 GHz的Intel Xeon 6136 CPU的机器上运行。

与Groth16的运行时间比较

以下图表比较了Marlin索引器、证明者和验证器算法在单线程执行时的运行时间与Groth16(实现于groth16的R1CS特定SRS的预处理zkSNARK的当前最佳状态)相应算法的运行时间。我们评估了Marlin的算法,当实例化为来自[CHMMVW20]的PC方案(表示为“M-AHP w/ PC of [CHMMVW20]”),以及来自[MBKM19]的PC方案(表示为“M-AHP w/ PC of [MBKM19]”)时。

Indexer Prover

Verifier

多线程性能

以下图表比较了当使用来自[CHMMVW20]的PC方案(左)和来自[MBKM19]的PC方案(右)执行时,Marlin证明者的运行时间。

Multi-threaded scaling of Marlin AHP with the PC scheme from [CHMMVW20] Multi-threaded scaling of Marlin AHP with the PC scheme from [MBKM19]

证明大小

我们比较了Marlin与Groth16的证明大小。我们使用来自[CHMMVW20]和来自[MBKM19]的PC方案实例化Marlin SNARK。

方案 以字节为单位的证明大小
Marlin AHP with PC of [CHMMVW20] 880
Marlin AHP with PC of [MBKM19] 784
[Groth16] 192

参考论文

Marlin:具有通用和可更新SRS的预处理zkSNARK
Alessandro Chiesa,Yuncong Hu,Mary Maller,Pratyush Mishra,Noah Vesely,Nicholas Ward
EUROCRYPT 2020

依赖项

~4–16MB
~167K SLoC