7个版本
0.4.7 | 2024年1月22日 |
---|---|
0.4.5 | 2024年1月22日 |
#1598 in 密码学
每月51次下载
130KB
2.5K SLoC
SNARK和关系特质
arkworks生态系统包含Rust库,用于设计和使用零知识简短非交互式论证(zkSNARKs)。此仓库包含描述zkSNARKs接口的高效库,以及编写它们的接口。
此库在MIT许可证和Apache v2许可证下发布(见许可证)。
警告:这是一个学术性的概念验证原型,特别是尚未经过仔细的代码审查。此实现尚未准备好用于生产。
目录结构
此仓库包含两个Rust包
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
后,通过调用
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许可证中定义)进行双重授权,不附加任何额外的条款或条件。
致谢
本工作得到了以下机构的支持:谷歌教师奖;美国国家科学基金会;加州大学伯克利分校长期网络安全中心;以及以太坊基金会、跨链基金会和Qtum的捐款。
本库的早期版本是作为论文《ZEXE:实现去中心化私有计算》的一部分开发的。
依赖项
~6–13MB
~136K SLoC