收藏本站 网站导航 开放平台 Wednesday, April 24, 2024 星期三
  • 微信

【密码专栏】超强进阶:PLONK VS Groth16(上)_趣链科技桔子_火星财经

来源 中金网 12-09 20:12
摘要: 正如鸡汤不同风味之间各具千秋,不同的zk-SNARK方案也各有所长。zk-SNARK方案可以被分为【通用】与【非通用】zk-SNARK,PLONK与Groth16分别是其中的典型代表。通过本系列,我们将对PLONK算法内容作简要介绍,并指出PLONK和Groth16算法思路上的异同。来源于火星财经专栏作家趣链科技桔子

  PLONK中,上图电路的描述由两部分组成:门约束线约束(copy constraints)。门约束固定电路中每个门的动作。此外,在电路中我们规定相连线的值应保持一致(例如a1=b1),对此线约束规定这些线的关系。接下来我们分别讨论两类约束的多项式表示。

  门约束

  在PLONK中,对于第i个门,可被描述为如下形式:

  (QLi)ai+(QRi)bi+(QOi)ci+(QMi)aibi+Qci=0

  其中Q均为常数,a, b, c则是信号的下标。具体地,在PLONK中门约束可以被分为三类:算术约束(加法门和乘法门)、布尔约束、公共输入约束

  【算术约束】最为常见,用于表示电路中的所有加法门和乘法门,此时a,b,c分别表示门的左右输入和输出信号下标,Q_C一般为0。根据门的类型剩余的符号有不同的取值:

  •   加法门:QLi=1,QRi=1,QOi=-1,QMi=0

  •   ai+bi-ci=0

  •   乘法门:QLi=0,QRi=0,QOi=-1,QMi=1

  -ci+ aibi=0

  【布尔约束】顾名思义,用于约束布尔类型的信号,其值只能取0或1。例如现在需要约束下标为j的信号∈{0, 1},那么门约束式子中各变量的取值为:

  ai=bi=j,QLi=-1,QMi=1,QOi=QRi=Qci=0

  -j+j*j=0

  另外,针对问题中出现的证明方和验证方都知道取值的输入(公共输入),需要在约束系统中有所体现。例如要求约束下标j的信号取值为v,对应的取值为:

  ai=j,QLi=1,QMi=QOi=QOi=0,Qci=-v

  j-v=0

  利用该式,我们可以很容易地表示上图中的所有门约束:

算法

  与Groth16类似,可以将所有的多项式组整合在一个多项式中:

算法

  线约束

  线约束可以分为两种情况:

  同一多项式内部,例如:a1=a3

  不同多项式之间,例如:a1=b1

  当只需要考虑情况1时,可以通过构造p(x)=P(x)来实现约束:

  X(X)=X

  p(X+1)=p(X)*(β*X(X))+Y(X)+γ)

  P(X+1)=P(X)*(β*X(σ(X))+Y(X)+γ)

  p(0)=P(0)=1

  其中β,γ为随机数,X->Y表示了待约束的多项式(例如: x-> a(x) ),P(x)使用了x的置换σ(x)。对于下面例子:

  X(1) → Y(1)

  X →Y:X(2) → Y(2) and,Y(1)=Y(3)

  X(3) → Y(3)

  σ(1)=3

  σ(X):σ(2)=2

  σ(3)=1

  当且仅当Y(1)=Y(3)成立时,p(x)=P(x)。

  现在,让我们增加问题的复杂度:需要约束的多项式个数为k时(仍然只考虑情况1)。自然地,设门的总数为n,我们可以对第j个多项式构造对应的p_j(x)=P_j(x),即

算法

  进一步地,情况2的出现要求对以下情况中的x作区分:

  pj(x) and pi(x) (i不等于j,i,j∈[ n ])

  那么可以增加对x的映射,对于第j个多项式:

  X(X)=(j-1)*n+X

  p(X+1)=p(X)*(β*X(X))+Y(X)+γ)

  P(X+1)=P(X)*(β*X(σ(X))+Y(X)+γ)

  p(0)=P(0)=1

  以上就是线约束的全部内容,其实质是为了保证电路中同一条或相连线上的值相等。

  与Groth16类似,将上述的约束联立将得到一个完整的PLONK约束系统。通过将抽象的代码和电路转化为约束系统R1CS,我们可以将一个零知识证明问题固定下来。让我们带着问题进入下篇:PLONK中如何将R1CS转为多项式描述?它与Groth16做法区别在何处?敬请期待!

算法
[1] Ariel Gabizon and Zachary J. Williamson and Oana Ciobotaru. (2019). PLONK: Permutations over Lagrange-bases for Oecumenical Noninteractive arguments of Knowledge.

  [2] Sean Bowe and Ariel Gabizon and Ian Miers. (2017). Scalable Multi-party Computation for zk-SNARK Parameters in the Random Beacon Model.

  [3] https://vitalik.ca/general/2019/09/22/plonk.html

  本文来源:趣链科技桔子

  原文标题:【密码专栏】超强进阶:PLONK VS Groth16(上)

  声明:本文为入驻“火星号”作者作品,不代表火星财经官方立场。

  转载请联系网页底部:内容合作栏目,邮件进行授权。授权后转载时请注明出处、作者和本文链接。 未经许可擅自转载本站文章,将追究相关法律责任,侵权必究。

  提示:投资有风险,入市须谨慎,本资讯不作为投资理财建议。

  免责声明:作为区块链信息平台,本站所提供的资讯信息不代表任何投资暗示,本站所发布文章仅代表个人观点,与火星财经官方立场无关。虚拟货币不具有法定货币等同的法律地位,参与虚拟货币投资交易存在法律风险。火星财经反对各类代币炒作,请投资者理性看待市场风险。

  语音技术由科大讯飞提供

  关键字:算法以太坊安全性零知识证明ZK-SNARK

免责声明:中金网发布此信息目的在于传播更多信息,与本网站立场无关。中金网不保证该信息的准确性、真实性、完整性、有效性等。相关信息并未经过本网站证实,不构成任何投资建议,据此操作,风险自担。