本文介绍另一种基于plonk的proof system--halo2,目前看到基于plonk的工程实现有三种:bellman, dusk, halo2.
AppliedZKP公开了zkEVM的设计思路。zkEVM采用数据总线(Bus Mapping)的思路,将存储和计算分开。在Bus Mapping抽取了正确的存储数据的基础上,State proof证明数据的一致性,EVM proof证明计算逻辑的正确性。
Hermez团队负责人Jordi Baylina比较清晰地给出了zkEVM大体的设计思路。本文梳理一下对zkEVM设计的理解。抛砖引玉,有理解偏差,小伙伴们可以留言讨论。
本文将介绍一种新的椭圆曲线实例-- Baby Jubjub Elliptic Curve。
在任意的零知识证明系统中,都有一个 prover 在不泄漏任何额外信息的前提下要让 verifier 确信某些陈述(Statement)是正确的。ZK-SNARK目前应用较多,有不少成熟的库,如libsnark,bellman等.
PlonK算法实现了Universal的零知识证明。SRS只需要提供比多项式阶高的可信设置即可。PlonK电路采用特殊描述,一个门只支持乘法和加法操作。电路需要证明门的输入输出满足外,还需要证明连线的连接关系。PlonK算法的底层原理是多项式承诺。PlonK算法巧妙地将电路的满足关系通过多项式承诺进行证明并验证。
powersoftau,采用MPC以及随机Beacon,完成可信设置。通过POK算法实现可验证的密钥对,并建立和上一个参与方计算结果的绑定。参与可信设置的人数可扩展,并且参与方只需要按照顺序一个个的进行指定的计算即可。协调方在接收到某个参与方的计算后,验证后,发送给下一个参与方。
zk-SNARK 是如何实现零知识证明的
PLONK算法的电路采用新的描述模型。整个电路由门电路约束和Copy约束(连线约束)组成。门电路约束和Copy约束都转换为多项式表达。Copy约束通过累加算法实现。
利用Groth16计算证明之前,需要计算出H。目前,普遍采用的是FFT算法。
本教程是circom 和 snarkjs 最经典的入门文章
不知不觉,写了不少零知识证明相关的文章,单独总结成列表。方便对零知识证明感兴趣的小伙伴,学习开发。零知识证明,乃至区块链技术,需要学习,深入研究的东西太多太多了。零知识证明学习入门...
libsnark库代码层次非常清晰。libsnark也给出了SNARK相关算法的全貌,各种Relation,Language,Proof System。为了更好的生成R1CS电路,libsnark抽象出protoboard和gadget,方便开发者快速搭建...
作为本系列的最后一篇文章,本文继续对 zk-SNARK 协议进行完善,最终形成一个完整的 zk-SNARK 协议
上一篇文章中我们学习了如何将程序转换为多项式进行证明。到这里似乎已经有点晕了,本文将对协议执行进一步的约束,并对协议展开优化。
前文主要介绍了如何构造多项式的零知识证明协议,现在将开始探讨如何构造更通用的协议。本节主要是讲如何将一组计算的证明转换为多项式进行证明。本文重点主要包括:多项式的算术性质,多项式插值等。
相信看完前一篇文章的朋友们会有一点很不解的地方:为什么我们可以如此简短的创建一个证明,并且证明很长的信息呢?在上课前我也有这同样的疑惑,甚至觉得这个是一个“黑科技”,不过相信大家看完这篇文章,就会知道如何去驾驭这个“黑科技”了。
探索零知识证明系列(五)
上一篇文章(多项式的性质与证明)中,作者介绍了如何利用多项式的性质来证明某个多项式的知识,相信大家已经对构造证明有了一些基本的认识。目前的证明协议仍然存在一些缺陷,本文将会针对这些薄弱项进行改进,进而最终构造出关于多项式的零知识证明协议。本文重点:KEA,交互式零知识证明,非交互式零知识证明和 Setup。
希望通过本系列文章,所有开发者都能亲自上手实践,在短时间内迅速入门 libsnark,一步步了解 libsnark 的基本概念.
扫一扫 - 使用登链小程序
41 篇文章,410 学分
74 篇文章,302 学分
30 篇文章,260 学分
158 篇文章,165 学分
11 篇文章,164 学分