1个不稳定版本
0.4.0 | 2024年5月26日 |
---|
#1807 在 密码学
被 13 个crate(10个直接) 使用
80KB
1.5K SLoC
SNARK和关系特质
arkworks生态系统包括Rust库,用于设计和使用零知识简短非交互性论证(zkSNARKs)。该存储库包含描述zkSNARKs接口的高效库,以及编程它们的接口。
本库遵循MIT许可证和Apache v2许可证发布(见许可证)。
警告:这是一个学术性的概念原型,特别是尚未经过仔细的代码审查。此实现尚未准备好用于生产使用。
目录结构
此存储库包含两个Rustcrate
ark-snark
:提供zkSNARKs的通用特质ark-relations
:提供用于编程zkSNARKs的NP关系的通用特质,例如R1CS
概述
此存储库为使用arkworks提供的简短论证系统提供了核心基础设施。想要产生关于各种感兴趣问题的论证的用户,首先需要将这些问题简化为NP关系,其中ark-relations
crate中定义了各种示例。然后,使用该关系定义的SNARK系统来生成简短论证。ark-snark
crate定义了一个SNARK
特质,它封装了通用功能以及各种类型SNARK的特定特质(例如具有透明和通用设置的SNARK)。arkworks生态系统中的不同存储库实现了此特质以适应各种特定SNARK构造,例如Groth16、GM17和Marlin。
构建指南
该库可以在Rust编译器的稳定
工具链上编译。要安装Rust的最新版本,首先按照此处的说明或通过您平台的包管理器安装rustup
。安装rustup
后,通过调用以下命令安装Rust工具链:
rustup install stable
之后,使用标准Rust构建工具cargo
构建库
git clone https://github.com/arkworks-rs/snark.git
cd snark
cargo build --release
测试
此库为提供的每个crate提供了全面的单元和集成测试。使用以下命令运行测试:
cargo test --all
许可证
此存储库中的crate根据您的选择,受以下任一许可证的许可。
- Apache许可证版本2.0(《LICENSE-APACHE》或http://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证(《LICENSE-MIT》或http://opensource.org/licenses/MIT)
除非您明确声明,否则您提交给本库的任何贡献都将采用上述双重许可(如Apache v2许可证中定义),不附加任何额外条款或条件。
致谢
本作品得到以下支持:谷歌教师奖;美国国家科学基金会;加州大学伯克利分校长期网络安全中心;以及以太坊基金会、Interchain基金会和Qtum的捐赠。
本库的早期版本是作为论文《"ZEXE: Enabling Decentralized Private Computation"》的一部分开发的。
lib.rs
:
用于处理在zkSNARKs中有用各种关系的核心接口。目前,我们仅实现了与Rank-1约束系统(R1CS)一起工作的API。
依赖项
~3–4.5MB
~82K SLoC