5 个版本 (3 个破坏性)
0.5.0-alpha.0 | 2024年6月20日 |
---|---|
0.4.0 | 2023年1月17日 |
0.4.0-alpha.1 | 2022年11月19日 |
0.3.0 | 2021年6月6日 |
0.2.0 | 2021年3月24日 |
在 密码学 中排名 1855
每月下载量 80,280
用于 62 个crate(15 个直接使用)
87KB
1.5K SLoC
SNARK和关系特质
arkworks生态系统由Rust库组成,用于设计和使用零知识简洁非交互论证(zkSNARKs)。此存储库包含描述zkSNARKs接口以及编程它们的接口的高效库。
此库在MIT许可证和Apache v2许可证下发布(参见许可证)。
警告:这是一个学术性的概念原型,特别是尚未经过仔细的代码审查。此实现尚未准备好用于生产。
目录结构
此存储库包含两个Rustcrate
ark-snark
:提供zkSNARKs的通用特质ark-relations
:提供用于编程zkSNARKs的NP关系(如R1CS)的通用特质
概述
本存储库提供了使用arkworks提供的简洁论证系统的核心基础设施。想要就各种感兴趣的问题生成论证的用户,首先需要将这些问题简化为NP关系,这些关系的各种示例已在ark-relations
存储库中定义。然后,使用该关系定义的SNARK系统来生成简洁的论证。ark-snark
存储库定义了一个SNARK
特质,它封装了通用功能,以及针对各种类型SNARK(例如具有透明和通用设置的SNARK)的特定特质。arkworks生态系统中的不同存储库实现了此特质,以实现各种特定的SNARK构建,如Groth16、GM17和Marlin。
构建指南
该库可以在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许可证版本2.0(LICENSE-APACHE或https://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
:
此存储库包含定义SNARK基本行为的特质。
依赖关系
~4MB
~80K SLoC