1. 引言
纽约大学Kattis和Matter Labs团队2019年论文《RedShift: Transparent SNARKs from List Polynomial Commitments》,提出了:
- 名为“List Polynomial Commitment(LPC)”的新的IOP原语,可将现有的需要trusted setup的SNARK方案转换为Transparent SNARK方案。
- 100万( 2 20 2^{20} 220)gates,80-bit security level情况下,生成证明时间约为1分钟(还是半分钟),proof size约为515KB。
开源代码见:
- https://github.com/matter-labs/bellman/tree/dev/src/plonk/better_better_cs/redshift(Rust)
matter-labs有尝试做Recursive Redshift,不过目前好像未完成:
- https://github.com/matter-labs/bellman/pull/20
实际上,本文实现的RedShift证明系统为:(compile PLONK IOP with LPC) + FRI多项式承诺。

上图源自Vitalik 2019年博客Understanding PLONK。
本文,将SNARKs(Succinct Non-interactive ARguments of Knowledge)方案分为:
- 1)pre-processing SNARKs:
所谓pre-processing,是指需要trusted setup来生成proving/verification key-pair (pk,vk)(又名SRS(Structured Reference String))。
如Groth16,采用Kate commitment方案,优点是proof size很小,缺点是需要trusted setup。详细可参看博客 Groth16 学习笔记。
- 2)universal SNARKs:但是proof size会比pre-processing SNARKs大。
所谓universal,是指无需trusted setup。
其中, T T T为circuit size, d d d为circuit depth, G G G为circuit width。
- Goldwasser等人2008年论文 Delegating computation: interactive proofs for muggles:核心为采用sum-check protocol。proof size为 O ( d log T ) O(d\log T) O(dlogT)。
- Wahby等人2018年论文Hyrax: Doubly-efficient zkSNARKs without trusted setup:核心为采用sum-check protocol。基于discrete log assumption,实现了dot-product协议。proof size为 O ( d log G ) O(d\log G) O(dlogG)。
- Eli Ben-Sasson等人2019年论文STARK Scalable Zero Knowledge with no Trusted Setup:对于uniform(layered)circuits,proof size为 O ( log 2 T ) O(\log ^2T) O(log2T)。
不过,在本文中,针对某circuit C C C的satisfiability proof system,所实现RedShift证明系统为”fully succinct“ zk-SNARK方案,具有如下属性:【Bulletproofs不具备verifier succinctness,其验证时间与circuit size(即 ∣ C ∣ |C| ∣C∣)呈线性关系。】
- Succinctness:Verifier time为poly-logarithmic in ∣ C ∣ |C| ∣C∣。
- Prover Efficiency:Proving time为quasi-linear in ∣ C ∣ |C| ∣C∣。
- Proof Succinctness:Proof size为poly-logarithmic in ∣ C ∣ |C| ∣C∣。
- Transparent:无需可信设置。
- Plausibly Quantum Resistant:所基于的安全假设是抗量子的。
1.1 多项式承诺方案
所谓多项式承诺方案(PCS,Polynomial Commitment Schemes),是指可高效验证 f f f在其域内任意点的evaluation值。
透明高效的PCS对应transparent SNARK。
现有的多项式承诺方案:【其中 μ \mu μ为多项式中的变量个数, d d d为多项式degree。】
- Kate承诺:2010年,为首个PCS,需要trusted setup。
- Hyrax: Doubly-efficient zkSNARKs without trusted setup:2018年,为首个针对多变量多项式的透明PCS。commitment size和verification complexity均为 O ( d ) O(\sqrt{d}) O(d )。
- Supersonic Transparent SNARKs from DARK Compilers:2020年,基于unknown order group,commitment size和verification complexity为 O ( μ log d ) O(\mu \log d) O(μlogd)。
Eli Ben-Sasson等人2019年论文《DEEP-FRI: Sampling outside the box improves soundness》采用了类似STARK证明系统。在DEEP-FRI协议中,Verifier已知:
- 所有的setup polynomials
- 所有的constraints
- 所有的checked relations
DEEP-FRI的Verifier会直接进行验证。
本文:
- 在DEEP-FRI的基础上进行改进,使得可表示更复杂的STARK电路。
- 扩展了 2019年论文Transparent Polynomial Commitment Scheme with Polylogarithmic Communication Complexity中的相关算法,只是proof size要更大一些。
1.2 本文贡献
本文的主要贡献为:
- 1)List Polynomial Commitments(LPC):
Eli Ben-Sasson等人2018年论文《Fast Reed-Solomon interactive oracle proofs of proximity》和 2019年论文 《DEEP-FRI: Sampling outside the box improves soundness》 中介绍了Fast Reed Solomon IOP of Proximity(FRI IOPP)——为高效proximity testing,可检查某指定函数是否close to any low degree polynomial。该proximity tester可转换为透明PCS,其commitment size为 O ( log 2 d ) O(\log ^2 d) O(log2d),其中 d d d为多项式degree。但是,该PCS的soundness error相对较大,需迭代多次以达到指定的security level。从而导致大的proof size以及大的计算负担。其具有large soundness error的主要原因在于low sensitivity of FRI:when the Hamming distance between two different polynomials is smaller than some predefined constant, it is impossible for FRI to efficiently distinguish them。
而在本文中,扩大了DEEP-FRI中的PCS方案:可对a list of proximate polynomials进行承诺——引入了LPC(List Polynomial Commitment)。
- 2)使用LPC来编译IOP:借助LPC可将任意polynomial IOP编译为preprocessing zk-SNARK。
- 3)RedShift=(compile PLONK IOP with LPC) + FRI多项式承诺:借助LPC对Plonk进行实例化,去除了其中的trusted setup,所构建的新的证明系统称为RedShift。
本文为RedShift证明系统提供了正确性和安全性论证,并做了原型实现和benchmark对比。
100万( 2 20 2^{20} 220)gates,80-bit security level情况下,生成证明时间约为半分钟,proof size约为515KB。
1.3 Transparent zk-SNARKs
现有的Transparent zk-SNARKs方案主要有:
- Auorora(2018年)和Fractal(2019年),均是为R1CS arithmetization设计的IOP,二者提供的编译框架与本文的等价。Auorora(2018年)和Fractal(2019年)分别需要"holographic lincheck argument"/"IOP of Proximity"来构建IOP for R1CS,而本文借助PLONK IOP可避免该情况。
- Virgo(2020年)以及Libra(2019年,非transparent)采用类似的方案,但采用的为”基于interactive proofs(IPs)的Polynomial IOP“(详细见Goldwasser等人1998年论文《The knowledge complexity of interactive proof systems》)。【详细可参看博客SNARK Design。】
- Eli Ben-Sasson等人2018年论文《Fast Reed-Solomon interactive oracle proofs of proximity》和 2019年论文 《DEEP-FRI: Sampling outside the box improves soundness》 中,实现了FRI多项式承诺方案,并设计了ALI-IOP for compilation。本文为在此基础上改进。
- Halo infinite(2020年)定义了具有加法(additive)同态属性的严格版本的PCS,并与Bulletproof(2018年)做了快速递归证明benchmark。然而,这种additive PCS并不适于FRI,若该要求可适当放松,batch效率将可能更高。在Halo infinite(2020年)第4章的batch evaluation problem,等价为,多变量(multivariate)commitment,而LCS可解决该问题。通过放松PCS的binding属性,LCS可替代Kate commitment 为 transparent multivariate commitment,从而可更generally witness polynomials。
- Plonky2(2022年)借鉴了以上思想,关注 how two modular modifications to the proof system affect performance by using a smaller field for faster modular operations and implementing a leaner PLONK-derived IOP called turboPLONK。【turboPLONK为派生自PLONK-IOP的IOP。】
在Plonky2中,针对smaller filed会引起soundness loss的问题,对IOP应用tight parallel repetition theorem可提升soundness,同时,Plonky2中选择了合适的extension field来运行FRI。从而使得Plonky2具有高效的recursive proving time,为大规模的transparent recursive proof computation提供解决方案。
2. 总览
Kate多项式承诺方案中基于的安全假设为: t t t-Strong Diffie Hellman假设,使得任何使用Kate PCS的证明系统均需要trusted setup。
PLONK需要trusted setup的原因仅在于其采用了Kate PCS。
STARK(2019)和 Aurora(2018)中的关键组件为FRI协议。
FRI专注于解决如下proximity problem:
- Verifier 可oracle access to an evaluation of some function f f f on a fixed domain D ⊂ F D\subset \mathbb{F} D⊂F。
- Prover使Verifier信服,该函数 f f f is close to a polynomial of (predefined) degree d d d。
若Verifier query f f f获得所有的 D D D evaluations值,并插值计算出多项式,然后验证该多项式的degree不超过 d d d,则整个过程的complexity为 O ( d ) O(d) O(d)。FRI仅需要a poly-logarithmic number of queries in d d d,相应的FRI PCS直观流程为:【有2个FRI实例】
- 1)Prover对 f f f commit,提供an oracle to all evaluations of f f f on some predefined domain D D D。
- 2)Prover和Verifier参与FRI for f f f with respect to some degree d d d。若Prover通过验证,则Verifier信服大概率 f f f is close to a polynomial of degree less than d d d。
- 3)Verifier想要获得 f f f在 i ∉ D i\notin D i∈/D点的值。
- Prover发送相应的opening z = f ( i ) z=f(i) z=f(i),然后Prover和Verifier双方开启另一个FRI实例——对应的为某quotient function q ( X ) = ( f ( X ) − z ) / ( X − i ) q(X)=(f(X)-z)/(X-i) q(X)=(f(X)−z)/(X−i)的degree小于 d − 1 d-1 d−1。
- 注意,此时Verifier具有oracle access to q q q,因其具有oracle access to f f f,且其还知道 i i i和 z z z。
- 若Prover通过了本FRI实例,则 q ( X ) q(X) q(X)确实对应为某degree小于 d − 1 d-1 d−1的多项式函数。
- 4)根据Bezout理论: h ( t ) = y h(t)=y h(t)=y当且仅当 h ( X ) − y h(X)-y h(X)−y可整除 X − t X-t X−t in the ring F [ X ] \mathbb{F}[X] F[X]。因此,这意味着 f ( i ) = z f(i)=z f(i)=z成立。
不过,事实上,以上简化流程仍然不够,因存在以下问题:
- 1)问题1:FRI具有sensitivity bound:若precise polynomials和functions 足够接近,在某预定义metric(此时为relative Hamming distance)中,则FRI无法区分。
- 2)问题2:从实现一致性角度,希望以上2个FRI实例基于相同的domain。但是,FRI与degree d d d以及 domain size ∣ D ∣ |D| ∣D∣是相互关联的,有rate ρ = d / ∣ D ∣ \rho=d/|D| ρ=d/∣D∣。FRI结构要求rate ρ \rho ρ是“2-adic”的——即形如 2 − R 2^{-R} 2−R,其中 R ∈ N R\in \mathbb{N} R∈N。但是,在不对协议做修改的情况下,相邻的degree d d d和 d − 1 d-1 d−1无法同时满足该要求。
问题1 意味着需可正确处理函数只是非常接近某多项式的情况。现有的承诺方案无法满足该要求。
取 f f f的 δ \delta δ-ball around多项式集合 { f 1 ′ , f 2 ′ , ⋯ , f n ′ } \{f_1',f_2',\cdots,f_n'\} {f1′,f2′,⋯,fn′},可称该集合为 δ \delta δ-neighborhood of f f f或 δ \delta δ-list of f f f,标记为 L δ = L δ ( f ) L_{\delta}=L_{\delta}(f) Lδ=Lδ(f)。其中 δ \delta δ的取值取决于FRI sensitivity。
- 若 δ \delta δ足够小,则 L δ L_{\delta} Lδ内仅包含一个多项式,可称 δ \delta δ lies in the unique-decoding radius。但是这种情况下,相同的soundness对应更大的proof size。
- 增大 δ \delta δ可降低proof size,对应 L δ L_{\delta} Lδ的size要大于1。
为解决该问题,考虑relaxed版本的承诺方案——即,不open to 指定的多项式 f f f,改为,open to a polynomial in the δ \delta δ-list L δ L_{\delta} Lδ。
- 当向Prover请求在 i i i点的evaluation值时,Prover返回的为 f ′ ( i ) f'(i) f′(i),其中 f ′ ∈ L δ f'\in L_{\delta} f′∈Lδ。在后续章节将展示,这种方案足以对holographic IOPs进行compilation。
在PLONK执行过程中,Prover和Verifier需evaluate a set of ‘constraint’(or setup)polynomials c ( X ) c(X) c(X) encoding the constraint system itself。为实现succinctness,Verifier不会自己计算在 i i i点的值 c ( i ) c(i) c(i)。PLONK依赖Kate承诺:
- 以 c c c的commitment值和 i i i值为输入,Prover和Verifier运行Kate协议。借助Kate承诺的binding属性,Verifier可信服Prover所发送的evaluation值 c ( i ) c(i) c(i)确实是指定多项式 c ( X ) c(X) c(X)在 i i i点的值。
对其relaxation为:
- 对整个neighborhood L δ ( c ) L_{\delta}(c) Lδ(c) of c ( X ) c(X) c(X)进行commit,而不是仅对 c ( X ) c(X) c(X)自身进行commit,这会牺牲uniqueness。可对LPC稍作修改实现polynomial evaluation scheme。
本文借助list polynomial commitments和polynomial evaluation schemes,可修改PLONK来实现full transparency,修改后的证明系统称为RedShift,并在IOP model下证明其正确性。而这并未修改PLONK的完备性。
基于FRI的协议不具备Kate承诺的hiding属性,这意味着需要额外的策略来实现zero-knowledge。
PLONK的安全模型为Algebraic Group Model(AGM),RedShift基于FRI——安全模型为IOP model,从而会影响the soundness proof以及the proof of knowledge approaches。
3. 定义
3.1 标记规则
- F q \mathbb{F}_q Fq表示模为 q q q的素数域。
- D ⊂ F D\subset \mathbb{F} D⊂F对应为Reed Solomon codes的evaluation domain。
- f ∣ D f|_D f∣D表示restriction of function f f f to domain D D D。
- 对于function pair f , g f,g f,g,其对某domain D D D的relative Hamming distance表示为:
Δ ( f , g ) = ∣ { x ∈ D : f ( x ) ≠ g ( x ) } ∣ ∣ D ∣ \Delta(f,g)=\frac{|\{x\in D: f(x)\neq g(x)\}|}{|D|} Δ(f,g)=∣D∣∣{x∈D:f(x)=g(x)}∣
3.2 Reed-Solomon Codes序言
相关定义摘自 Huffman等人2003年论文《Fundamentals of error-correcting codes》:

JOHSON BOUND定理为:

与 Eli Ben-Sasson等人2019年论文《DEEP-FRI: Sampling outside the box improves soundness》 类似,对JOHSON BOUND定理进行改进,获得(强)猜想:

从而可认为,distance parameter δ \delta δ提供了unique decodability。最后,提供the unique decodability of RS codes的standard results:

Reed-Solomon code V = R S [ F , D , ρ ] V=RS[\mathbb{F},D,\rho] V=RS[F,D,ρ]的解码问题,对应为,找到某codeword u ∈ V u\in V u∈V, 其与某指定word v ∈ F D v\in \mathbb{F}^D v∈FD的distance为 δ \delta δ(对应Hamming distance)。现有名为Guruswami-Sudan算法(为标准的polynomial-time解决方案)可解决该问题,其输出包含了 v v v的所有 δ \delta δ-ball codewords。【详细见Guruswami和Sudan1999年论文《Improved decoding of Reed-Solomon and algebraic-geometry codes》】

3.3 Interactive Oracle Proofs 和 IOPs of Proximity
对某relation R ⊆ S × T \mathcal{R}\subseteq S\times T R⊆S×T,有 ( x , w ) ∈ R (x,w)\in \mathcal{R} (x,w)∈R,其中 x x x为instance, w w w为witness。
Eli Ben-Sasson等人2016年论文 Interactive oracle proof中,Interactive Oracle Proof(IOP)model为Interactive Proofs和Probabilistically Checkable Proofs的generalization。
以holographic IOP为例,其(preprocessed)序号会通过oracle提供给各参与方。该模式中包含了一个prover/verifier tuple ( P , V ) (P,V) (P,V) of two probabilistic interactive algorithms。交互的round数,表示为 k = r ( x ) k=r(x) k=r(x),可称为系统的round complexity。在single round内,Prover发送消息 a i a_i ai(可能会依赖之前的interaction),Verifier回复 m i m_i mi。Verifier最终输出为accept或reject。可将整个交互表示为 < P ( x , w ) ↔ V ( x ) >
<P(x,w)↔V(x)>,其中 V V V的输入为 x ∈ S x\in S x∈S, P P P的输入为 ( x , w ) ∈ S × T (x,w)\in S\times T (x,w)∈S×T。proof length为Prover发送的消息总长度,可表示为 l ( x ) = ∑ i = 1 k a i l(x)=\sum_{i=1}^{k}a_i l(x)=∑i=1kai。该协议的query complexity,标记为 q ( x ) q(x) q(x)——为Verifier读取的entries总数。
【PPT:probabilistic polynomial time 】



Interactive Oracle Proof of Proximity (IOPP) 为 r r r-round interactive IOP system,其针对的问题为:
- 已知某field F \mathbb{F} F,degree d ∈ N d\in \mathbb{N} d∈N,proximity δ > 0 \delta>0 δ>0和domain D ⊂ F D\subset \mathbb{F} D⊂F。
- Prover已知某函数 f f f
- Verifier可oracle access f f f的evaluation on domain D D D(即an oracle f ^ ( x ) \hat{f}(x) f^(x) to f ( x ) ∣ D f(x)|_D f(x)∣D)
- Prover使Verifier信服 f ∣ D f|_D f∣D为the evaluation of some degree d d d polynomial on domain D D D。即, f ∈ R S [ F , D , ρ = d / ∣ D ∣ ] f\in RS[\mathbb{F},D,\rho=d/|D|] f∈RS[F,D,ρ=d/∣D∣]。
本文遵循Eli Ben-Sasson等人2018年论文《Fast Reed-Solomon interactive oracle proofs of proximity》中的定义:

本文后续将以 I O P P ( f 0 , C ) → { 0 , 1 } IOPP(f^0,C)\rightarrow \{0,1\} IOPP(f0,C)→{0,1}来表示an IOPP protocol IOPP with purported code-word f 0 ∈ C f^0\in C f0∈C and C C C error-correcting code family。
3.4 Fast Reed-Solomon IOPP
RedShift中采用 Eli Ben-Sasson等人2018年论文《Fast Reed-Solomon interactive oracle proofs of proximity》和 2018年论文《Worst-case to Average Case Reductions for the Distance to a Code》中的FRI:
- 已知某RS code family R S [ F , D , ρ ] RS[\mathbb{F},D,\rho] RS[F,D,ρ],其中domain ∣ D ∣ = n = 2 k |D|=n=2^k ∣D∣=n=2k,rate ρ = 2 − R \rho=2^{-R} ρ=2−R, k , R ∈ N k,R\in \mathbb{N} k,R∈N。这意味着degree bound d d d为 2 k − R 2^{k-R} 2k−R。
- 令 r ∈ [ 1 , log d = k − R ] r\in [1,\log d=k-R] r∈[1,logd=k−R]为协议的round number
- 对于每个 η ∈ ( 0 , 1 ] \eta\in (0,1] η∈(0,1],令 J η : [ 0 , 1 ] → [ 0 , 1 ] J_{\eta}:[0,1]\rightarrow [0,1] Jη:[0,1]→[0,1]为Johnson function J η ( x ) = 1 − 1 − x ( 1 − η ) J_{\eta}(x)=1-\sqrt{1-x(1-\eta)} Jη(x)=1−1−x(1−η)
针对以上参数选择,对于某域 F \mathbb{F} F,FRI具有如下属性:

4. LPC(List Polynomial Commitment)
常规的承诺方案 ∑ = ( G e n , C o m , O p e n ) \sum=(Gen, Com, Open) ∑=(Gen,Com,Open)具有binding属性,其定义为:

LPC的主要不同之处在于:
- LPC展示的是 g ( z ) = y g(z)=y g(z)=y,其中 g g g为 f f f的 δ \delta δ-neighborhood。 L δ ( f ) L_{\delta}(f) Lδ(f)为 δ \delta δ-list of f f f。
4.1 LPC Specification
LPC定义为:

4.2 LPC Instantiation
本文设置public parameters为 p p = ( F , D ) pp=(\mathbb{F},D) pp=(F,D),将 C o m Com Com函数看成是oracle f ∣ D f|_D f∣D,使得双方可simulate FRI over the coset domain D D D by calculating the values of q ∣ D q|_D q∣D。因为双方可明确构建interpolation polynomials且可access to f ∣ D f|_D f∣D。因此,Verifier可使用oracle calls to f ∣ D f|_D f∣D来simulate q ∣ D q|_D q∣D,从而可检查 c = C o m ( q ) c=Com(q) c=Com(q)。因此,根据FRI的安全属性可知获得的LPC scheme满足如上定义。具体展示在以下定理中:

4.3 源自LPC的Polynomial Commitments
以上LPC定义足以处理证明系统中的“witness” polynomials w ( X ) w(X) w(X),因为仅要求存在这样的多项式,而不要求该多项式的唯一性。但是,当处理编码了约束系统自身的“setup” polynomials c ( X ) c(X) c(X)时,需做额外的考量,此时:
- 需确保Prover所提供的openings确实是多项式 c ( X ) c(X) c(X)自身的evaluations值,而不是某多项式 g ∈ L δ ( c ) g\in L_{\delta}(c) g∈Lδ(c)。
- Verifier可自己evaluate setup polynomial values,但是这不满足succinctness要求,因Verifier自己evaluate需要 O ( d ) O(d) O(d) computations。
不过,本文基于的事实为:
-
给定某setup polynomial c ( X ) c(X) c(X),Prover和Verifier均可计算其list L δ ( c ) L_{\delta}(c) Lδ(c)。
-
因此,Prover和Verifier均可找到某distinguishing point i i i,使得 c ( i ) ≠ g ( i ) , ∀ g ∈ L δ ( c ) c(i)\neq g(i),\forall g\in L_{\delta}(c) c(i)=g(i),∀g∈Lδ(c)。寻找某distinguishing point i i i的过程为:
- fully transparent
- 每个circuit只需寻找一次,找到符合要求的distinguishing point i i i即可。
因此,寻找某distinguishing point i i i的过程仅在协议开始时执行一次,可作为offline phase。
offline phase的主要作用就是:找到符合要求的distinguishing point i i i。这样就可通过LPC来强化所有的evaluations源自特定的多项式 c ( X ) c(X) c(X)。这与PCS提供的通用proof of knowledge等价。这样的预处理与Marlin中的indexer作用类似。

以上定理依赖一个简单的观察:
- 若已知某distinguishing point-evaluation pair ( x , f ( x ) ) (x,f(x)) (x,f(x)),使得 f ( x ) ≠ g ( x ) , ∀ g ∈ L δ ∖ { f } f(x)\neq g(x),\forall g\in L_{\delta}\setminus\{f\} f(x)=g(x),∀g∈Lδ∖{f},则将 ( x , f ( x ) ) (x,f(x)) (x,f(x))添加到LPC的openings中农,即意味着仅 f f f为a valid witness。
- 寻找distinguishing point-evaluation pair ( x , f ( x ) ) (x,f(x)) (x,f(x))仅需在LPC scheme setup中执行一次,而需要binding security的每个LPC示例可从proving key中获得 ( x , f ( x ) ) (x,f(x)) (x,f(x))这样的点。
4.3.1 polynomial evaluation scheme P E S PES PES Instantiation
基于不同的list distinguisher choices,本文提供了2种polynomial evaluation scheme P E S PES PES的实例化方案,并对比了不同list ›distinguisher的权衡取舍:
- 1)List Decodability distinguisher:无soundness error,但time complexity高。
- 2)Random Sampling distinguisher:选择 μ \mu μ个随机点,借助Schwartz-Zippel lemma,以相对快的速度,具有可接受的soundness error:

