#zk-snarks #zero-knowledge #circom #snark #data-privacy #lego-snark

no-std legogroth16

LegoGroth16的实现,是Groth16 zkSNARK证明系统的Legosnark变体

12个重大版本

0.15.0 2024年7月18日
0.13.0 2024年5月10日
0.12.0 2024年3月4日
0.11.0 2023年10月2日
0.2.0 2022年5月2日

#261 in 加密学

Download history 7/week @ 2024-04-23 131/week @ 2024-05-07 12/week @ 2024-05-14 15/week @ 2024-05-21 4/week @ 2024-05-28 5/week @ 2024-06-04 9/week @ 2024-06-11 156/week @ 2024-06-18 12/week @ 2024-06-25 124/week @ 2024-07-16 53/week @ 2024-07-23

每月177次下载
3 crates中使用

MIT/Apache

505KB
11K SLoC

legogroth16

此仓库包含LegoGroth16的实现,是LegoSNARK变体的Groth16 zkSNARK证明系统。
此项目最初是这个的分支,但已更新为

  • 通过指定提交的证人的子集的数量,例如n,在CRS生成期间提交的证人的数量。按照惯例,它提交了电路中分配给证人的前n个变量,并且证明包含该承诺
  • 要么包含CP_link,要么省略它,但只有证明包含承诺。这里的证明包含对证人变量的2个承诺(其中一个是上面的相同),但具有不同的承诺密钥和随机数。
  • Circom电路创建和验证证明
  • 使用Snarckpack进行证明聚合

LegoSNARK论文附录D中的线性子空间zkSNARK在此处

此库根据MIT许可证和Apache v2许可证发布(见许可证)。

构建指南

构建库

cargo build --release

此库为每个提供的crate提供单元测试。使用以下命令运行测试:

cargo test

要构建不带std但带有Circom支持和证明聚合的库,请运行

cargo build --no-default-features --features=circom,aggregation,wasmer-sys

要构建具有Circom支持和证明聚合的WASM,请运行

cargo build --no-default-features --features=circom,aggregation,wasmer-js --target wasm32-unknown-unknown

要运行所有不带std的测试,请运行

cargo test --no-default-features --features=std,circom,aggregation,wasmer-sys

许可证

此库根据以下许可证之一授权,由您自行选择。

除非您明确说明,否则您提交给本库的任何贡献都应按上述方式双重许可(如Apache v2许可证中定义),没有任何附加条款或条件。

致谢

本工作得到了以下支持:谷歌教师奖;美国国家科学基金会;加州大学伯克利分校长期网络安全中心;以及以太坊基金会、Interchain基金会和Qtum的捐赠。

此库的早期版本是作为论文“ZEXE: 使去中心化私有计算成为可能”的一部分开发的。

依赖项

~6–17MB
~218K SLoC