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日

密码学 中排名 1855

Download history 16258/week @ 2024-04-28 17345/week @ 2024-05-05 19615/week @ 2024-05-12 18416/week @ 2024-05-19 16883/week @ 2024-05-26 18086/week @ 2024-06-02 25888/week @ 2024-06-09 23718/week @ 2024-06-16 22707/week @ 2024-06-23 16862/week @ 2024-06-30 18945/week @ 2024-07-07 19733/week @ 2024-07-14 20850/week @ 2024-07-21 20047/week @ 2024-07-28 18392/week @ 2024-08-04 19890/week @ 2024-08-11

每月下载量 80,280
用于 62 个crate(15 个直接使用)

MIT/Apache

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构建,如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: Enabling Decentralized Private Computation”中开发的。


lib.rs:

此存储库包含定义SNARK基本行为的特质。

依赖关系

~4MB
~80K SLoC