借助Random Sampling distinguisher + 之前章节构建的LPC scheme,可获得如下定理:

5. RedShift
RedShift为:(compile PLONK IOP with LPC) + FRI多项式承诺。
RedShift的约束系统沿用了PLONK中的定义,详细参看博客:PLONK: permutations over lagrange-bases for oecumenical noninteractive arguments of knowledge 学习笔记:

将fan-in two arithmetic circuits of unlimited fan-out with n n n gates and m m m wires 以constraint system的形式来表达。有 n ≤ m ≤ 2 n n\leq m\leq 2n n≤m≤2n。
constraint system L = ( V , Q ) \mathscr{L}=(\mathcal{V},\mathcal{Q}) L=(V,Q)定义如下:
- V \mathcal{V} V 的形式为: V = ( a ⃗ , b ⃗ , c ⃗ ) \mathcal{V}=(\vec{a},\vec{b},\vec{c}) V=(a ,b ,c ),其中 a ⃗ , b ⃗ , c ⃗ ∈ [ m ] n \vec{a},\vec{b},\vec{c}\in[m]^n a ,b ,c ∈[m]n,可将 a ⃗ , b ⃗ , c ⃗ \vec{a},\vec{b},\vec{c} a ,b ,c 看成是 L \mathscr{L} L的左侧、右侧和输出序列。【 a ⃗ i , b ⃗ i , c ⃗ i \vec{a}_i, \vec{b}_i,\vec{c}_i a i,b i,c i分别表示第 i i i个gate的左、右、输出wire序号, i i i的取值范围为 0 ∼ n 0\sim n 0∼n,有 a ⃗ i ∈ [ 0 , m − 1 ] , b ⃗ i ∈ [ 0 , m − 1 ] , , c ⃗ i ∈ [ 0 , m − 1 ] \vec{a}_i\in [0,m-1], \vec{b}_i\in [0,m-1],,\vec{c}_i\in [0,m-1] a i∈[0,m−1],b i∈[0,m−1],,c i∈[0,m−1]。】
- Q \mathcal{Q} Q 的形式为: Q = ( q ⃗ L , q ⃗ R , q ⃗ O , q ⃗ M , q ⃗ C ) ∈ ( F n ) 5 \mathcal{Q}=(\vec{q}_L,\vec{q}_R,\vec{q}_O,\vec{q}_M,\vec{q}_C)\in(\mathbb{F}^n)^5 Q=(q L,q R,q O,q M,q C)∈(Fn)5,其中 q ⃗ L , q ⃗ R , q ⃗ O , q ⃗ M , q ⃗ C ∈ F n \vec{q}_L,\vec{q}_R,\vec{q}_O,\vec{q}_M,\vec{q}_C\in\mathbb{F}^n q L,q R,q O,q M,q C∈Fn 可看成是”selector vectors“。【 ( ( q ⃗ L ) i , ( q ⃗ R ) i , ( q ⃗ O ) i , ( q ⃗ M ) i , ( q ⃗ C ) i ) ((\vec{q}_L)_i,(\vec{q}_R)_i,(\vec{q}_O)_i,(\vec{q}_M)_i,(\vec{q}_C)_i) ((q L)i,(q R)i,(q O)i,(q M)i,(q C)i)表示第 i i i个gate的selector赋值。】
称 x ⃗ ∈ F m \vec{x}\in\mathbb{F}^m x ∈Fm satisfies L \mathscr{L} L 当且仅当 对于每一个 i ∈ [ n ] i\in[n] i∈[n] 均有:【 x ⃗ \vec{x} x 表示对所有wire的赋值, x ⃗ j \vec{x}_j x j表示对第 j j j个wire的序号, j j j的取值范围为 0 ∼ m 0\sim m 0∼m(即 a ⃗ i , b ⃗ i , c ⃗ i \vec{a}_i,\vec{b}_i,\vec{c}_i a i,b i,c i)。】
( q ⃗ L ) i ⋅ x ⃗ a ⃗ i + ( q ⃗ R ) i ⋅ x ⃗ b ⃗ i + ( q ⃗ O ) i ⋅ x ⃗ c ⃗ i + ( q ⃗ M ) i ⋅ ( x ⃗ a ⃗ i ⋅ x ⃗ b ⃗ i ) + ( q ⃗ C ) i = 0 (\vec{q}_L)_i\cdot \vec{x}_{\vec{a}_i} +(\vec{q}_R)_i\cdot \vec{x}_{\vec{b}_i}+(\vec{q}_O)_i\cdot \vec{x}_{\vec{c}_i}+(\vec{q}_M)_i\cdot (\vec{x}_{\vec{a}_i}\cdot \vec{x}_{\vec{b}_i})+(\vec{q}_C)_i=0 (q L)i⋅x a i+(q R)i⋅x b i+(q O)i⋅x c i+(q M)i⋅(x a i⋅x b i)+(q C)i=0
定义正整数 l ≤ m l\leq m l≤m,子集 I ⊂ [ m ] \mathcal{I}\subset [m] I⊂[m] of “public inputs”。
进一步不失一般性地假设 I = { 1 , ⋯ , l } \mathcal{I}=\{1,\cdots,l\} I={1,⋯,l}。
定义relation R L \mathcal{R}_{\mathscr{L}} RL为:
the set of pairs ( x ⃗ , w ⃗ ) (\vec{x},\vec{w}) (x ,w ) with x ⃗ ∈ F l , w ∈ F m − l \vec{x}\in\mathbb{F}^l,w\in\mathbb{F}^{m-l} x ∈Fl,w∈Fm−l,使得 x : = ( x ⃗ , w ⃗ ) \mathbf{x}:=(\vec{x},\vec{w}) x:=(x ,w ) satisfies L \mathscr{L} L。【区分public input和witness。】
for i ∈ [ l ] i\in[l] i∈[l],当满足如下条件时,可称 L \mathscr{L} L is prepared for l l l public inputs:【即 l l l个public inputs,均为前 l l l个gate的左侧输入。】
a i = i , ( q ⃗ L ) i = 1 , ( q ⃗ M ) i = ( q ⃗ R ) i = ( q ⃗ O ) i = 0 , ( q ⃗ C ) i = 0 a_i=i,(\vec{q}_L)_i=1,(\vec{q}_M)_i=(\vec{q}_R)_i=(\vec{q}_O)_i=0,(\vec{q}_C)_i=0 ai=i,(q L)i=1,(q M)i=(q R)i=(q O)i=0,(q C)i=0
从而可认为给定的约束系统为prepared form。
为将多项式方式表达约束系统,还需要额外的要素:
- 令 g ∈ F ∗ g\in \mathbb{F}^* g∈F∗为order为 n + 1 n+1 n+1的元素, D = < g > ⊆ F ∗ D=\subseteq\mathbb{F}^* D=<g>⊆F∗为由 g g g生成的cyclic subgroup。 D ∗ = D / { e } D^*=D/\{e\} D∗=D/{e},其中 e = g 0 e=g^0 e=g0为identity。
- 对于 i ∈ [ n + 1 ] i\in[n+1] i∈[n+1], L i ( X ) L_i(X) Li(X)为 F ≤ n [ X ] \mathbb{F}_{\leq n}[X] F≤n[X]的element,有 L i ( g i ) = 1 L_i(g^i)=1 Li(gi)=1, L i ( a ) = 0 , ∀ a ∈ ( D / { g i } ) L_i(a)=0,\forall a\in (D/\{g^i\}) Li(a)=0,∀a∈(D/{gi})。
可称 { L i ( X ) } i = 1 n + 1 \{L_i(X)\}_{i=1}^{n+1} {Li(X)}i=1n+1为 D D D的Lagrange basis。
- 令 Z ( X ) = ∏ a ∈ D ∗ ( X − a ) ∈ F ≤ n [ X ] Z(X)=\prod_{a\in D^*}(X-a)\in \mathbb{F}_{\leq n}[X] Z(X)=∏a∈D∗(X−a)∈F≤n[X]为 D ∗ D^* D∗的domain polynomial,即zero only on D ∗ D^* D∗。
PLONK论文中的 checking “extended” permutations的目的是:
check a permutation “across” the values of several polynomials。
假设有多个多项式 f 1 , ⋯ , f k ∈ F < n [ X ] f_1,\cdots,f_k\in\mathbb{F}_{f1,⋯,fk∈F<n[X] 和 permutation σ : [ k n ] → [ k n ] \sigma: [kn]\rightarrow [kn] σ:[kn]→[kn]。
对于 ( g 1 , ⋯ , g k ) ∈ ( F < n [ X ] ) k (g_1,\cdots,g_k)\in(\mathbb{F}_{(g1,⋯,gk)∈(F<n[X])k,当以下条件成立时,可称 ( g 1 , ⋯ , g k ) = σ ( f 1 , ⋯ , f k ) (g_1,\cdots,g_k)=\sigma(f_1,\cdots,f_k) (g1,⋯,gk)=σ(f1,⋯,fk):
定义序列 ( 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]。
PLONK论文中的 checking “extended copy constraints” using a permutation,对应实际的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}_{f1,⋯,fk∈F<n[X],定义 ( f ( 1 ) , ⋯ , f ( k n ) ) ∈ F k n (f_{(1)},\cdots,f_{(kn)})\in\mathbb{F}^{kn} (f(1),⋯,f(kn))∈Fkn,若有 f ( l ) = f ( l ′ ) f_{(l)}=f_{(l')} f(l)=f(l′) whenever l , l ′ l,l' l,l′ belong to the same block of T \mathcal{T} T,则可称 f 1 , ⋯ , f k f_1,\cdots,f_k f1,⋯,fk copy-satisfy T \mathcal{T} T。
PLONK论文 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。
具体定义为:

其中:
- P I ( X ) \mathbf{PI}(X) PI(X):为public input多项式
- f L ( X ) , f R ( X ) , f O ( X ) \mathbf{f_L}(X),\mathbf{f_R}(X),\mathbf{f_O}(X) fL(X),fR(X),fO(X):分别为left、right、output Wire Polynomials,对应为Prover的private data。
注意:
- 以上PLONK约束系统的Definition 13和Definition 16是等价的。
- f L ( X ) , f R ( X ) , f O ( X ) \mathbf{f_L}(X),\mathbf{f_R}(X),\mathbf{f_O}(X) fL(X),fR(X),fO(X)的degree为 n − 1 n-1 n−1,其中 n n n为 L \mathcal{L} L size。不过为实现zero-knowledge,RedShift中将其degree放松到了某 k > n k>n k>n。
5.1 RedShift协议实例化
- 令 L ′ = ( q L , q R , q O , q M , q C , σ , n ) \mathcal{L}'=(\mathbf{q_L},\mathbf{q_R},\mathbf{q_O},\mathbf{q_M},\mathbf{q_C}, \sigma, n) L′=(qL,qR,qO,qM,qC,σ,n)为待证明的约束系统。
- 令 k 1 , k 2 , k 3 ∈ F ∗ k_1,k_2,k_3\in \mathbb{F}^* k1,k2,k3∈F∗为 F ∗ ∖ D \mathbb{F}^*\setminus D F∗∖D中的不同cosets,其中 k 1 = e = g 0 k_1=e=g^0 k1=e=g0为identity。
- 令 τ \tau τ为 P 1 = [ 3 n ] P_1=[3n] P1=[3n]与 P 2 = D ∗ ∪ k 2 D ∗ ∪ k 3 D ∗ P_2=D^*\cup k_2D^* \cup k_3D^* P2=D∗∪k2D∗∪k3D∗之间的双射,满足:
τ [ n ⋅ ( j − 1 ) + i ] = k j g i , i ∈ [ n ] , j ∈ [ 3 ] \tau[n\cdot (j-1)+i]=k_jg^i,i\in [n], j\in [3] τ[n⋅(j−1)+i]=kjgi,i∈[n],j∈[3]
- 令 σ \sigma σ为permutation on P 1 P_1 P1, σ ′ = τ ∘ σ ∘ τ − 1 \sigma'=\tau\circ\sigma\circ\tau^{-1} σ′=τ∘σ∘τ−1为permutation on P 2 P_2 P2。
- 定义 { S i d i ( X ) } i = 1 3 , { S σ j ( X ) } j = 1 3 \{S_{id_i}(X)\}_{i=1}^3, \{S_{\sigma_j}(X)\}_{j=1}^3 {Sidi(X)}i=13,{Sσj(X)}j=13为degree不超过 n n n的Permutation Polynomials:
- S i d j ( X ) = k j X , j ∈ [ 3 ] S_{id_j}(X)=k_jX, j\in[3] Sidj(X)=kjX,j∈[3]:【本质为:分别对所有gate的左侧输入wire、右侧输入wire和output wire 进行编号。如每个gate的左侧输入wire依次编号为 ( k 1 , 2 ⋅ k 1 , ⋯ , n ⋅ k 1 ) (k_1,2\cdot k_1,\cdots,n\cdot k_1) (k1,2⋅k1,⋯,n⋅k1),每个gate的右侧输入wire依次编号为 ( k 2 , 2 ⋅ k 2 , ⋯ , n ⋅ k 2 ) (k_2,2\cdot k_2,\cdots,n\cdot k_2) (k2,2⋅k2,⋯,n⋅k2),每个gate的output wire依次编号为 ( k 3 , 2 ⋅ k 3 , ⋯ , n ⋅ k 3 ) (k_3,2\cdot k_3,\cdots,n\cdot k_3) (k3,2⋅k3,⋯,n⋅k3)。】
- S σ j ( g i ) = σ ′ ( k j g i ) , i ∈ [ n ] , j ∈ [ 3 ] S_{\sigma_j}(g^i)=\sigma'(k_jg^i),i\in[n],j\in[3] Sσj(gi)=σ′(kjgi),i∈[n],j∈[3]: i i i的取值为0~n-1,对应为gate, j j j的取值对应为左、右、output wire。【本质为:表示的是gate之间的输入、输出连接关系,如某gate的output wire为另一gate的left input wire等。】
通过以上Permutation Polynomials可定义待证明问题的Setup Polynomials,Setup Polynomials由以下多项式组成:【Setup Polynomials应具有unique属性,确保待证明问题不可延展。】
- 1)Selector Polynomials: q L , q R , q O , q M , q C \mathbf{q_L},\mathbf{q_R},\mathbf{q_O},\mathbf{q_M},\mathbf{q_C} qL,qR,qO,qM,qC
- 2)Permutation Polynomials: { S i d i ( X ) } i = 1 3 , { S σ j ( X ) } j = 1 3 \{S_{id_i}(X)\}_{i=1}^3, \{S_{\sigma_j}(X)\}_{j=1}^3 {Sidi(X)}i=13,{Sσj(X)}j=13
- 3)Lagrange-basis Polynomials: { L i } i ∈ [ n + 1 ] \{L_i\}_{i\in [n+1]} {Li}i∈[n+1]
而Witness Polynomials组成为:【Witness Polynomials不要求unique属性。】
- 1)Wire Polynomials: f L , f R , f O \mathbf{f_L},\mathbf{f_R},\mathbf{f_O} fL,fR,fO
Public Input Polynomials表示为:
- P I ( X ) \mathbf{PI}(X) PI(X)
RedShift协议,在交互层与DEEP-ALI协议类似,只是采用的为PLONK约束系统。
RedShift中:
- 将distinguisher oracle O D \mathcal{O}^{\mathcal{D}} OD queries 实例化为:indexer algorithm I \mathcal{I} I的evaluations:其接收某low-degree polynomial input f f f,输出 μ \mu μ个不同的points及其evaluations { x i , f ( x i ) } i = 1 μ \{x_i,f(x_i)\}_{i=1}^{\mu} {xi,f(xi)}i=1μ。
- 为实现非交互式,其random sampling distinguisher采用 n c ⋅ μ ⋅ n n_c\cdot \mu\cdot n nc⋅μ⋅n次queries(其中 n c n_c nc为Constraint Polynomials数量),并将这些point作为PLONK证明系统IOP 的输入(详细见PLONK论文Section 7)。
为便于模块化,使用 ( ϵ , k ) (\epsilon,k) (ϵ,k)-LPC来模拟 ( ϵ , k , η ) (\epsilon,k,\eta) (ϵ,k,η)-polynomial evaluation scheme P E S = ( D , L P C ) PES=(\mathcal{D},LPC) PES=(D,LPC)——可access to μ \mu μ-dimensional η \eta η-distinguisher D \mathcal{D} D。
其思想为,将对某low-degree polynomial的承诺实例,替换为,使用LPC和PES,以满足证明系统的knowledge soundness要求。实际实现采用的是FRI协议,为改进proof size,选择的FRI maximal levels为 δ \delta δ。RedShift中才分了2类多项式,分别具有不同的要求:
- 1)Setup Polynomials:需满足unique属性,Prover需知道其所commit的具体多项式。
- 2)Witness Polynomials:无unique要求,仅需要证明存在some low-degree polynomials。
RedShift中,Verifier可访问的为:
- 1)Public Input Polynomial P I ( X ) \mathbf{PI}(X) PI(X);
- 2) { S i d i ( X ) } i = 1 3 , { S σ j ( X ) } j = 1 3 , { L i } i ∈ [ n + 1 ] , q L , q R , q O , q M , q C ∈ pp \{S_{id_i}(X)\}_{i=1}^3, \{S_{\sigma_j}(X)\}_{j=1}^3,\{L_i\}_{i\in [n+1]},\mathbf{q_L},\mathbf{q_R},\mathbf{q_O},\mathbf{q_M},\mathbf{q_C}\in\text{pp} {Sidi(X)}i=13,{Sσj(X)}j=13,{Li}i∈[n+1],qL,qR,qO,qM,qC∈pp的commitment oracle。

