本系列专题将基于@郭宇老师的视频、讲义及相关论文,系统梳理一下PlonkSNARK的各个组件,尽量做到代码级地剖析深度。预期将涵盖以下几个章节:PlonkIOP协议实现zerokownledge实现Non-Interactivelookup特性Thanks感谢@郭宇老师
本文介绍的这些知识点是理解plookup的基础
本文介绍另一种基于plonk的proof system--halo2,目前看到基于plonk的工程实现有三种:bellman, dusk, halo2.
本文主要介绍plookup算法的思路
PlonK算法实现了Universal的零知识证明。SRS只需要提供比多项式阶高的可信设置即可。PlonK电路采用特殊描述,一个门只支持乘法和加法操作。电路需要证明门的输入输出满足外,还需要证明连线的连接关系。PlonK算法的底层原理是多项式承诺。PlonK算法巧妙地将电路的满足关系通过多项式承诺进行证明并验证。
Matter-Labs开源了PLONK算法的验证电路,能实现多个PLONK证明的聚合证明。聚合电路证明某个证明可验证,并且验证使用的VK是正确的。注意的是,PLONK算法验证的最后一步(配对函数)并没有在电路中验证,而是依赖智能合约进行验证。
zkSync通过zk Rollup协议,实现了L2的转账。zkSync项目非常完整,是学习L2非常好的参考项目。zkSync采用Plonk零知识证明算法向L1证明状态的正确性。Plonk算法是Universal的零知识证明算法,只需要一次可信设置。zkSync电路设计采用Chunk设计,支持不同的区块大小。
zkSync虽然采用PLONK零知识证明算法,但是电路的搭建开发采用的R1CS形式。zkSync电路处理包括:1/电路转换 2/PLONK证明计算。Transpile实现了电路的格式转换。电路转换的目的是获取:1/sigma函数 2/ 门系数多项式。
在本文中,我们提出了对PLONK算术化 2 变体的折叠方案。扩展松弛PLONK 算术化,以接受2次自定义门和具有更高门扇入扇出数的电路。 最后,概述了未来工作的路径,包括折叠更高次的门、支持查找门和为松弛PLONK算术化设计 IOP。
zkSync采用PlonK零知识证明系统。在电路设计上,非常巧妙的将交易分割成一个个小的通用处理单元(Operation)。一个Operation对应的证明电路逻辑支持所有可能交易的Operation逻辑。多个有关联的Operation电路组成交易电路。多个交易的电路再组合成区块电路。从而,在固定大小的区块中也能包含不同组合的交易。
本文介绍了如何使用zkSNARK(如Plonk)构建算术电路来进行零知识证明,特别是范围证明和集合成员证明。通过具体的例子,展示了如何将数学表达式转化为电路,并讨论了其中的技术和挑战。
PLONK算法的电路采用新的描述模型。整个电路由门电路约束和Copy约束(连线约束)组成。门电路约束和Copy约束都转换为多项式表达。Copy约束通过累加算法实现。
本文深入探讨了零知识证明协议Plonk,详细介绍了如何将算术电路的计算过程编码为多项式,并利用多项式承诺方案和交互式预言证明(IOPs)实现高效验证。文章涵盖了SNARKs的基本概念、根的单位在多项式编码中的应用、电路约束的数学表达,以及如何通过Fiat-Shamir启发法将交互式协议转为非交互式证明。内容涉及密码学、多项式运算及复杂协议设计,属于高级密码学技术解析。
我们最近发布了Mina证明系统的更新,名为Kimchi。在这篇文章中,我们将介绍Kimchi是什么以及它的不同之处。简介作者:DavidWong,o1Labs加密工程师,Mina协议贡献者我们最近发布了Mina证明系统的更新,名为Kimchi。Kimchi是我们
PLONK的原始论文存在一个零知识性的问题。商t多项式没有添加随机性,导致simulator不能模拟出证明。