#pcd #zero-knowledge #data #knowledge #proof-carrying-data #proof-carrying

no-std arkworks-rs/ark-pcd

证明携带数据(PCD)库

1 个不稳定版本

0.1.0 2020年11月17日

#2572 in 密码学

29 个星星 & 15 个关注者

MIT/Apache

74KB
1.5K SLoC

证明携带数据(PCD)

这个arkworks库描述了一个接口并包含了一个证明携带数据(PCD)的实现。

PCD(在[CT10]中引入)是一种密码学原语,允许对可以无限期继续的分布式计算进行增量验证。由(可能无限的)有向无环图定义的计算通过在每个消息上附加正确的简洁证明来增强,允许高效地验证计算的任何中间状态。PCD是IVC(增量可验证计算)的泛化,或者说是线性计算(即图是路径图)的PCD。

本库在MIT许可证和Apache v2许可证下发布(参见许可证)。

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

PCD接口在这里,并依赖于椭圆曲线周期(例如MNT周期)。根据底层SNARK类型(s)包括独立的CircuitSpecificSetupPCDUniversalSetupPCD接口。请注意,底层主要SNARK和辅助SNARK不必相同,尽管两者都必须实现CircuitSpecificSetupSNARKUniversalSetupSNARK

构建指南

该库可以在Rust编译器的stable工具链上编译。要安装Rust的最新版本,首先按照此处的说明安装rustup,或者通过您的平台包管理器。安装rustup后,通过调用

rustup install stable

之后,使用标准Rust构建工具 cargo 来构建库

git clone https://github.com/arkworks-rs/pcd.git
cd pcd
cargo build

测试

此库附带全面的单元测试和集成测试。运行测试的方法是

cargo test --all

许可证

此存储库中的crates采用以下任一许可证,由您自行决定。

除非您明确表示不同,否则您提交的任何贡献,包括但不限于本库,都将按上述方式双重授权(如Apache v2许可证中定义),不附加任何额外条款或条件。

参考

[CT10] Proof-Carrying Data and Hearsay Arguments from Signature Cards
Alessandro Chiesa 和 Eran Tromer
ITCS 2010

[Val08] Incrementally Verifiable Computation or Proofs of Knowledge Imply Time/Space Efficiency
Paul Valiant
TCC 2008

依赖关系

~0.8–1.7MB
~34K SLoC