其中,以上:
- 第12步可知,由于:
- Constraint Polynomials:由Selector Polynomials q L , q R , q O , q M , q C \mathbf{q_L},\mathbf{q_R},\mathbf{q_O},\mathbf{q_M},\mathbf{q_C} qL,qR,qO,qM,qC 和 Permutation Polynomials { S i d i ( X ) } i = 1 3 , { S σ j ( X ) } j = 1 3 \{S_{id_i}(X)\}_{i=1}^3, \{S_{\sigma_j}(X)\}_{j=1}^3 {Sidi(X)}i=13,{Sσj(X)}j=13组成,对Verifier已知,调用的是PES进行验证。
- Witeness Polynomials f L , f R , f O \mathbf{f_L},\mathbf{f_R},\mathbf{f_O} fL,fR,fO 和 中间多项式Grand Product Polynomials P , Q \mathbf{P},\mathbf{Q} P,Q 以及 Quotient多项式 T \mathbf{T} T 为隐私数据,对Verifier是未知的,调用的是LPC进行验证。
- 整个RedShift的完备性在于:对于honest Prover, { F i } i = 1 6 \{F_i\}_{i=1}^6 {Fi}i=16为identically zero on domain D ∗ D^* D∗,即意味着所有的 F i ( X ) F_i(X) Fi(X) are divisible by Z ( X ) Z(X) Z(X) in the ring F [ X ] \mathbb{F}[X] F[X],因此其linear combination F ( X ) = ∑ i = 1 6 a i F i ( X ) F(X)=\sum_{i=1}^{6}a_iF_i(X) F(X)=∑i=16aiFi(X)也可整除 Z ( X ) Z(X) Z(X)。
第8步中: F 1 , F 2 , F 3 , F 4 , F 5 F_1,F_2,F_3,F_4,F_5 F1,F2,F3,F4,F5用于检查Witness Polynomials的copy-satisfiability。
从而RedShift的完备性 与 PLONK的完备性 等价。
- S i d j S_{id_j} Sidj:仅需要将 D D D 映射为 不相交集合 P 1 , P 2 , P 3 P_1,P_2,P_3 P1,P2,P3。
- S σ j S_{\sigma_j} Sσj:以“permuted”方式 映射为 相同的集合 P = P 1 ∪ P 2 ∪ P 3 P=P_1\cup P_2\cup P_3 P=P1∪P2∪P3。为permutation σ \sigma σ构建了map τ \tau τ来将domain [ n ] [n] [n] 映射为 P P P。
最简单的方式是,定义 S i d k S_{id_{k}} Sidk将 [ n ] [n] [n] 分别映射为 [ 1 , ⋯ , n ] , [ n + 1 , ⋯ , 2 n ] , [ 2 n + 1 , ⋯ , 3 n ] [1,\cdots,n],[n+1,\cdots,2n],[2n+1,\cdots,3n] [1,⋯,n],[n+1,⋯,2n],[2n+1,⋯,3n]。此时,不需要借助 τ \tau τ来做domain translation( P = [ n ] P=[n] P=[n])。这样做的问题在于,所有的 S i d j S_{id_j} Sidj多项式的degree将为 n n n。
RedShift中构建的 S i d j S_{id_j} Sidj最小degree可为1,使得Verifier在验证时可节约evaluation开销。该优化源自PLONK论文。
- 第10步中的random evaluation point y y y 取自domain D D D之外,这样可实现Perfect-zero knowledge,而不是statistical-zero knowledge。
- N N N表示随机取的challenge point数量,RedShift中设置 N = 1 N=1 N=1。
- 受degree上限限制,可能需要将 第9步 中的 T T T切分为不同的多项式 { T 0 , T 1 , T 2 } \{T_0,T_1,T_2\} {T0,T1,T2},然后分别进行commit。
- RedShift的knowledge soundness为:

