#zk-snarks #snark #zero-knowledge

ark-snark-zypher

SNARK特性和关系库

1 个不稳定版本

0.4.0 2024年5月26日

#2316 in 加密学


用于 4 个crate (2 直接)

MIT/Apache

87KB
1.5K SLoC

SNARK和关系特性

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

此库根据MIT许可和Apache v2许可发布(请参阅许可)。

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

目录结构

此存储库包含两个Rustcrate

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

概述

此存储库为使用arkworks提供的简洁论证系统提供核心基础设施。希望针对各种感兴趣的问题产生论证的用户,首先将这些问题的解决方案简化为NP关系,其中许多例子在ark-relationscrate中定义。然后,在该关系上定义的SNARK系统用于生成简洁论证。ark-snarkcrate定义了一个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

测试

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

cargo test --all

许可

本仓库中的库文件根据您的选择,许可协议如下。

除非您明确说明,否则您提交给本库的任何贡献将根据上述协议(如Apache v2许可证中定义)进行双重许可,不附加任何额外的条款或条件。

致谢

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

本库的早期版本是作为论文“ZEXE: Enabling Decentralized Private Computation"的一部分开发的。


lib.rs:

本库包含定义SNARKs基本行为的特剧行为。

依赖项

~4MB
~79K SLoC