http://www.7klian.com

零常识证明 PLONK电路道理

出格留意的是,X’a(x), X’b(x), X’c(x)只改变的是X的编号,并不改变Y的功效。
PLONK电路

p(0) = 1

再确认累加功效的初始和最后一致。
p(x+1) = p(x)*(v1+X(x)+v2*Y(x))
领略PLONK算法,可以先从PLONK的电路开始。熟悉Groth16算法的小同伴都知道,,Groth16算法基于QAP问题。所有的计较电路可以通过R1CS,转换成QAP问题。PLONK的电路描写回收差异的方法。Vitalik的这篇Blog对PLONK电路的表明很是清楚,感乐趣的小同伴可以直接看原文:
总结:

门约束

电路中总共有三组连线:a/b/c。为了暗示,差异连线之间的Copy约束,三组连线回收统一的编号。假设总的门的个数为n,a的连线编号从0~n-1,b的连线编号从n~2n-1,c的连线编号从2n~3n-1。也就是说,Xa(x) = x, Xb(x) = n+x, Xc(x) = 2n+x。在举个例子,好比n=5,为了证明a(2) = b(4), Xa(x)=01234, X’a(x) =01934, Xb(x)=56789, X’b(x) = 56782。
以Y(x) = x^3 – 5*x^2 + 7x -2 为例,而且v1=3, v2=2 :

2/ 门和门之间的连线正确

也就是说,电路中的所有加秘诀/乘秘诀以及常量的干系可以通过一个多项式举办暗示。
加秘诀,回收如下的系数:

PLONK的电路由加秘诀/乘秘诀以及一些常量构成。以P(x) = x^3 + x + 5 = 35为例:

在上述的电路描写要领下,整个电路需要验证如下的干系:

个中L代表左输入,R代表右输入,O代表输出,M代表乘法,C代表常量。在这种的通过公式下,乘秘诀/加秘诀以及常量回收差异的系数。
电路验证

先确定累加的计较在X编号变革前后的计较正确。

显然,上述的门和常量的约束,只是约束独立的,彼此不依赖的约束干系。在这些约束干系的基本上,加上“Copy约束“, 门和门之间的毗连干系,整个电路就确定了。在先容Copy约束之前,先先容一下“坐标点累加” (coordinate pair accumulator)。
真实的电路计较在有限域,电路中的门的编号并不是整数,而是omega(omega是有限域中的根)。
以上先容了PLONK电路描写和约束的根基道理,详细的PLONK算法后头的文章会详细先容。PLONK算法为什么能做到Universal,详细的协议进程和计较如何,敬请等候~
1/ 各个门的干系是否正确
因为“门”的描写需要包罗三种环境:1/乘秘诀 2/加秘诀 3/常量,PLONK系统界说了通用的暗示公式:

常量,回收如下的系数:

这两个累加器计较功效沟通,在v1,v2随机选择的环境下,可以推导出a(1) = a(3)。a(1)=a(3)就是Copy约束,第1个门的左输入和第3个门的左输入沟通。

对电路中的常量以及加秘诀/乘秘诀举办编号和标注,乘秘诀和加秘诀都由三组连线构成:a/b/c,别离代表一种门的两个输入(阁下输入)和一个输出。

假设X(x)和Y(x),界说了一系列的X/Y的坐标点。x从0开始。p(x)为从0到x(不包罗)的坐标点累加,界说如下:
假如在X(x)互换了顺序后,pa(n)*pb(n)*pc(n) = p’a(n)*’pb(n)*p’c(n) ,就可以证明互换了连线编号有“连线”干系,相应的Copy约束创立。
Copy约束

PLONK算法回收两种约束干系描写整个电路:1/ 加秘诀/乘秘诀约束 2/ Copy约束。因为加秘诀和乘秘诀,只描写单个门的依赖干系,所以要加上Copy约束才气描写确定的完整电路。所谓的Copy约束,其实就是门和门之间的“共享”毗连。从加秘诀和乘秘诀约束说起。

简朴的说,p(x)把一系列的坐标点累加。因为乘法的互换律,这种累加算法,并不区分坐标点的顺序。假如只改变X(x)的点的顺序,在累加功效沟通的环境下,可以推导出Y(x)的干系。举个例子:

简朴的说,在通用公式下,所有电路中的门和变量都可以表达。而这一系列的表达式,可以用多项式举办“压缩”,暗示为:

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

PLONK算法的电路回收新的描写模子。整个电路由门电路约束和Copy约束(连线约束)构成。门电路约束和Copy约束都转换为多项式表达。Copy约束通过累加算法实现。

Groth16算法确实较量美,利益是证明小,很是适合链上验证的场景。可是,Groth16算法需要可信的初始配置(Trusted Setup),并且每个电路都需要初始配置。出格在业务电路进级的时候,还需要从头初始配置。PLONK算法,只需要一次初始配置(Universal Trusted Setup)。初始配置的参数可以进级,并且在电路巨细不高出范畴的环境下,不需要从头配置。

乘秘诀,回收如下的系数:

以编号为1的乘秘诀举例,这个乘秘诀约束a1*b1=c1。
一个累加器计较:(0,a(0)),(1,a(1)),(2,a(2)),(3,a(3)),(4,a(4))
别的一个累加器计较:(0,a(0)),(3,a(1)),(2,a(2)),(1,a(3)),(4,a(4))

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