使用“CS-proof”技术来将oracles编译为constraint functions,从而将以上IOP实例化为Non-Interactive Random Oracle Proof(NIROP)。
即假设存在某哈希函数 H : F × F → F \mathcal{H}:\mathbb{F}\times \mathbb{F}\rightarrow \mathbb{F} H:F×F→F,构建的 C o m ( f ) Com(f) Com(f)为root c c c of a Merkle tree where the leaves form the evaluations of f f f on D D D。注意,这样会为每个query引入 log ∣ D ∣ \log {|D|} log∣D∣开销。
6. RedShift系统实例化

7. RedShift Results
以Proth prime为例, q = r ⋅ 2 192 + 1 q=r\cdot 2^{192}+1 q=r⋅2192+1, r = 576460752303423505 r=576460752303423505 r=576460752303423505,取 ρ = 1 / 16 \rho=1/16 ρ=1/16,构建Merkle tree时采用Blake2s哈希函数:
在Apple MacBook Pro 18.2 with an M1 Max 10-core processor and 64 GB RAM上运行,记录的 proof generation times, verification times and proof sizes 与不同的 predicate sizes 之间的关系为:

8. 优化及变种
8.1 batch FRI

8.2 Binary Fields
PLONK仅适于prime fields,因其内嵌的为pairing-friendly椭圆曲线。而Eli Ben-Sasson等人2018年论文《Fast Reed-Solomon interactive oracle proofs of proximity》中提出了基于binary field的FRI协议。
RedShift适于prime fields,也适于binary fields。
8.3 递归
可将RedShift的verification subroutine表示为电路,该电路内主要包含的与少奶奶为Merkle path验证或inclusion proof验证。剩下的算术运算基于的field与原始circuit中定义的域相同,因此,无需cycles over pairing-friendly elliptic curves。
以BL12-381曲线为例,其subgroup order ∣ G ∣ |G| ∣G∣满足 2 32 ∣ ( ∣ G ∣ − 1 ) 2^{32} | (|G|-1) 232∣(∣G∣−1),借助递归,使其inner circuit验证开销更cheaper:

