5个版本 (3个重大更新)

0.5.0-alpha.02024年6月20日
0.4.0 2023年1月17日
0.4.0-alpha.12022年11月19日
0.3.0 2021年6月6日
0.2.0 2021年3月24日

#1390 in 密码学

Download history 18989/week @ 2024-04-20 16623/week @ 2024-04-27 17437/week @ 2024-05-04 19884/week @ 2024-05-11 18736/week @ 2024-05-18 17203/week @ 2024-05-25 18277/week @ 2024-06-01 24549/week @ 2024-06-08 26641/week @ 2024-06-15 23142/week @ 2024-06-22 17395/week @ 2024-06-29 18847/week @ 2024-07-06 20107/week @ 2024-07-13 21076/week @ 2024-07-20 20414/week @ 2024-07-27 18252/week @ 2024-08-03

83,019 monthly downloads
用于 97 个crate (60个直接使用)

MIT/Apache

80KB
1.5K SLoC

SNARK和关系特性

arkworks生态系统包括用于设计和使用零知识简洁非交互性论证(zkSNARKs)的Rust库。此存储库包含描述zkSNARKs接口的效率库以及编程它们的接口。

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

警告:这是一个学术性概念原型,并且特别尚未经过仔细的代码审查。此实现尚未准备好用于生产。

目录结构

此存储库包含两个Rustcrate

  • ark-snark:提供zkSNARKs的通用特性
  • ark-relations:提供用于编程zkSNARKs的NP关系(如R1CS)的通用特性

概述

此存储库为使用arkworks提供的简洁论证系统提供了核心基础设施。想要就各种感兴趣的问题产生论证的用户,首先将这些问题简化为NP关系,其中在ark-relations存储库中定义了各种示例。然后,使用该关系定义的SNARK系统来生成简洁的论证。ark-snark存储库定义了一个封装了一般功能以及各种类型SNARK(例如透明和通用设置)的特定特质的SNARK特质。arkworks生态系统中的不同存储库为各种特定的SNARK构造实现了此特质,例如Groth16GM17Marlin

构建指南

此库可以在Rust编译器的stable工具链上编译。要安装最新的Rust版本,首先按照此处的说明安装rustup,或者通过您平台的软件包管理器。安装好rustup后,通过以下命令安装Rust工具链:

rustup install stable

之后,使用标准Rust构建工具cargo来构建库

git clone https://github.com/arkworks-rs/snark.git
cd snark
cargo build --release

测试

此库为每个提供的存储库提供了全面的单元和集成测试。运行测试的命令为:

cargo test --all

许可证

此存储库中的存储库可根据您的选择,采用以下任一许可证:

除非您明确表示,否则您提交给此库的任何贡献都将采用上述许可证(如Apache v2许可证中定义),无需任何附加条款或条件。

致谢

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

此库的早期版本是作为论文《ZEXE:启用去中心化私有计算》的一部分开发的。


lib.rs:

用于与zkSNARK中有用关系的核心接口。目前,我们只实现了与Rank-1约束系统(R1CS)交互的API。

依赖项

~3–4.5MB
~83K SLoC