1. 引言

纽约大学Kattis和Matter Labs团队2019年论文《RedShift: Transparent SNARKs from List Polynomial Commitments》,提出了:

  • 名为“List Polynomial Commitment(LPC)”的新的IOP原语,可将现有的需要trusted setup的SNARK方案转换为Transparent SNARK方案。
  • 100万(2202^{20}220)gates,80-bit security level情况下,生成证明时间约为1分钟(还是半分钟),proof size约为515KB。

实际上,本文实现的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。
    其中,TTT为circuit size,ddd为circuit depth,GGG为circuit width。

    • Goldwasser等人2008年论文 Delegating computation: interactive proofs for muggles:核心为采用sum-check protocol。proof size为O(dlog⁡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(dlog⁡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⁡2T)O(\log ^2T)O(log2T)。

不过,在本文中,针对某circuit CCC的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),是指可高效验证fff在其域内任意点的evaluation值。
透明高效的PCS对应transparent SNARK。
现有的多项式承诺方案:【其中μ\muμ为多项式中的变量个数,ddd为多项式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⁡2d)O(\log ^2 d)O(log2d),其中ddd为多项式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万(2202^{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多项式承诺方案中基于的安全假设为:ttt-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 fff on a fixed domain D⊂FD\subset \mathbb{F}D⊂F。
  • Prover使Verifier信服,该函数fff is close to a polynomial of (predefined) degree ddd。

若Verifier query fff获得所有的DDD evaluations值,并插值计算出多项式,然后验证该多项式的degree不超过ddd,则整个过程的complexity为O(d)O(d)O(d)。FRI仅需要a poly-logarithmic number of queries in ddd,相应的FRI PCS直观流程为:【有2个FRI实例】

  • 1)Prover对fff commit,提供an oracle to all evaluations of fff on some predefined domain DDD。
  • 2)Prover和Verifier参与FRI for fff with respect to some degree ddd。若Prover通过验证,则Verifier信服大概率fff is close to a polynomial of degree less than ddd。
  • 3)Verifier想要获得fff在i∉Di\notin Di∈/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−1d-1d−1。
    • 注意,此时Verifier具有oracle access to qqq,因其具有oracle access to fff,且其还知道iii和zzz。
    • 若Prover通过了本FRI实例,则q(X)q(X)q(X)确实对应为某degree小于d−1d-1d−1的多项式函数。
  • 4)根据Bezout理论:h(t)=yh(t)=yh(t)=y当且仅当h(X)−yh(X)-yh(X)−y可整除X−tX-tX−t in the ring F[X]\mathbb{F}[X]F[X]。因此,这意味着f(i)=zf(i)=zf(i)=z成立。

不过,事实上,以上简化流程仍然不够,因存在以下问题:

  • 1)问题1:FRI具有sensitivity bound:若precise polynomials和functions 足够接近,在某预定义metric(此时为relative Hamming distance)中,则FRI无法区分。
  • 2)问题2:从实现一致性角度,希望以上2个FRI实例基于相同的domain。但是,FRI与degree ddd以及 domain size ∣D∣|D|∣D∣是相互关联的,有rate ρ=d/∣D∣\rho=d/|D|ρ=d/∣D∣。FRI结构要求rate ρ\rhoρ是“2-adic”的——即形如2−R2^{-R}2−R,其中R∈NR\in \mathbb{N}R∈N。但是,在不对协议做修改的情况下,相邻的degree ddd和d−1d-1d−1无法同时满足该要求。

问题1 意味着需可正确处理函数只是非常接近某多项式的情况。现有的承诺方案无法满足该要求。
取fff的δ\deltaδ-ball around多项式集合{f1′,f2′,⋯,fn′}\{f_1',f_2',\cdots,f_n'\}{f1′​,f2′​,⋯,fn′​},可称该集合为δ\deltaδ-neighborhood of fff或δ\deltaδ-list of fff,标记为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 指定的多项式fff,改为,open to a polynomial in the δ\deltaδ-list LδL_{\delta}Lδ​。

  • 当向Prover请求在iii点的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不会自己计算在iii点的值c(i)c(i)c(i)。PLONK依赖Kate承诺:

  • 以ccc的commitment值和iii值为输入,Prover和Verifier运行Kate协议。借助Kate承诺的binding属性,Verifier可信服Prover所发送的evaluation值c(i)c(i)c(i)确实是指定多项式c(X)c(X)c(X)在iii点的值。

对其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 标记规则

  • Fq\mathbb{F}_qFq​表示模为qqq的素数域。
  • D⊂FD\subset \mathbb{F}D⊂F对应为Reed Solomon codes的evaluation domain。
  • f∣Df|_Df∣D​表示restriction of function fff to domain DDD。
  • 对于function pair f,gf,gf,g,其对某domain DDD的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=RS[F,D,ρ]V=RS[\mathbb{F},D,\rho]V=RS[F,D,ρ]的解码问题,对应为,找到某codeword u∈Vu\in Vu∈V, 其与某指定word v∈FDv\in \mathbb{F}^Dv∈FD的distance为δ\deltaδ(对应Hamming distance)。现有名为Guruswami-Sudan算法(为标准的polynomial-time解决方案)可解决该问题,其输出包含了vvv的所有δ\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 TR⊆S×T,有(x,w)∈R(x,w)\in \mathcal{R}(x,w)∈R,其中xxx为instance,www为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发送消息aia_iai​(可能会依赖之前的interaction),Verifier回复mim_imi​。Verifier最终输出为accept或reject。可将整个交互表示为<P(x,w)↔V(x)><P(x,w)\leftrightarrow V(x)><P(x,w)↔V(x)>,其中VVV的输入为x∈Sx\in Sx∈S,PPP的输入为(x,w)∈S×T(x,w)\in S\times T(x,w)∈S×T。proof length为Prover发送的消息总长度,可表示为l(x)=∑i=1kail(x)=\sum_{i=1}^{k}a_il(x)=∑i=1k​ai​。该协议的query complexity,标记为q(x)q(x)q(x)——为Verifier读取的entries总数。
【PPT:probabilistic polynomial time 】



Interactive Oracle Proof of Proximity (IOPP) 为rrr-round interactive IOP system,其针对的问题为:

  • 已知某field F\mathbb{F}F,degree d∈Nd\in \mathbb{N}d∈N,proximity δ>0\delta>0δ>0和domain D⊂FD\subset \mathbb{F}D⊂F。
  • Prover已知某函数fff
  • Verifier可oracle access fff的evaluation on domain DDD(即an oracle f^(x)\hat{f}(x)f^​(x) to f(x)∣Df(x)|_Df(x)∣D​)
  • Prover使Verifier信服f∣Df|_Df∣D​为the evaluation of some degree ddd polynomial on domain DDD。即,f∈RS[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》中的定义:

本文后续将以IOPP(f0,C)→{0,1}IOPP(f^0,C)\rightarrow \{0,1\}IOPP(f0,C)→{0,1}来表示an IOPP protocol IOPP with purported code-word f0∈Cf^0\in Cf0∈C and CCC 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 RS[F,D,ρ]RS[\mathbb{F},D,\rho]RS[F,D,ρ],其中domain ∣D∣=n=2k|D|=n=2^k∣D∣=n=2k,rate ρ=2−R\rho=2^{-R}ρ=2−R,k,R∈Nk,R\in \mathbb{N}k,R∈N。这意味着degree bound ddd为2k−R2^{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)

常规的承诺方案∑=(Gen,Com,Open)\sum=(Gen, Com, Open)∑=(Gen,Com,Open)具有binding属性,其定义为:

LPC的主要不同之处在于:

  • LPC展示的是g(z)=yg(z)=yg(z)=y,其中ggg为fff的δ\deltaδ-neighborhood。Lδ(f)L_{\delta}(f)Lδ​(f)为δ\deltaδ-list of fff。

4.1 LPC Specification

LPC定义为:

4.2 LPC Instantiation

本文设置public parameters为pp=(F,D)pp=(\mathbb{F},D)pp=(F,D),将ComComCom函数看成是oracle f∣Df|_Df∣D​,使得双方可simulate FRI over the coset domain DDD by calculating the values of q∣Dq|_Dq∣D​。因为双方可明确构建interpolation polynomials且可access to f∣Df|_Df∣D​。因此,Verifier可使用oracle calls to f∣Df|_Df∣D​来simulate q∣Dq|_Dq∣D​,从而可检查c=Com(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 iii,使得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 iii的过程为:

    • fully transparent
    • 每个circuit只需寻找一次,找到符合要求的distinguishing point iii即可。

    因此,寻找某distinguishing point iii的过程仅在协议开始时执行一次,可作为offline phase。
    offline phase的主要作用就是:找到符合要求的distinguishing point iii。这样就可通过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中农,即意味着仅fff为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 PESPESPES Instantiation

基于不同的list distinguisher choices,本文提供了2种polynomial evaluation scheme PESPESPES的实例化方案,并对比了不同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 nnn gates and mmm wires 以constraint system的形式来表达。有n≤m≤2nn\leq m\leq 2nn≤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]^na,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}_iai​,bi​,ci​分别表示第iii个gate的左、右、输出wire序号,iii的取值范围为0∼n0\sim n0∼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]ai​∈[0,m−1],bi​∈[0,m−1],,ci​∈[0,m−1]。】
  • Q\mathcal{Q}Q 的形式为:Q=(q⃗L,q⃗R,q⃗O,q⃗M,q⃗C)∈(Fn)5\mathcal{Q}=(\vec{q}_L,\vec{q}_R,\vec{q}_O,\vec{q}_M,\vec{q}_C)\in(\mathbb{F}^n)^5Q=(q​L​,q​R​,q​O​,q​M​,q​C​)∈(Fn)5,其中q⃗L,q⃗R,q⃗O,q⃗M,q⃗C∈Fn\vec{q}_L,\vec{q}_R,\vec{q}_O,\vec{q}_M,\vec{q}_C\in\mathbb{F}^nq​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​)表示第iii个gate的selector赋值。】

称x⃗∈Fm\vec{x}\in\mathbb{F}^mx∈Fm satisfies L\mathscr{L}L 当且仅当 对于每一个i∈[n]i\in[n]i∈[n] 均有:【x⃗\vec{x}x表示对所有wire的赋值,x⃗j\vec{x}_jxj​表示对第jjj个wire的序号,jjj的取值范围为0∼m0\sim m0∼m(即a⃗i,b⃗i,c⃗i\vec{a}_i,\vec{b}_i,\vec{c}_iai​,bi​,ci​)。】
(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​⋅xai​​+(q​R​)i​⋅xbi​​+(q​O​)i​⋅xci​​+(q​M​)i​⋅(xai​​⋅xbi​​)+(q​C​)i​=0

定义正整数l≤ml\leq ml≤m,子集I⊂[m]\mathcal{I}\subset [m]I⊂[m] of “public inputs”。
进一步不失一般性地假设I={1,⋯,l}\mathcal{I}=\{1,\cdots,l\}I={1,⋯,l}。
定义relation RL\mathcal{R}_{\mathscr{L}}RL​为:
the set of pairs (x⃗,w⃗)(\vec{x},\vec{w})(x,w) with x⃗∈Fl,w∈Fm−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 lll public inputs:【即lll个public inputs,均为前lll个gate的左侧输入。】
ai=i,(q⃗L)i=1,(q⃗M)i=(q⃗R)i=(q⃗O)i=0,(q⃗C)i=0a_i=i,(\vec{q}_L)_i=1,(\vec{q}_M)_i=(\vec{q}_R)_i=(\vec{q}_O)_i=0,(\vec{q}_C)_i=0ai​=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+1n+1n+1的元素,D=<g>⊆F∗D=<g>\subseteq\mathbb{F}^*D=<g>⊆F∗为由ggg生成的cyclic subgroup。D∗=D/{e}D^*=D/\{e\}D∗=D/{e},其中e=g0e=g^0e=g0为identity。
  • 对于i∈[n+1]i\in[n+1]i∈[n+1],Li(X)L_i(X)Li​(X)为F≤n[X]\mathbb{F}_{\leq n}[X]F≤n​[X]的element,有Li(gi)=1L_i(g^i)=1Li​(gi)=1,Li(a)=0,∀a∈(D/{gi})L_i(a)=0,\forall a\in (D/\{g^i\})Li​(a)=0,∀a∈(D/{gi})。
    可称{Li(X)}i=1n+1\{L_i(X)\}_{i=1}^{n+1}{Li​(X)}i=1n+1​为DDD的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。

假设有多个多项式 f1,⋯,fk∈F<n[X]f_1,\cdots,f_k\in\mathbb{F}_{<n}[X]f1​,⋯,fk​∈F<n​[X] 和 permutation σ:[kn]→[kn]\sigma: [kn]\rightarrow [kn]σ:[kn]→[kn]。

对于(g1,⋯,gk)∈(F<n[X])k(g_1,\cdots,g_k)\in(\mathbb{F}_{<n}[X])^k(g1​,⋯,gk​)∈(F<n​[X])k,当以下条件成立时,可称 (g1,⋯,gk)=σ(f1,⋯,fk)(g_1,\cdots,g_k)=\sigma(f_1,\cdots,f_k)(g1​,⋯,gk​)=σ(f1​,⋯,fk​):
定义序列 (f(1),⋯,f(kn)),(g(1),⋯,g(kn))∈Fkn(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):=fj(gi),g((j−1)⋅n+i):=gj(gi)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]。则有gl=fσ(l)g_{l}=f_{\sigma(l)}gl​=fσ(l)​ for each l∈[kn]l\in[kn]l∈[kn]。

PLONK论文中的 checking “extended copy constraints” using a permutation,对应实际的primitive为:
令T={T1,⋯,Ts}\mathcal{T}=\{T_1,\cdots,T_s\}T={T1​,⋯,Ts​} 为 a partition of [kn][kn][kn] into disjoint blocks。

对于特定的f1,⋯,fk∈F<n[X]f_1,\cdots, f_k\in\mathbb{F}_{<n}[X]f1​,⋯,fk​∈F<n​[X],定义(f(1),⋯,f(kn))∈Fkn(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,则可称 f1,⋯,fkf_1,\cdots,f_kf1​,⋯,fk​ copy-satisfy T\mathcal{T}T。

PLONK论文 5.2节的protocol for extended permutations可直接拿来check whether f1,⋯,fkf_1,\cdots,f_kf1​,⋯,fk​ satisfy T\mathcal{T}T,具体为:
定义a permutation σ(T)\sigma(\mathcal{T})σ(T) on [kn][kn][kn],使得对于T\mathcal{T}T中的每一个block TiT_iTi​,σ(T)\sigma(\mathcal{T})σ(T) 包含了a cycle going over all elements of TiT_iTi​。
则 当且仅当(f1,⋯,fk)=σ(f1,⋯,fk)(f_1,\cdots,f_k)=\sigma(f_1,\cdots,f_k)(f1​,⋯,fk​)=σ(f1​,⋯,fk​),有 (f1,⋯,fk)(f_1,\cdots,f_k)(f1​,⋯,fk​) copy-satisfy T\mathcal{T}T。

具体定义为:

其中:

  • PI(X)\mathbf{PI}(X)PI(X):为public input多项式
  • fL(X),fR(X),fO(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是等价的。
  • fL(X),fR(X),fO(X)\mathbf{f_L}(X),\mathbf{f_R}(X),\mathbf{f_O}(X)fL​(X),fR​(X),fO​(X)的degree为n−1n-1n−1,其中nnn为L\mathcal{L}L size。不过为实现zero-knowledge,RedShift中将其degree放松到了某k>nk>nk>n。

5.1 RedShift协议实例化

  • 令L′=(qL,qR,qO,qM,qC,σ,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)为待证明的约束系统。
  • 令k1,k2,k3∈F∗k_1,k_2,k_3\in \mathbb{F}^*k1​,k2​,k3​∈F∗为F∗∖D\mathbb{F}^*\setminus DF∗∖D中的不同cosets,其中k1=e=g0k_1=e=g^0k1​=e=g0为identity。
  • 令τ\tauτ为P1=[3n]P_1=[3n]P1​=[3n]与P2=D∗∪k2D∗∪k3D∗P_2=D^*\cup k_2D^* \cup k_3D^*P2​=D∗∪k2​D∗∪k3​D∗之间的双射,满足:
    τ[n⋅(j−1)+i]=kjgi,i∈[n],j∈[3]\tau[n\cdot (j-1)+i]=k_jg^i,i\in [n], j\in [3]τ[n⋅(j−1)+i]=kj​gi,i∈[n],j∈[3]
  • 令σ\sigmaσ为permutation on P1P_1P1​,σ′=τ∘σ∘τ−1\sigma'=\tau\circ\sigma\circ\tau^{-1}σ′=τ∘σ∘τ−1为permutation on P2P_2P2​。
  • 定义{Sidi(X)}i=13,{Sσj(X)}j=13\{S_{id_i}(X)\}_{i=1}^3, \{S_{\sigma_j}(X)\}_{j=1}^3{Sidi​​(X)}i=13​,{Sσj​​(X)}j=13​为degree不超过nnn的Permutation Polynomials:
    • Sidj(X)=kjX,j∈[3]S_{id_j}(X)=k_jX, j\in[3]Sidj​​(X)=kj​X,j∈[3]:【本质为:分别对所有gate的左侧输入wire、右侧输入wire和output wire 进行编号。如每个gate的左侧输入wire依次编号为(k1,2⋅k1,⋯,n⋅k1)(k_1,2\cdot k_1,\cdots,n\cdot k_1)(k1​,2⋅k1​,⋯,n⋅k1​),每个gate的右侧输入wire依次编号为(k2,2⋅k2,⋯,n⋅k2)(k_2,2\cdot k_2,\cdots,n\cdot k_2)(k2​,2⋅k2​,⋯,n⋅k2​),每个gate的output wire依次编号为(k3,2⋅k3,⋯,n⋅k3)(k_3,2\cdot k_3,\cdots,n\cdot k_3)(k3​,2⋅k3​,⋯,n⋅k3​)。】
    • Sσj(gi)=σ′(kjgi),i∈[n],j∈[3]S_{\sigma_j}(g^i)=\sigma'(k_jg^i),i\in[n],j\in[3]Sσj​​(gi)=σ′(kj​gi),i∈[n],j∈[3]:iii的取值为0~n-1,对应为gate,jjj的取值对应为左、右、output wire。【本质为:表示的是gate之间的输入、输出连接关系,如某gate的output wire为另一gate的left input wire等。】

通过以上Permutation Polynomials可定义待证明问题的Setup Polynomials,Setup Polynomials由以下多项式组成:【Setup Polynomials应具有unique属性,确保待证明问题不可延展。

  • 1)Selector Polynomials: qL,qR,qO,qM,qC\mathbf{q_L},\mathbf{q_R},\mathbf{q_O},\mathbf{q_M},\mathbf{q_C}qL​,qR​,qO​,qM​,qC​
  • 2)Permutation Polynomials:{Sidi(X)}i=13,{Sσj(X)}j=13\{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:{Li}i∈[n+1]\{L_i\}_{i\in [n+1]}{Li​}i∈[n+1]​

而Witness Polynomials组成为:【Witness Polynomials不要求unique属性。

  • 1)Wire Polynomials:fL,fR,fO\mathbf{f_L},\mathbf{f_R},\mathbf{f_O}fL​,fR​,fO​

