Polygon zkEVM R1CS与Plonk电路转换

Posted mutourend

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Polygon zkEVM R1CS与Plonk电路转换相关的知识,希望对你有一定的参考价值。

1. 引言

前序博客有:


由上图可知,zkEVM会借助SNARK来“验证((验证STARK证明)的SNARK证明)”:

  • 1)将 STARK proof的约束系统evm.pilpil2circom 转换为 evm.verifier.cricom格式。详细见 Polygon zkEVM的pil-stark Fibonacci状态机初体验 第2节第8步“fibonacci generate circom”。
  • 2)再借助 circom工具STARK约束系统 转换为 R1CS约束系统表示evm.verifier.r1cs。详细见 Polygon zkEVM的pil-stark Fibonacci状态机初体验 第2节第9步“”
  • 3)再经 Compressor12_setupR1CS约束系统表示evm.verifier.r1cs 转换为 Plonk约束表示,同时会生成与 Plonk约束表示 对应的 STARK约束evm.c12.pil,以及 constant多项式的execution trace evm.c12.constPlonk辅助信息 evm.c12.exec。详细见 Polygon zkEVM的pil-stark Fibonacci状态机初体验 第2节第10步“fibonacci C12 setup”。Plonk辅助信息 evm.c12.exec 会用于后续生成 commit多项式execution trace evm.c12.commit

2. 约束表达

约束表达:

  • 1)STARK:采用execution trace来表示约束,以表格形式来表示内部程序状态的变化。如:
    序号 x x x A \\mathbfA A l 2 ( x ) l_2(x) l2(x)多项式) B \\mathbfB B l 1 ( x ) l_1(x) l1(x)多项式) i s I n i t i a l \\mathbfisInitial isInitial L 1 ( x ) L_1(x) L1(x)多项式) i s L a s t \\mathbfisLast isLast L L A S T ( x ) LLAST(x) LLAST(x)多项式)
    0 ω 0 \\omega^0 ω01210
    1 ω 1 \\omega^1 ω12500
    2 ω 2 \\omega^2 ω252900
    ⋮ \\vdots ⋮ \\vdots ⋮ \\vdots ⋮ \\vdots ⋮ \\vdots ⋮ \\vdots
    1023 ω 1023 \\omega^1023 ω10237446956166008400401
  • 2)Groth16等SNARK方案:采用R1CS来表示约束,形如 < s ⃗ , a ⃗ > ∗ < s ⃗ , b ⃗ > − < s ⃗ , c ⃗ > = 0 <\\vecs,\\veca>*<\\vecs,\\vecb>-<\\vecs,\\vecc>=0 <s ,a ><s ,b ><s ,c >=0,其中 < s ⃗ , a ⃗ > = ∑ i = 1 n s i a i <\\vecs,\\veca>=\\sum_i=1^ns_ia_i <s ,a >=i=1nsiai为dot product, a ⃗ , b ⃗ , c ⃗ \\veca,\\vecb,\\vecc a ,b ,c 为每步计算的系数, s ⃗ \\vecs s 为相应的输入。
  • 3)Halo2等SNARK方案:采用Plonk来表示约束,形如 Q m ∗ x r ∗ x l + Q l ∗ x l + Q r ∗ x r + Q o ∗ x o + Q k = 0 Q_m*x_r*x_l+Q_l*x_l+Q_r*x_r+Q_o*x_o+Q_k=0 Qmxrxl+Qlxl+Qrxr+Qoxo+Qk=0,其中 Q m , Q l , Q r , Q o , Q k Q_m,Q_l,Q_r,Q_o,Q_k Qm,Ql,Qr,Qo,Qk均为selector, x l , x r , x o x_l,x_r,x_o xl,xr,xo为相应的输入。

PIL-STARK 中的Fibonacci为例,在验证其STARK proof的Plonk表达中,除以上 Q m , Q l , Q r , Q o , Q k Q_m,Q_l,Q_r,Q_o,Q_k Qm,Ql,Qr,Qo,Qk selector之外,还额外引入了定制门 selector Q M D S , Q C M U L Q_MDS,Q_CMUL QMDS,QCMUL

附录:Polygon Hermez 2.0 zkEVM系列博客