8.4 不同的证明系统
Sonic和Marlin中采用的为单变量多项式承诺,可将本文的LPC和PES用于Sonic和Marlin等不同的证明系统中。
附录 C FRI batch open
与Efficient polynomial commitment schemes for multiple points and polynomials学习笔记 思路类似:

附录 D FRI Overview
FRI基础知识可参看博客:
- STARKs and STARK VM: Proofs of Computational Integrity
- STARK入门知识
- STARK Low Degree Testing——FRI
附录 F RedShift proof size优化
为降低proof size,可做如下优化:
- 1)Merge Oracles:将不同类别的多项式合并,可由原来的17个独立的Merkle authentication path,降低为4个,从而可降低proof size,减少验证时间。
- 1.1)Constraint Polynomials:Selector Polynomials q L , q R , q O , q M , q C \mathbf{q_L},\mathbf{q_R},\mathbf{q_O},\mathbf{q_M},\mathbf{q_C} qL,qR,qO,qM,qC 和 Permutation Polynomials S i d 1 , S σ 1 , S σ 2 , S σ 3 S_{id_1},S_{\sigma_1},S_{\sigma_2},S_{\sigma_3} Sid1,Sσ1,Sσ2,Sσ3,这些多项式相互独立,且在setup时prepared。
- 1.2)Witness Polynomials: f L , f R , f O \mathbf{f_L},\mathbf{f_R},\mathbf{f_O} fL,fR,fO
- 1.3)Grand Product Polynomials: P , Q \mathbf{P},\mathbf{Q} P,Q
- 1.4)Quotient多项式 T \mathbf{T} T中的 T 0 , T 1 , T 2 T_0,T_1,T_2 T0,T1,T2多项式:
T ( X ) = X 2 n T 2 ( X ) + X n T 1 ( X ) + T 0 T(X)=X^{2n}T_2(X)+X^nT_1(X)+T_0 T(X)=X2nT2(X)+XnT1(X)+T0
- 2)Bitreversed Domain Element Enumeration as Merkle Tree Leaves:FRI的另一个重要优化是:当将claimed LDE values放入Merkle tree时,使用“bitreverse” enumeration
。此时,FRI “folding” step中构成coset所需的values总是adjacent的,从而可放入同一leaf内(结合下面的优化策略),共享a single Merkle path per FRI intermediate oracle query step。在本文PoC实现中未采用该优化措施。
- 3)Concatenating Merkle Tree Leaves:对oracle实例化时,在每棵Merkle tree的leaf中放入更多的values。该优化可为FRI采用更大的“localization parameter”,从而降低intermediate oracles数量。需对“localization parameter”(通常取值为8)进行动态调整,降低该值会使Merkle tree变浅,增大该值会使Merkle path变长。
- 4)其它优化策略:
- 对从transcript中获得的challenge values进行处理,以降低所需的FRI query次数。
参考资料
[1] SNARK Design
[2] HyperPlonk——实现zkEVM的一种zk-proof system
[3] REDSHIFT:不需要可信设置的PLONK
[4] Research Summary: REDSHIFT: Transparent SNARKs from List Polynominal Commitment IOPs