Gabizon等人2019年论文《PLONK: permutations over lagrange-bases for oecumenical noninteractive arguments of knowledge》。
相关代码实现有:
要点:
(1)与Spartan 中将R1CS中的A/B/C 分别以multilinear多项式表示不同,Plonk中是将circuit中所有门的左侧、右侧和输出分别以多项式 f L , f R , f O f_L,f_R, f_O fL,fR,fO表示。
(2)[BG12]《Efficient zero-knowledge argument for correctness of a shuffle》中的 permutation argument的核心思路为构建双变量多项式:
∏ i = 1 N ( d i − z ) = ∏ i = 1 N ( y i + x i − z ) \prod_{i=1}^{N}(d_i-z)=\prod_{i=1}^{N}(yi+x^i-z) ∏i=1N(di−z)=∏i=1N(yi+xi−z)
利用product argument证明以上关系成立,即完成相应的permutation argument(又称为shuffle argument)。
而Plonk中,是基于lagrange-bases构建的单变量多项式,如test_permutation_compute_sigmas_only_left_wires()
测试用例中所示, σ 0 , σ 1 , σ 2 , σ 3 \sigma_0,\sigma_1,\sigma_2,\sigma_3 σ0,σ1,σ2,σ3多项式对应的点值表示满足相应的permutation关系即可:【对应为单变量多项式。】
∏ i = 0 N ( w l i + β ω i + γ ) ( w r i + β ω i + γ ) ( w o i + β ω i + γ ) ( w 4 i + β ω i + γ ) = ∏ i = 0 N ( w l i + β σ 0 ( ω i ) + γ ) ( w r i + β σ 1 ( ω i ) + γ ) ( w o i + β σ 2 ( ω i ) + γ ) ( w 4 i + β σ 3 ( ω i ) + γ ) \prod_{i=0}^{N}(wl_i+\beta\omega^i+\gamma)(wr_i+\beta\omega^i+\gamma)(wo_i+\beta\omega^i+\gamma)(w4_i+\beta\omega^i+\gamma)=\prod_{i=0}^N(wl_i+\beta\sigma_0(\omega^i)+\gamma)(wr_i+\beta\sigma_1(\omega^i)+\gamma)(wo_i+\beta\sigma_2(\omega^i)+\gamma)(w4_i+\beta\sigma_3(\omega^i)+\gamma) ∏i=0N(wli+βωi+γ)(wri+βωi+γ)(woi+βωi+γ)(w4i+βωi+γ)=∏i=0N(wli+βσ0(ωi)+γ)(wri+βσ1(ωi)+γ)(woi+βσ2(ωi)+γ)(w4i+βσ3(ωi)+γ)
circuit wire与 σ i \sigma_i σi之间的permutation关系很巧妙,具体见compute_sigma_permutations()
函数。
(3)当 i ∈ [ n ] i\in[n] i∈[n]时, L i ( X ) L_i(X) Li(X) 表示 the element of F < n [ X ] \mathbb{F}_{
同时注意, L i L_i Li可”reduce point checks to range checks“。
Claim 5.1内容为:
若 i ∈ [ n ] , Z , Z ∗ ∈ F [ X ] i\in[n],Z,Z^*\in \mathbb{F}[X] i∈[n],Z,Z∗∈F[X],则当且仅当 Z ( g i ) = Z ∗ ( g i ) Z(\mathbf{g}^i)=Z^*(\mathbf{g}^i) Z(gi)=Z∗(gi)时,有 L i ( a ) ( Z ( a ) − Z ∗ ( a ) ) = 0 L_i(a)(Z(a)-Z^*(a))=0 Li(a)(Z(a)−Z∗(a))=0 for each a ∈ H a\in H a∈H。
当 f , g ∈ F < d [ X ] f,g\in\mathbb{F}_{
1)Groth等人2018年论文[GKM+]《 Updatable and universal common reference strings with applications to zk-snarks》,在构建zk-SNARK过程中引入了updatable structured reference string (SRS),扫除了zk-SNARKs实际部署时的一个主要障碍。
2)Maller等人2019年论文[MBKM19]《 Sonic: Zeroknowledge snarks from linear-size universal and updateable structured reference strings》,是第一个可能实用的zk-SNARK,具有fully succinct verification for general arithmetic circuits with such an SRS。但是为了实现fully succinct verification,Sonic方案中构建proof的开销仍然很大。
本文构建的 universal SNARK,具有:
与[MBKM19]类似,本文的实现也依赖于 Bayer和Groth 2012年论文[BG12]《Efficient zero-knowledge argument for correctness of a shuffle》中的 permutation argument。【可参见本人系列博客:
但是,本文专注于 “Evaluations on a subgroup” 而不是 “coefficients of monomials”,因此可简化相应的permutation argument 和 the arithmetization step。
考虑到zk-SNARKs的实际部署,人们开始关注 可提供 “universal and updatable” 的structured reference string (SRS) 模式。
SRS可用于:
为了简化,本文称具有SRS setup的zk-SNARK为universal的。
同时,若zk-SNARK for circuit satisfiablity 满足以下条件,可称其为fully succinct的:
Maller等人2019年论文[MBKM19]《 Sonic: Zeroknowledge snarks from linear-size universal and updateable structured reference strings》中,第一次实现了a universal fully succinct zk-SNARK for circuit satisfiability——Sonic。
同时在该论文中,提供了Sonic的一个改进版本,可大幅改进Prover的run time,代价是 efficient verification only in a certain amortized sense。
相比于fully-succint Sonic,我们显著改善了Prover run time。
改进的主要点在于:
简而言之,合理的multiplicative subgroups在很多协议中都很实用,包括Sonic——使用了[BG12]中的permutation argument。
最终,在“grand product argument”中,可reduce为check relations between coefficients of polynomials at “neighbouring monomials”。
若将 x , g ⋅ x x,g\cdot x x,g⋅x看成是neighbour points对,其中 g g g为generator of a multiplicative subgroup of a field F \mathbb{F} F,则将很容易检查不同曲线在这些points对的关系。
还有一个便捷之处是,multiplicative subgroups可与Lagrange bases进行良好交互。如,若 H ⊂ F H\subset \mathbb{F} H⊂F 为a multiplicative subgroup of order n + 1 n+1 n+1,且 x ∈ H x\in H x∈H,则多项式 L x L_x Lx of degree at most n n n that vanishes on H ∖ { x } H\setminus\{x\} H∖{x} and has f ( x ) = 1 f(x)=1 f(x)=1可以非常稀疏的方式表示为:【因为 X ∈ H X\in H X∈H,而 H H H的order为 n + 1 n+1 n+1,因此有 X n + 1 = 1 X^{n+1}=1 Xn+1=1。】
L x ( X ) = c x ( X n + 1 − 1 ) X − x L_x(X)=\frac{c_x(X^{n+1}-1)}{X-x} Lx(X)=X−xcx(Xn+1−1)
其中 c x c_x cx为常数。
当构建efficiently verifiable [BG12]-形式 的permutation argument时,以这种多项式identities方式表示将是有益的。
将本文的研究成果与现有的non-universal SNARKs和universal SNARKs进行了性能对比。
在本文发表时,仅有[MBKM19]的Sonic protocol是fully succinct universal SNARK,Sonic protocol需要做 273 n 273n 273n 次 G 1 \mathbb{G}_1 G1 group exponentiations运算,其中 n n n为乘法门的数量。
在fully-succinct Sonic中,每根线仅可表示三种线性关系,需要额外的“dummy”乘法门来容纳多余三个加法门的线。这将导致乘法门数量的增加,进而会影响Prover的computation estimate。具体可参看[MBKM19]中的详细描述。
而本文的universal SNARK需要Prover计算6个polynomial commitments 以及2个opening proofs to evaluate the polynomial commitments at a random challenge point。
Plonk提供了两种模式供用户使用:proof size中增加2个group elements的化,则Prover的总计算量可降低约10%。
The combined degree of the polynomials要么是 9 ( n + a ) 9(n+a) 9(n+a)(对应larger proofs),要么是 11 ( n + a ) 11(n+a) 11(n+a)(对应smaller proofs, reduced verifier work)。其中 n n n为乘法门的数量, a a a为加法门的数量。
[Gro16] Groth 2016年论文《 On the size of pairing-based non-interactive arguments》 是当前效率最高fully-succinct SNARK,尽管其需要unique, non-updatable CRS per circuit。[Gro16] 中构建proof的计算量主要有 3 n + m 3n+m 3n+m次 G 1 \mathbb{G}_1 G1 group expoentiations 和 n n n次 G 2 \mathbb{G}_2 G2 group exponentiations组成,其中 m m m为R1CS的变量数, m m m的上限值为 n n n,为简化表述,可假设 m = n m=n m=n。
若假设1次 G 2 \mathbb{G}_2 G2 exponentiation计算量相当于 3 3 3次 G 1 \mathbb{G}_1 G1 exponentiation计算量,则[Gro16]总的计算量相当于 6 n + m 6n+m 6n+m次 G 1 \mathbb{G}_1 G1 group exponetiations计算量。
不过在对这些SNARK方案进行对比之前,需对一些主观假设达成共识。当evaluate common circuits时,其加法门的数量为乘法门数量的两倍,但是,若在某些假设场景下对circuit进行优化,使其不存在加法门时(常见于[Gro16]之类构建的R1CS),其评估表现将更差:【注意,以下对比都是基于所需group exponentiations计算数量。】
同时,在fast模式下,Plonk中structured reference string的degree与circuit中门数量相等,其SRS size实现了有效reduction。
当对比proof construction时,由于构建proof中所需的FFT数量是non-trivial的,因此还考虑Plonk中的field multiplications数量。
其它的succint universal SNARK也需要较高的FFT计算开销,考虑到这些开销不易对比,因此在下图中,未包含关于FFT的计算开销对比:
有定性分析指出,FFT的开销略低于 G 1 \mathbb{G}_1 G1 group exponentiations开销。
而Verifier对每个proof的验证开销对比如下图所示:【基于the simple strucuture of the committed prover polynomials,实际Verifier仅需要2次bilinear pairing 运算。此外,每次pairing计算中的 G 2 \mathbb{G}_2 G2元素是固定的,因此可通过[CS10] Costello等人2010年论文《Fixed argument pairings》 的方案进行优化,实现reduce pairing computation time by 约30%。】
实际基于BN254曲线的性能bench为:
甚至对于百万级门数量的circuit,Plonk可在消费者级别的硬件设备上在23秒内生成相应的proof。这大幅改进了universal SNARKs的效率,使其可广泛用于实际各种用户场景下。
circuit preprcessing为一次性计算,实现将每个program 编码成 一个Plonk circuit。在该步骤中,将生成polynomial commitments to the “selector” polynomials required to verify proofs。
当构建proofs时,计算FFT所需的时间 与 进行elliptic curve scalar multiplications的时间 是相当的。上表1中的field multiplication数量是从8次 FFT of size 4 n 4n 4n、5次 FFT of size 2 n 2n 2n 以及 12 12 12次 FFT of size n n n 中提取的。
当cicuit的preprocessed polynomials are provided as evaluations over the 4 n 4n 4n'th root of unity (而不是Lagrange-base form)时, F F T FFT FFT运算数量可进一步reduce,但是这将大幅增加构建proof所需的信息量,因此在本文的benchmark中未考虑该优化。
粗略地说,所有的succinct proving system都是通过使用randomness来将多个constraint check压缩为1个。常见的压缩做法是:take a random linear combination of the constraints。
在R1CS和其它类似系统中,待压缩的相对较困难的contraints为:
linear relations between the system variables,即形如 < a ⃗ i , x ⃗ > = 0 <\vec{a}_i, \vec{x}>=0 <ai,x>=0的contraints,其中 x ⃗ ∈ F m \vec{x}\in\mathbb{F}^m x∈Fm为系统变量, a ⃗ i ∈ F m \vec{a}_i\in\mathbb{F}^m ai∈Fm表示其中的一个constraint。
这类似于circuit satisifiability statement中形如 x i = x j x_i=x_j xi=xj的“wiring constraints”,如 x i x_i xi表示gate G G G的输出线, x j x_j xj表示由gate G G G到另一个gate G ′ G' G′的输入线。
A random linear combination of linear constraint的形式为:
∑ i ∈ [ n ] r i < a ⃗ i , x ⃗ > = 0 \sum_{i\in[n]}r^i<\vec{a}_i,\vec{x}>=0 ∑i∈[n]ri<ai,x>=0
其中 r ∈ F r\in\mathbb{F} r∈F。
忽略一些技术细节,在[MBKM19]和后续的[Gab19] Gabizon 2019年论文《Auroralight:improved prover efficiency and SRS size in a soniclike system》【基于[BCR+19] Ben-Sasson等人2018年论文《 Aurora: Transparent succinct arguments for R1CS》】将上述check reduce为 evaluate a degree n n n bivariate S S S at a random point,使得 S S S的非零单项式数量与contraint vectors { a ⃗ i } i ∈ [ n ] \{\vec{a}_i\}_{i\in[n]} {ai}i∈[n] 中的非零元素数相等。在这方面,[MBKM19]采用了更聪明的策略来amortize the cost of many evaluations of S S S across many proofs。[MBKM19]中的方式Prover效率更高,但是无法实现fully succinct,因为需要Verifier自身来计算至少1个evaluation of S S S。
阻碍Sonic(以及[Gab19])具有more prover efficiency + fully succinct 属性的技术难点在于:
需要一种方法来实现efficiently verify an evaluation S ( z , y ) S(z,y) S(z,y) in the case S S S 仅包含 O ( n ) O(n) O(n)个 non-zero 单项式。
在最近同期的研究成果中,采用的解决方案为借助“Lagrange Basis”:
特别地,假设 H , K H,K H,K为multiplicative subgroups of size O ( n ) O(n) O(n) of F \mathbb{F} F,使得 S S S仅有 M M M个非零值 on H × K H\times K H×K;然后[CHM+19]和[COS19]中制定了一种协议来 convince a succinct verifier that S ( z , y ) = t S(z,y)=t S(z,y)=t where the prover’s work is linear in M M M。解决该问题的一个直观做法是将[KZG10] Kate等人2010年论文《Constant-size commitments to polynomials and their applications》 generalize为 a bi-variate polynomial commitment scheme,这将需要 O ( n 2 ) O(n^2) O(n2) proving time。
回到Plonk,不需要 “bi-variate evaluation breakthrough” 的主要原因是,Plonk关注的是constant fan-in circuits,而不是R1CS/unlimited addition fan-in。因此Plonk中的linear constraints仅仅是wiring contraints,这些wiring constraints可reduce为a permutation check(具体见本论文第5.2和6章)。
可将[BG12]中的技术理解为:
“linear constraints that correspond to a permutation can be more simply combined than general linear constraints”。
比如,在上述方程式中,每个constraint乘以不同的random coefficient;而在[BG12]的randomization中,在某种意义上,为每个变量值添加相同的random shift就足够了。(详细的permutation protocol见本论文第5章。)
本文的目标和[CHM+19] Marlin的研究目标都是:
fully succinct (universal) SNARK
但是,目前并没有完全直接的方式来对比Plonk和Marlin,原因在于Plonk在具体常熟领域,且两者所使用的basic measure 是不同的。
Plonk中的参数 n n n表示的是fan-in two circuit中的加法和乘法门数量;
Marlin中的主要参数为:the maximal number of non-zeros in one of the three matrices describing an R1CS。
对于相同的 n n n,Plonk的表现优于Marlin,如Prover 的group运算和proof size都将改进2倍。极端情况下,对于只有乘法门的circuit,这将代表Plonk和Marlin的性能表现差异。
但是,对于具有 “frequent large addtion fan-in” constraint system,Marlin的表现将优于 the currently specified variant of Plonk。比如,对于极端情况下的 “fully dense” R1CS constraint:
( ∑ j ∈ [ m ] a j x j ) ⋅ ( ∑ j ∈ [ m ] b j x j ) = ∑ j ∈ [ m ] c j x j (\sum_{j\in[m]}a_jx_j)\cdot(\sum_{j\in[m]}b_jx_j)=\sum_{j\in[m]}c_jx_j (∑j∈[m]ajxj)⋅(∑j∈[m]bjxj)=∑j∈[m]cjxj
其中 a ⃗ , b ⃗ , c ⃗ ∈ F m \vec{a},\vec{b},\vec{c}\in\mathbb{F}^m a,b,c∈Fm具有all non-zero entries。(所有元素均为非零值。)
另外,似乎将Fractal中隐含的思想——上述提及的sparse bi-variate evaluation protocol 嵌入到[Gab19]中,将改进其性能表现,特别是针对可将某些Prover work委托给外部helper的场景。而在Plonk中,不大有机会存在这样的委托,因为Plonk中的wiring is checked on the witness itself,而在[Gab19][CHM+19][COS19] 中,it is in sense checked on the random coefficients of the verifier。
假设field F \mathbb{F} F具有prime order。假设所有的算法中都包含了一个隐含的安全参数 λ \lambda λ。
F < d [ X ] \mathbb{F}_{
efficient:是指算法的run time为 p o l y ( λ ) poly(\lambda) poly(λ)。
object generator O \mathcal{O} O:输入为 λ \lambda λ,且在所有协议运行前执行。输出为all fields and groups used。
本文 O ( λ ) = ( F , G 1 , G 2 , G t , e , g 1 , g 2 , g t ) \mathcal{O}(\lambda)=(\mathbb{F},\mathbb{G}_1,\mathbb{G}_2,\mathbb{G}_t,e,g_1,g_2,g_t) O(λ)=(F,G1,G2,Gt,e,g1,g2,gt),其中:
1) F \mathbb{F} F为prime filed,具有super-polynomial size r = λ w ( 1 ) r=\lambda^{w(1)} r=λw(1)。
2) G 1 , G 2 , G t \mathbb{G}_1,\mathbb{G}_2,\mathbb{G}_t G1,G2,Gt均为groups of size r r r, e e e为an efficiently computable non-degenerate pairing e : G 1 × G 2 → G t e:\mathbb{G}_1\times \mathbb{G}_2\rightarrow \mathbb{G}_t e:G1×G2→Gt。
3) g 1 , g 2 g_1,g_2 g1,g2为uniformly chosen generators 使得 e ( g 1 , g 2 ) = g t e(g_1,g_2)=g_t e(g1,g2)=gt。
通常 λ \lambda λ参数为隐性的,即用 F \mathbb{F} F来代替 F ( λ ) \mathbb{F}(\lambda) F(λ)。
G 1 \mathbb{G}_1 G1和 G 2 \mathbb{G}_2 G2为加法group,具有:
[ x ] 1 : = x ⋅ g 1 [x]_1:=x\cdot g_1 [x]1:=x⋅g1
[ x ] 2 : = x ⋅ g 2 [x]_2:=x\cdot g_2 [x]2:=x⋅g2
[ n ] [n] [n]表示整数 { 1 , ⋯ , n } \{1,\cdots,n\} {1,⋯,n}
e.w.p:全称为“except with probability”,即 e.w.p λ \lambda λ 表示 probability at least 1 − λ 1-\lambda 1−λ。
universal SRS-based public-coin protocols:是指可借助Fiat-Shamir transform或a random oracle 来实现non-interactive protocols。
proof length是指the total communication of the prover。
本文的SRS可源于:
deterministic p o l y ( λ ) poly(\lambda) poly(λ)-time from an “SRS of monomials” of the form { [ x i ] 1 } a ≤ i ≤ b , { [ x i ] 2 } c ≤ i ≤ d \{[x^i]_1\}_{a\leq i\leq b}, \{[x^i]_2\}_{c\leq i\leq d} {[xi]1}a≤i≤b,{[xi]2}c≤i≤d for uniform x ∈ F x\in\mathbb{F} x∈F, and some integers a , b , c , d a,b,c,d a,b,c,d with absolute value bounded by p o l y ( λ ) poly(\lambda) poly(λ)。
然后遵循[BGM17] Bowe等人2017年论文《Scalable multi-party computation for zksnark parameters in the random beacon model》中要求SRS can be derived in a universal and updatable setup 仅需one honest participant —— 即若adversary控制了all but one of the participants in the setup does not gain more than a n e g l ( λ ) negl(\lambda) negl(λ) advantage in its probability of producing a proof of any statement。
为了简化,本文将SRS s r s srs srs 作为protocol中的隐性参数而不明确写出。
本文采用[FKL18] Fuchsbauer等人2018年论文《The algebraic group model and its applications》中的安全分析模式。
在本文协议中,algebraic adversary A \mathcal{A} A in an SRS-based protocol, p o l y ( λ ) poly(\lambda) poly(λ)-time 算法满足如下要求:
在介绍AGM模式下的安全分析的优点之前,先了解以下术语:
f∈F<Q[X]and uniform x ∈ F x\in\mathbb{F} x∈F。
受[FKL18]中对[Gro16]分析的启发,本文发现关注ideal checks就足以完成soundness analysis against algebraic adversaries。
首先定义了类似[FKL18]中的Q-DLOG assumption:【即已知 [ 1 ] 1 , [ x ] 1 , ⋯ , [ x Q ] 1 , [ 1 ] 2 , [ x ] 2 , ⋯ , [ x Q ] 2 [1]_1,[x]_1,\cdots,[x^Q]_1,[1]_2,[x]_2,\cdots,[x^Q]_2 [1]1,[x]1,⋯,[xQ]1,[1]2,[x]2,⋯,[xQ]2,找到 x x x的概率可忽略。】
由Q-DLOG assumption,推出的lemma:【即real pairing check成立的概率与ideal check成立的概率相当。】
Knowledge soundness in AGM 是指:
Prover P P P 和Verifier V V V之间的protocol P \mathscr{P} P for relation R \mathcal{R} R 具有Knowledge Soundness in the Algebraic Group Model的前提条件为——存在efficient E E E使得任意的algebraic adversary A \mathcal{A} A赢得如下游戏的概率可忽略:【又称 KS game】
1) A \mathcal{A} A选择输入值 x x x,并以Prover的角色运行 P \mathscr{P} P with input x x x;
2) E E E可获取 A A A在协议中的所有消息(包括linear combinations的系数),输出 w w w;
3)若同时满足以下情况,则 A A A赢了:
3.a) V V V在协议结束输出 a c c acc acc,即验证通过。且
3.b) ( x , w ) ∉ R (x,w)\notin \mathcal{R} (x,w)∈/R
本文协议的关键是实现了:
a batched version of the [KZG10] polynomial commitment scheme【与[MBKM19]中的附录C类似】,以满足 query multiple committed polynomials at multiple points。
接下来以有利于本文协议的方式来定义polynomial commitment schemes,特别地,其中的open
流程对应的是a batched setting having multiple polynomials and evaluation points。
d d d-polynomial commitment scheme中包含如下算法:
根据[KZG10]和[MBKM19],对以上 d d d-polynomial commitment scheme实例化为:
需对以上实现进行knowledge soundness论证,即判断是否存在efficient E E E使得algebraic adversary A \mathcal{A} A取任意的 z = z 1 = ⋯ = z t z=z_1=\cdots=z_t z=z1=⋯=zt赢得 KS game的概率可忽略。详细的分析思路为:【核心思想为Schwartz-Zippel Lemma】
当考虑:open diffierent polynomials at different points 时:
open
协议的并行执行,即每个open
协议对应一个evaluation point和相应的polynomial evaluated at at that point;为了简化,本文将open
协议中 z 1 , ⋯ , z t z_1,\cdots,z_t z1,⋯,zt分为两个不同的evaluation points(与本文主协议的实际情况对应)。将相应evaluation points表示为 z , z ′ z,z' z,z′,对应的polynomials数量分别为 t 1 , t 2 t_1,t_2 t1,t2,分别evaluate { f i } i ∈ [ t 1 ] \{f_i\}_{i\in [t_1]} {fi}i∈[t1] at z z z 以及 evaluate { f i ′ } i ∈ [ t 2 ] \{f_i'\}_{i\in[t_2]} {fi′}i∈[t2] at z ′ z' z′。
相应的open
协议为—— o p e n ( { c m i } i ∈ [ t 1 ] , { c m i ′ } i ∈ [ t 2 ] , { z , z ′ } , { s i , s i ′ } ) open(\{cm_i\}_{i\in[t_1]},\{cm_i'\}_{i\in[t_2]},\{z,z'\},\{s_i,s_i'\}) open({cmi}i∈[t1],{cmi′}i∈[t2],{z,z′},{si,si′}):
a) V P C V_{PC} VPC 发送随机值 γ , γ ′ ∈ F \gamma,\gamma'\in\mathbb{F} γ,γ′∈F。
b) P P C P_{PC} PPC 计算:
h ( X ) : = ∑ i = 1 t 1 γ i − 1 ⋅ f i ( X ) − f i ( z ) X − z h(X):=\sum_{i=1}^{t_1}\gamma^{i-1}\cdot\frac{f_i(X)-f_i(z)}{X-z} h(X):=∑i=1t1γi−1⋅X−zfi(X)−fi(z)
h ′ ( X ) : = ∑ i = 1 t 2 γ ′ i − 1 ⋅ f i ′ ( X ) − f i ′ ( z ′ ) X − z ′ h'(X):=\sum_{i=1}^{t_2}\gamma'^{i-1}\cdot\frac{f_i'(X)-f_i'(z')}{X-z'} h′(X):=∑i=1t2γ′i−1⋅X−z′fi′(X)−fi′(z′)
并使用 s r s srs srs计算和发送 W : = [ h ( x ) ] 1 , W ′ : = [ h ′ ( x ) ] 1 W:=[h(x)]_1,W':=[h'(x)]_1 W:=[h(x)]1,W′:=[h′(x)]1。
c) V P C V_{PC} VPC 选择随机值 r ′ ∈ F r'\in\mathbb{F} r′∈F。
d) V P C V_{PC} VPC 计算:
F : = ( ∑ i ∈ [ t 1 ] γ i − 1 ⋅ c m i − [ ∑ i ∈ [ t 1 ] γ i − 1 ⋅ s i ] 1 ) + r ′ ⋅ ( ∑ i ∈ [ t 2 ] γ ′ i − 1 ⋅ c m i ′ − [ ∑ i ∈ [ t 2 ] γ ′ i − 1 ⋅ s i ′ ] 1 ) F:=(\sum_{i\in[t_1]}\gamma^{i-1}\cdot cm_i-[\sum_{i\in[t_1]}\gamma^{i-1}\cdot s_i]_1)+r'\cdot (\sum_{i\in[t_2]}\gamma'^{i-1}\cdot cm_i'-[\sum_{i\in[t_2]}\gamma'^{i-1}\cdot s_i']_1) F:=(∑i∈[t1]γi−1⋅cmi−[∑i∈[t1]γi−1⋅si]1)+r′⋅(∑i∈[t2]γ′i−1⋅cmi′−[∑i∈[t2]γ′i−1⋅si′]1)
当且仅当如下条件成立时, V P C V_{PC} VPC输出 a c c acc acc:
e ( F + z ⋅ W + r ′ z ′ ⋅ W ′ , [ 1 ] 2 ) ⋅ e ( − W − r ′ ⋅ W ′ , [ x ] 2 ) = 1 e(F+z\cdot W+r'z'\cdot W',[1]_2)\cdot e(-W-r'\cdot W',[x]_2)=1 e(F+z⋅W+r′z′⋅W′,[1]2)⋅e(−W−r′⋅W′,[x]2)=1
以上[KZG10] batch版本的算法效率分析如下:
对[KZG10]中的polynomial commitment scheme进行了抽象,形成的协议内容为:
形成的协议表示为 ( d , D , t , l ) (d,D,t,l) (d,D,t,l)-polynomial protocol,其中 d , D , t , l d,D,t,l d,D,t,l均为正整数。该协议在 Prover P p o l y P_{poly} Ppoly、Verifier V p o l y V_{poly} Vpoly 以及 可信第三方 I \mathcal{I} I 之间进行多轮执行,详细描述为:【具有completeness和Knowledge soundness属性。但实际实现时,不具有zero-knowledge 属性。具体见本论文中的Remark 4.4。】
实际要求 V p o l y V_{poly} Vpoly check if certain polynomial equations hold on a certain range of input values,而不仅是as a polynomial identity。
即,for subset S ⊂ F S\subset\mathbb{F} S⊂F,定义an S S S-ranged ( d , D , t , l ) (d,D,t,l) (d,D,t,l)-polynomial protocol identically to a ( d , D , t , l ) (d,D,t,l) (d,D,t,l)-polynomial protocol, except that the verifier asks if his identities hold on all points of S S S,rather than identically。(即该子集内的所有元素均符合相应特性)
只需额外再引入一个prover polynomial,就可将ranged protocol转换为polynomial protocol。相应有Lemma 4.5:
若 P \mathscr{P} P为 S S S-ranged ( d , D , t , l ) (d,D,t,l) (d,D,t,l)-polynomial protocol for R \mathcal{R} R,则可构建相应的 ( m a x { d , ∣ S ∣ , D − ∣ S ∣ } , D , t + 1 , l + 1 ) (max\{d,|S|,D-|S|\},D,t+1,l+1) (max{d,∣S∣,D−∣S∣},D,t+1,l+1)-polynomial protocol P ∗ \mathcal{P}^* P∗ for R \mathcal{R} R。
在证明该Lemma之前,先了解Claim 4.6内容:
Lemma 4.5相应的证明为:
目的是:
可用第3节的polynomial commitment scheme来compile a polynomial protocol into one with knowledge soundness in the algebraic group model。
为了对以上转换的效率进行衡量,需定义相关技术来衡量 ( d , D , t , l ) (d,D,t,l) (d,D,t,l)-polynomial protocol P \mathscr{P} P。
Lemma 4.7 内容为:【详细的证明可参见论文P17~P18。】
若 P \mathscr{P} P为 ( d , D , t , l ) (d,D,t,l) (d,D,t,l)-polynomial protocol for R \mathcal{R} R,其中仅有一个identity is checked by V p o l y V_{poly} Vpoly,则可构建相应的protocol P ∗ \mathcal{P}^* P∗ for R \mathcal{R} R with knowledge soundness in the Algebraic Group Model under 2 d 2d 2d-DLOG 具有如下属性:
借助Mary Maller优化,进一步reduce F \mathbb{F} F-elements 的数量:
假设 V V V想要check identity h 1 ( X ) h 2 ( X ) − h 3 ( X ) ≡ 0 h_1(X)h_2(X)-h_3(X)\equiv 0 h1(X)h2(X)−h3(X)≡0,之前的方法是 P P P 发送values of h 1 , h 2 , h 3 h_1,h_2,h_3 h1,h2,h3 at random x ∈ F x\in\mathbb{F} x∈F,然后 V V V验证 h 1 ( x ) h 2 ( x ) − h 3 ( x ) = 0 h_1(x)h_2(x)-h_3(x)=0 h1(x)h2(x)−h3(x)=0是否成立。整个过程中 P P P发送了3个field elements。
现在,可让 P P P仅发送 c : = h 1 ( x ) c:=h_1(x) c:=h1(x),然后运行open
protocol来验证多项式 L ( X ) : = x ⋅ h 2 ( X ) − h 3 ( X ) L(X):=x\cdot h_2(X)-h_3(X) L(X):=x⋅h2(X)−h3(X)是否为zero at x x x。【同时注意,可计算 c o m ( L ) = c ⋅ c o m ( h 2 ) − c o m ( h 3 ) com(L)=c\cdot com(h_2)-com(h_3) com(L)=c⋅com(h2)−com(h3)。】
因此,需定义另一种技术手段来衡量a polynomial protocol。
为了简化,再次假设 V p o l y V_{poly} Vpoly仅需验证one identity F F F。现定义 r ( P ) r(\mathscr{P}) r(P)为the minimal size of a subset S ⊂ [ M ] S\subset [M] S⊂[M],满足:
假设有 r : = r ( P ) < M r:=r(\mathscr{P})< M r:=r(P)<M,可对Lemma 4.7做如下reduction,使得Prover发送的 F \mathbb{F} F-elements数量由 M M M降为 r r r个:
本文universal SNARK的核心为 ”permutation check“,受[BG12]中的permutation argument 和 [BCC+16][MBKM19]的变种 启发。
相比于[MBKM19],本文算法的由于采用的是单变量多项式和multiplicative subgroups,实现的协议更简单。
要求 n ≤ d n\leq d n≤d,其中 n n n为the degree of the honest prover’s polynomials, d d d为the bound we actually enforce on malicous provers。
相应地,在分析prover efficiency和描述”official“ protocol input时,可将degree bound 看成为 n n n,而分析soundness时,可假设degree bound 为 d d d。
当 i ∈ [ n ] i\in[n] i∈[n]时, L i ( X ) L_i(X) Li(X) 表示 the element of F < n [ X ] \mathbb{F}_{
同时注意, L i L_i Li可”reduce point checks to range checks“。
Claim 5.1内容为:
若 i ∈ [ n ] , Z , Z ∗ ∈ F [ X ] i\in[n],Z,Z^*\in \mathbb{F}[X] i∈[n],Z,Z∗∈F[X],则当且仅当 Z ( g i ) = Z ∗ ( g i ) Z(\mathbf{g}^i)=Z^*(\mathbf{g}^i) Z(gi)=Z∗(gi)时,有 L i ( a ) ( Z ( a ) − Z ∗ ( a ) ) = 0 L_i(a)(Z(a)-Z^*(a))=0 Li(a)(Z(a)−Z∗(a))=0 for each a ∈ H a\in H a∈H。
当 f , g ∈ F < d [ X ] f,g\in\mathbb{F}_{
接下来将构建a ranged polynomial protocol来证明 g = σ ( f ) g=\sigma(f) g=σ(f)。
针对的场景为:
preprocessed polynomials:有polynomial S I D ∈ F < n [ X ] S_{ID}\in\mathbb{F}_{
inputs 输入为: f , g ∈ F < n [ X ] f,g\in\mathbb{F}_{
Protocol 具体协议实现为:
1) V p o l y V_{poly} Vpoly 发送随机值 β , γ ∈ F \beta,\gamma\in\mathbb{F} β,γ∈F 给 P p o l y P_{poly} Ppoly。
2)令 f ′ : = f + β ⋅ S I D + γ , g ′ = g + b e t a ⋅ S σ + γ f':=f+\beta\cdot S_{ID}+\gamma, g'=g+beta\cdot S_{\sigma} + \gamma f′:=f+β⋅SID+γ,g′=g+beta⋅Sσ+γ,则对 i ∈ [ n ] i\in[n] i∈[n]有:
f ′ ( g i ) = f ( g i ) + β ⋅ i + γ , g ′ ( g i ) = g ( g i ) + β ⋅ σ ( i ) + γ f'(\mathbf{g}^i)=f(\mathbf{g}^i)+\beta\cdot i+\gamma,g'(\mathbf{g}^i)=g(\mathbf{g}^i)+\beta\cdot \sigma(i)+\gamma f′(gi)=f(gi)+β⋅i+γ,g′(gi)=g(gi)+β⋅σ(i)+γ
3) P p o l y P_{poly} Ppoly 计算 Z ∈ F < n [ X ] Z\in\mathbb{F}_{
Z ( g i ) = ∏ 1 ≤ j < i f ′ ( g j ) / g ′ ( g j ) Z(\mathbf{g}^i)=\prod_{1\leq j < i}f'(\mathbf{g}^j)/g'(\mathbf{g}^j) Z(gi)=∏1≤j<if′(gj)/g′(gj)
(one of the product elements为undefined的概率可忽略。)
4) P p o l y P_{poly} Ppoly将 Z Z Z发送给 I \mathcal{I} I。
5) V p o l y V_{poly} Vpoly对所有的 a ∈ H a\in H a∈H,当且仅当如下两个条件都成立时输出 a c c acc acc:
5.a) L 1 ( a ) ( Z ( a ) − 1 ) = 0 L_1(a)(Z(a)-1)=0 L1(a)(Z(a)−1)=0【即满足 Z ( g ) = 1 Z(\mathbf{g})=1 Z(g)=1】
5.b) Z ( a ) f ′ ( a ) = g ′ ( a ) Z ( a ⋅ g ) Z(a)f'(a)=g'(a)Z(a\cdot \mathbf{g}) Z(a)f′(a)=g′(a)Z(a⋅g) 【即满足 Z ( g i ) = ∏ 1 ≤ j < i f ′ ( g j ) / g ′ ( g j ) Z(\mathbf{g}^i)=\prod_{1\leq j < i}f'(\mathbf{g}^j)/g'(\mathbf{g}^j) Z(gi)=∏1≤j<if′(gj)/g′(gj)】
本文的目的是:
check a permutation “across” the values of several polynomials。
假设有多个多项式 f 1 , ⋯ , f k ∈ F < d [ X ] f_1,\cdots,f_k\in\mathbb{F}_{
对于 ( g 1 , ⋯ , g k ) ∈ ( F < d [ X ] ) k (g_1,\cdots,g_k)\in(\mathbb{F}_{
定义序列 ( f ( 1 ) , ⋯ , f ( k n ) ) , ( g ( 1 ) , ⋯ , g ( k n ) ) ∈ F k n (f_{(1)},\cdots,f_{(kn)}),(g_{(1)},\cdots,g_{(kn)})\in\mathbb{F}^{kn} (f(1),⋯,f(kn)),(g(1),⋯,g(kn))∈Fkn 为:
f ( ( j − 1 ) ⋅ n + i ) : = f j ( g i ) , g ( ( j − 1 ) ⋅ n + i ) : = g j ( g i ) f_{((j-1)\cdot n +i)}:= f_j(\mathbf{g}^i),g_{((j-1)\cdot n +i)}:= g_j(\mathbf{g}^i) f((j−1)⋅n+i):=fj(gi),g((j−1)⋅n+i):=gj(gi)
for each j ∈ [ k ] , i ∈ [ n ] j\in[k], i\in [n] j∈[k],i∈[n]。则有 g l = f σ ( l ) g_{l}=f_{\sigma(l)} gl=fσ(l) for each l ∈ [ k n ] l\in[kn] l∈[kn]。
针对的场景为:
Preprocessed polynomials有:
S I D 1 , ⋯ , S I D k ∈ F < n [ X ] S_{ID_1},\cdots,S_{ID_k}\in\mathbb{F}_{
对于每一个的 j ∈ [ k ] j\in[k] j∈[k],有 S σ j ∈ F < n [ X ] S_{\sigma_j}\in\mathbb{F}_{
inputs 输入为: f 1 , ⋯ , f k , g 1 , ⋯ , g k ∈ F < n [ X ] f_1,\cdots,f_k, g_1,\cdots,g_k\in\mathbb{F}_{
Protocol 相应的协议实现为:
1) V p o l y V_{poly} Vpoly 发送随机值 β , γ ∈ F \beta,\gamma\in\mathbb{F} β,γ∈F 给 P p o l y P_{poly} Ppoly。
2)令 f j ′ : = f j + β ⋅ S I D j + γ , g j ′ = g j + β ⋅ S σ j + γ f_j':=f_j+\beta\cdot S_{ID_j}+\gamma, g_j'=g_j+\beta\cdot S_{\sigma_j} + \gamma fj′:=fj+β⋅SIDj+γ,gj′=gj+β⋅Sσj+γ,则对 j ∈ [ k ] , i ∈ [ n ] j\in[k],i\in[n] j∈[k],i∈[n]有:
f j ′ ( g i ) = f j ( g i ) + β ⋅ ( ( j − 1 ) ⋅ n + i ) + γ , g j ′ ( g i ) = g j ( g i ) + β ⋅ σ ( ( j − 1 ) ⋅ n + i ) + γ f_j'(\mathbf{g}^i)=f_j(\mathbf{g}^i)+\beta\cdot ((j-1)\cdot n +i)+\gamma,g_j'(\mathbf{g}^i)=g_j(\mathbf{g}^i)+\beta\cdot \sigma((j-1)\cdot n + i)+\gamma fj′(gi)=fj(gi)+β⋅((j−1)⋅n+i)+γ,gj′(gi)=gj(gi)+β⋅σ((j−1)⋅n+i)+γ
3)定义 f ′ , g ′ ∈ F < k n [ X ] f',g'\in\mathbb{F}_{
f ′ ( X ) : = ∏ j ∈ [ k ] f j ′ ( X ) , g ′ ( X ) : = ∏ j ∈ [ k ] g j ′ ( X ) f'(X):=\prod_{j\in[k]}f_j'(X), g'(X):=\prod_{j\in[k]}g_j'(X) f′(X):=∏j∈[k]fj′(X),g′(X):=∏j∈[k]gj′(X)
4) P p o l y P_{poly} Ppoly 计算 Z ∈ F < n [ X ] Z\in\mathbb{F}_{
Z ( g i ) = ∏ 1 ≤ j < i f ′ ( g j ) / g ′ ( g j ) Z(\mathbf{g}^i)=\prod_{1\leq j < i}f'(\mathbf{g}^j)/g'(\mathbf{g}^j) Z(gi)=∏1≤j<if′(gj)/g′(gj)
(one of the product elements为undefined的概率可忽略。)
5) P p o l y P_{poly} Ppoly将 Z Z Z发送给 I \mathcal{I} I。
6) V p o l y V_{poly} Vpoly对所有的 a ∈ H a\in H a∈H,当且仅当如下两个条件都成立时输出 a c c acc acc:
6.a) L 1 ( a ) ( Z ( a ) − 1 ) = 0 L_1(a)(Z(a)-1)=0 L1(a)(Z(a)−1)=0【即满足 Z ( g ) = 1 Z(\mathbf{g})=1 Z(g)=1】
6.b) Z ( a ) f ′ ( a ) = g ′ ( a ) Z ( a ⋅ g ) Z(a)f'(a)=g'(a)Z(a\cdot \mathbf{g}) Z(a)f′(a)=g′(a)Z(a⋅g) 【即满足 Z ( g i ) = ∏ 1 ≤ j < i f ′ ( g j ) / g ′ ( g j ) Z(\mathbf{g}^i)=\prod_{1\leq j < i}f'(\mathbf{g}^j)/g'(\mathbf{g}^j) Z(gi)=∏1≤j<if′(gj)/g′(gj)】
最终本文主协议中实际的primitive为:
令 T = { T 1 , ⋯ , T s } \mathcal{T}=\{T_1,\cdots,T_s\} T={T1,⋯,Ts} 为 a partition of [ k n ] [kn] [kn] into disjoint blocks。
对于特定的 f 1 , ⋯ , f k ∈ F < n [ X ] f_1,\cdots, f_k\in\mathbb{F}_{
5.2节的protocol for extended permutations可直接拿来check whether f 1 , ⋯ , f k f_1,\cdots,f_k f1,⋯,fk satisfy T \mathcal{T} T,具体为:
定义a permutation σ ( T ) \sigma(\mathcal{T}) σ(T) on [ k n ] [kn] [kn],使得对于 T \mathcal{T} T中的每一个block T i T_i Ti, σ ( T ) \sigma(\mathcal{T}) σ(T) 包含了a cycle going over all elements of T i T_i Ti。
则 当且仅当 ( f 1 , ⋯ , f k ) = σ ( f 1 , ⋯ , f k ) (f_1,\cdots,f_k)=\sigma(f_1,\cdots,f_k) (f1,⋯,fk)=σ(f1,⋯,fk),有 ( f 1 , ⋯ , f k ) (f_1,\cdots,f_k) (f1,⋯,fk) copy-satisfy T \mathcal{T} T。
有 n ≤ m ≤ 2 n n\leq m\leq 2n n≤m≤2n。
将fan-in two arithmetic circuits of unlimited fan-out with n n n gates and m m m wires 以constraint system的形式来表达。
constraint system L = ( V , Q ) \mathscr{L}=(\mathcal{V},\mathcal{Q}) L=(V,Q)定义如下: