VERIFY:ZKSwap团队解读零知识证明PLONK协议

在上一篇?ZKSwap团队解读零知识证明PLONK电路?主要描述了PLONK协议里的一个核心部分,用置换校验的方法去证明电路门之间的一致性;接下来,将继续分享如何证明门的约束关系的成立,以及整体的协议剖析。

门约束

举个简单的例子,假如存在一个电路,电路中仅有3个乘法门,对应的约束如下:

L1*R1-O1=0

L2*R2-O2=0

L3*R3-O3=0

进行多项式压缩:定义多项式函数L(X)、R(X)、O(X)满足:

L(1)=L1,R(1)=R1,O(1)=O1

L(2)=L2,R(2)=R2,O(2)=O2

L(3)=L3,R(3)=R3,O(3)=O3

此时,定义新的多项式函数F(X),令F(X)=L(X)*R(X)-O(X)

则有:

F(1)=L(1)*R(1)-O(1)=0

数据:zkSync桥接交易参与用户量突破200万:8月9日消息,据Dune数据显示,以太坊Layer2扩容解决方案zkSync桥接交易参与用户总量已突破200万,本文撰写时达到2,003,863个,跨链桥接存储总价值为1,244,391ETH,按照当前价格计算约合23.1亿美元。[2023/8/9 21:33:32]

F(2)=L(2)*R(2)-O(2)=0

F(3)=L(3)*R(3)-O(3)=0

也就是表明:如果多项式函数F(X)在X=1、2、3处有零点,则说明门关系约束成立。

多项式函数F(X)在X=1、2、3处有零点则表明多项式F(X)可以被(X-1)(X-2)(X-3)整除,为了和论文一致,我们把这个多项式函数设置成Z(X),即:

F(X)=T(X)*Z(X)==>T(X)=F(X)/Z(X)

如果能证明T(X)是一个多项式,则说明多项式F(X)与Z(X)有相同的零点,进而说明门约束关系成立。

以太坊L2总锁仓量涨至94亿美元 zkSync Era突破2亿美元:金色财经报道,据L2BEAT数据显示,当前以太坊Layer2总锁仓量涨至94亿美元,7日涨幅5.64%。其中,锁仓量前五分别为:ArbitrumOne(61.6亿美元,7日涨幅4.63%);Optimism(20.1亿美元,7日涨幅5.03%);dYdX(3.47亿美元,7日涨幅2.03%);zkSyncEra(2.01亿美元,7日涨幅79.628%);ImmutableX(1.31亿美元,7日涨幅2.43%)。[2023/4/11 13:56:14]

一般过程应该如下:

P计算F(X)并把F(X)发送给V;V根据Z(X)直接校验F(X)/Z(X)但是如此过程存在两个问题,一个是复杂性问题,假如F(X)的阶为n,那通信复杂度就是O(n);而是安全性问题,多项式F(X)完全暴露给V。

那应该如何解决这两个问题呢?最佳的答案可能就是:多项式承诺

多项式承诺

FatMan:对链上活动征税以支付自己的费用是反加密货币的:金色财经报道,Terra研究员FatMan发推称,Terra Rebels是最初有希望指导 LUNC 的一群杂乱无章的志愿者,已经开始接受来自竞争的L1的 \"私人赞助\",并希望对所有链上交易征税以支付 \"贡献者\"。对链上活动征税以支付自己的费用是反加密货币的。开发者的资金应该来自现有的国库、捐赠或营利性企业。将广告空间出售给为非选举产生的Discord版主提供薪水的真正竞争对手也不是一个好主意。[2022/10/17 17:28:32]

什么是多项式承诺?就是证明方P用一个很短的数据来代表一个多项式F,这些很短的数据可以被验证方V用来验证多项式F在某一点的值确实为证明方P声称的值z。

具体看一下论文里的定义:

由图可知:

Setup:初始化,生成计算多项式承诺需要的一些必备参数;Commit:计算多项式承诺,其结果是一个值;Open:返回与多项式承诺对应的多项式函数;VerifyPoly:验证多项式承诺是否和多项式函数一致;CreateWitness:证明多项式函数在某一点的值是否是证明方P声称的值,具体的数学方法就是:判断多项式是否能被整除,即:VerifyEval:验证方V验证多项式函数在某一点的值是否是证明方P声称的值,具体的数学方法是:利用双线性配对验证其数学乘法逻辑关系。继续回到我们上面的问题:

IPOR Labs推出新协议,为DeFi信贷市场带来透明度和稳定性:金色财经报道,链上利率衍生品服务提供商IPOR Labs AG周二宣布正在推出一项协议,旨在为去中心化金融(DeFi)信贷市场带来透明度和稳定性。通过其Inter Protocol Overblock Rate指数(IPOR),交易者将能够对冲、套利和对利率变动采取定向头寸,以管理其在以太坊区块链上的信用投资组合的风险。IPOR指数是一种基于智能合约交易及其自身利率衍生品去中心化交易所(DEX)的标准化基准利率,基于伦敦银行同业拆借利率(LIBOR)的算法模型,但适用于DeFi。

IPOR Labs首席执行官Darren Camas表示:“我们需要将机构固定收益市场与DeFi连接起来,为此,他们需要风险管理工具和透明度”。[2022/8/17 12:29:35]

证明方如何证明:T(X)=F(X)/Z(X),我们再简化一下场景,就令Z(X)=X-1,则:

T(X)=F(X)/(X-1)==>T(X)*(X-1)=F(X)==>T(X)*X=F(X)+T(X)

