本文提供了一份面向程序员的零知识证明(ZKP)教程,使用了 Circom 这种用于编写 ZKP 电路的领域特定语言。文档解释了 ZKP 的概念、约束条件的重要性以及设置、构建和验证 ZKP 电路的过程。它还涵盖了基本 ZKP、使用哈希函数和承诺实现数字签名方案,以及群签名方案。
玩过zkSNARK的小伙伴都知道,R1CS是目前描述电路的一种语言。目前实现zkSNARK电路的框架有libsnark(C++),bellman (Rust),ZoKrates(DSL),Circom(js)等等。有的时候,需要将一个框架中生成的电路,导入其他框架。网络上研究了一下,发现两个有意思的项目。
RISC0是一个zkVM
本文深入探讨了zk-SNARKs技术中的二次算术程序(QAP),详细解释了如何将代码转换为QAP并生成零知识证明。文章通过一个简单的三次方程示例,逐步展示了从代码扁平化到R1CS再到QAP的转换过程,并介绍了如何在多项式上进行约束检查。
本文深入探讨了零知识证明(zk-SNARKs)技术背后的数学原理,特别是将计算问题转换为二次算术程序(QAP)的过程。文章通过一个简单的例子详细解释了如何将代码扁平化、转换为R1CS系统,并最终通过拉格朗日插值法生成QAP多项式。