Public Input Polynomials表示为:

  • PI(X)\mathbf{PI}(X)PI(X)

RedShift协议,在交互层与DEEP-ALI协议类似,只是采用的为PLONK约束系统。
RedShift中:

  • 将distinguisher oracle OD\mathcal{O}^{\mathcal{D}}OD queries 实例化为:indexer algorithm I\mathcal{I}I的evaluations:其接收某low-degree polynomial input fff,输出μ\muμ个不同的points及其evaluations {xi,f(xi)}i=1μ\{x_i,f(x_i)\}_{i=1}^{\mu}{xi​,f(xi​)}i=1μ​。
  • 为实现非交互式,其random sampling distinguisher采用nc⋅μ⋅nn_c\cdot \mu\cdot nnc​⋅μ⋅n次queries(其中ncn_cnc​为Constraint Polynomials数量),并将这些point作为PLONK证明系统IOP 的输入(详细见PLONK论文Section 7)。

为便于模块化,使用(ϵ,k)(\epsilon,k)(ϵ,k)-LPC来模拟 (ϵ,k,η)(\epsilon,k,\eta)(ϵ,k,η)-polynomial evaluation scheme PES=(D,LPC)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 PI(X)\mathbf{PI}(X)PI(X);
  • 2){Sidi(X)}i=13,{Sσj(X)}j=13,{Li}i∈[n+1],qL,qR,qO,qM,qC∈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 qL,qR,qO,qM,qC\mathbf{q_L},\mathbf{q_R},\mathbf{q_O},\mathbf{q_M},\mathbf{q_C}qL​,qR​,qO​,qM​,qC​ 和 Permutation Polynomials {Sidi(X)}i=13,{Sσj(X)}j=13\{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 fL,fR,fO\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,{Fi}i=16\{F_i\}_{i=1}^6{Fi​}i=16​为identically zero on domain D∗D^*D∗,即意味着所有的Fi(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=16aiFi(X)F(X)=\sum_{i=1}^{6}a_iF_i(X)F(X)=∑i=16​ai​Fi​(X)也可整除Z(X)Z(X)Z(X)。
    第8步中:F1,F2,F3,F4,F5F_1,F_2,F_3,F_4,F_5F1​,F2​,F3​,F4​,F5​用于检查Witness Polynomials的copy-satisfiability。
    从而RedShift的完备性 与 PLONK的完备性 等价。
  • SidjS_{id_j}Sidj​​:仅需要将DDD 映射为 不相交集合 P1,P2,P3P_1,P_2,P_3P1​,P2​,P3​。
  • SσjS_{\sigma_j}Sσj​​:以“permuted”方式 映射为 相同的集合 P=P1∪P2∪P3P=P_1\cup P_2\cup P_3P=P1​∪P2​∪P3​。为permutation σ\sigmaσ构建了map τ\tauτ来将domain [n][n][n] 映射为 PPP。
    最简单的方式是,定义SidkS_{id_{k}}Sidk​​将[n][n][n] 分别映射为 [1,⋯,n],[n+1,⋯,2n],[2n+1,⋯,3n][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])。这样做的问题在于,所有的SidjS_{id_j}Sidj​​多项式的degree将为nnn。
    RedShift中构建的SidjS_{id_j}Sidj​​最小degree可为1,使得Verifier在验证时可节约evaluation开销。该优化源自PLONK论文。
  • 第10步中的random evaluation point yyy 取自domain DDD之外,这样可实现Perfect-zero knowledge,而不是statistical-zero knowledge。
  • NNN表示随机取的challenge point数量,RedShift中设置N=1N=1N=1。
  • 受degree上限限制,可能需要将 第9步 中的TTT切分为不同的多项式{T0,T1,T2}\{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,构建的Com(f)Com(f)Com(f)为root ccc of a Merkle tree where the leaves form the evaluations of fff on DDD。注意,这样会为每个query引入log⁡∣D∣\log {|D|}log∣D∣开销。

6. RedShift系统实例化

7. RedShift Results

以Proth prime为例,q=r⋅2192+1q=r\cdot 2^{192}+1q=r⋅2192+1,r=576460752303423505r=576460752303423505r=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∣满足232∣(∣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 qL,qR,qO,qM,qC\mathbf{q_L},\mathbf{q_R},\mathbf{q_O},\mathbf{q_M},\mathbf{q_C}qL​,qR​,qO​,qM​,qC​ 和 Permutation Polynomials Sid1,Sσ1,Sσ2,Sσ3S_{id_1},S_{\sigma_1},S_{\sigma_2},S_{\sigma_3}Sid1​​,Sσ1​​,Sσ2​​,Sσ3​​,这些多项式相互独立,且在setup时prepared。
    • 1.2)Witness Polynomials:fL,fR,fO\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中的T0,T1,T2T_0,T_1,T_2T0​,T1​,T2​多项式:
      T(X)=X2nT2(X)+XnT1(X)+T0T(X)=X^{2n}T_2(X)+X^nT_1(X)+T_0T(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

RedShift: Transparent SNARKs from List Polynomial Commitments学习笔记相关推荐

  1. Vector Commitment Techniques and Applications to Verifiable Decentralized Storage学习笔记

    1. 引言 Campanelli等人 2020年论文<Vector Commitment Techniques and Applications to Verifiable Decentrali ...

  2. Pointproofs 学习笔记3——代码解析

    1. 引言 之前的系列博客有: 1)Pointproofs: Aggregating Proofs for Multiple Vector Commitments 学习笔记1中,主要对 Algoran ...

  3. Functional Commitment Schemes: From Polynomial Commitments to Pairing-Based Accumulators学习笔记

    1. 背景知识 Benoˆıt Libert, Somindu C. Ramanna 和 Moti Yung 2016年论文 <Functional Commitment Schemes: Fr ...

  4. Subvector Commitments with Application to Succinct Arguments学习笔记

    1. 背景知识 Russell W. F. Lai 和 Giulio Malavolta 在Crypto 2019上发表的论文<Subvector Commitments with Applic ...

  5. 论文笔记Dory:Arguments for Inner Products and Polynomial Commitments

    Lee, J. (2021). Dory: Efficient, Transparent Arguments for Generalised Inner Products and Polynomial ...

  6. Witness Encryption for Succinct Functional Commitments and Applications学习笔记

    1. 引言 前序博客有: Functional Commitment Schemes: From Polynomial Commitments to Pairing-Based Accumulator ...

  7. PLONK: permutations over lagrange-bases for oecumenical noninteractive arguments of knowledge 学习笔记

    1. 引言 Gabizon等人2019年论文<PLONK: permutations over lagrange-bases for oecumenical noninteractive arg ...

  8. Compressed sigma-Protocol Theory and Practical Application to Plug Play Secure Algorithmics学习笔记

    1. 引言 Thomas Attema等人2020年论文<Compressed sigma-Protocol Theory and Practical Application to Plug & ...

  9. Linear-time zero-knowledge proofs for arithmetic circuit satisfiability 学习笔记

    1. 引言 Bootle等人2017年论文<Linear-time zero-knowledge proofs for arithmetic circuit satisfiability> ...

最新文章

  1. ami编码设计流程图_Openplant智慧电厂BIM设计-很强大(艾三维BIM分享)
  2. Effective Java读书笔记七:泛型(部分章节需要重读)
  3. vba 日期加一年_VBA究竟值不值得审计学?
  4. [转载] Python导出Excel图表
  5. 检查某个网段存活的主机_shell脚本
  6. FindFirstFile
  7. python3爬取国家统计局,区域城乡代码
  8. 关于光学软件设计衍射透镜的一点总结
  9. 关于Vue单页面应用的首屏加载优化
  10. 服务器win10系统开机慢,Win10系统更新后开机变得很慢的解决方法
  11. 机场航班起降与协调管理系统飞机航班(含源码+论文+答辩PPT等)
  12. 人为什么看不到事实?
  13. 儿童在未来游戏中的监管与保护趋势
  14. 悟道 冥 与 力 万事皆可成
  15. ARM-9 4412板、linux-3.14内核、usb转串口pl2303驱动的移植相关问题
  16. Matlab R2021a 安装使用教程
  17. c语言开发网站教程,C语言也能干大事之C语言开发网站教程
  18. Eclipse配置gradle插件教程
  19. Linux 文件目录压缩与解压命令
  20. pytorch学习笔记之dataload

热门文章

  1. 如何使用CSS3实现一个3D泡沫图形
  2. 我是Papi酱,一个集才华与美貌于一身的过气网红
  3. 题库(3)_计算圆周率Π
  4. 北京公积金打印贷款证明(缴存明细+异地贷款职工缴存使用证明)
  5. 某公司高管疾呼:底层程序员离职率太高,有人入职不到半年就走!建议把恶意离职加入征信,让年轻人对公司有起码的尊重!...
  6. springboot2 整合 rocketmq
  7. UVA1595(对称轴)
  8. 记第一次codeforces比赛经历
  9. Android 蓝牙开发——PBAP协议(十)
  10. 遇到 ORACLE 错误 1455