MatterLabs已在以太坊主网部署Layer2扩展工具zkSync:据官方消息,以太坊扩容项目MatterLabs宣布已在以太坊主网部署其Layer2扩展工具zkSync。MatterLabs团队表示,zkSync将极大解决以太坊上的交易成本(Gas)费,平均交易费用旨在长期保持在的小于0.01美元的低位,并逐步实现最高达2000TPS的吞吐量。目前,zkSync已经实现「可扩展的支付功能」,后续将依次实现「智能合约部署」、「隐私」和「加密抗审查」等功能,最终实现为数十亿人提供可扩展的、保护隐私的、公平的且无许可的加密基础设施。(Medium)[2020/6/19]

对应多项式承诺的协议可知:证明方P其实是想证明多项式函数F(X)再X=1处的值为0,因此根据协验证方只需要证明:

e(Commit(T(x)),x*G)=?e(Commit(F(x))+Commit(T(x)),G)(双线性配对的性质)

可以看出,利用多项式承诺的数学工具,既可以实现复杂度的优化,又可以实现隐私保护。

协议

接下来分析一下完整的PLONK协议:

Relation

上图表示了PLONK算法里,要证明的一种关系,需要说明的是:

w代表着电路里的输入、输出,总共3n个,n是电路里乘法门的数量,每个门都有左输入,右输入和输出,因此w总共有3n个;q*代表着选择向量,它的取值对应这这个是乘法门,还是加法门等类似的约束类型σ代表着置换多项式,其表示门之间的一致性约束索引倒数第一个公式代表门之间的约束成立倒数第二个公式代表门的约束关系成立CRS&P_Input&V_Input

上图表示了PLONK算法里的CRS设置,以及证明方P和验证方V的一些输入,需要说明的是:

整个协议都是基于多项式的,因此需要构建对应的多项式形式。多项式σ的阶是3n的,由于和多项式承诺相关的CRS最高的阶位n+2,因此需要把σ拆分成3个多项式S,分别记录每个多项式的置换关系(L、R、O);为了减少通信复杂度和保护隐私,协议基于多项式承诺构建,因此验证方V的输入都是承诺值。Prove

上图表示了PLONK算法里证明方的一些操作,需要说明的是:

b1...b9是随机数,从用法看是为了安全,但是我暂时也没明白,不加这个随机数,又会有什么安全问题?a(X)、b(X)、c(X)分别是代表了电路里的左输入,右输入和输出、、表示多项式的承诺值,参考多项式承诺小节里的承诺计算方法

上图表示了PLONK算法里证明方的一些操作,主要是置换校验,参考第一篇的置换校验的协议过程,生成多项式z(X),需要说明的是:

β和?都是用来生成置换校验函数的参数,详见第一篇里f(x)和g(x)的生成过程;z(X)的生成方式对应置换校验里跨多项式的生成过程,Li(X)为拉格朗日多项式基,性质满足,尽在x=i的时候为1,其他为0;注意区分ω和w,ω是群H的生成元,是多项式的自变量的取值。w是电路的左输入,右输入和输出,是多项式L,R,O在在群H上的取值。

上图表示了PLONK算法里证明方P的一些操作,主要是把门约束和门之间的一致性约束组合到一起,通过α,需要说明的是:

根据前面的描述,门约束多项式和一致性约束多项式在群H上的所有元素都是取值为0的,因此都会被多项式ZH(X)整除,等同于上面所述的T(X);因此,证明方只要能证明整除的结果的确是多项式,那就能证明,门约束多项式和一致性多项式在群H所有元素上取值为0,即所有约束关系成立,即电路逻辑成立;可以知道的是t(X)的阶最高为3n,但是用于计算承诺的CRS只到了n的级别,因此需要把多项式t(X)拆分,然后单独计算承诺值。

上图表示了PLONK算法了证明方P的一些操作,主要根据多项式承诺的协议,前面P算出了多个多项式在点x=z处的值是多少,现在要用多项式承诺协议去证明,这些计算是正确的,需要说明的是:

为了减少验证方V的操作复杂度,t(X)的分子部分r(X)在x=z处的值,P计算好,然后验证方直接验证,其他的操作类似;v的值看起来是为了更安全;Wz(X)对应多项式协议里的CreateWitness操作,证明这些多项式r(X),a(X),b(X)等在x=z处的值确实等于r,a,b等,对Wzw(X)同理,并返回承诺值。Verify

至此,证明方P的所有操作都完事了,接下来都是验证方V的操作。

上图表示了PLONK算法里验证方V的一些操作,主要重新生成相关的参数,确保证明方P没有作恶。需要说明的是:

从输入看,比较清晰,就是一些公开的输入和证明方P的证明输出;根据输入,生成置换校验过程中需要的一些参数

上图表示了PLONK算法里验证方V的一些操作,对于一些公开的,并且计算复杂度很小的多项式,其在x=z处的值还是需要自己计算,更为方便。需要说明的是:

根据证明方P的过程来看,验证方V的核心工作就是验证两个多项式承诺;两个多项式承诺验证需要两个配对,可以通过一个参数组合成一个配对,即μ;在验证前,先计算Wz(x),Wzw(x)的分母在x=z处的值,两部分,减数和被减数,分别对应、。μ作为系数的,就是对应Wzw(X)多项式的。最后通过一个双线性配对操作完成两个多项式承诺的验证。结束

至此,PLONK算法的协议原理已全部分享完成,公式很密集,但是细分下来,又很有层次感。能坚持看完,已实属不易。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

链链资讯

莱特币EFI:星辰:1月24日BTC早间行情解析

行情分析: 日线级别上看,昨日阴K结尾,价格于布林中轨附近承压,布林通道缩口,攻击线与防守线均偏向下行,附图指标微微向下放量,价格有下行的意图,目前关注32400的压制力度.

[0:0ms0-13:603ms