RedShift: Transparent SNARKs from List Polynomial Commitments学习笔记
Posted mutourend
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RedShift: Transparent SNARKs from List Polynomial Commitments学习笔记相关的知识,希望对你有一定的参考价值。
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。
实际上,本文实现的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(\\sqrtd) 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 \\mathbbF 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 ] \\mathbbF[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 \\mathbbN 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返回的为
以上是关于RedShift: Transparent SNARKs from List Polynomial Commitments学习笔记的主要内容,如果未能解决你的问题,请参考以下文章
SmartNuclide Announces 1st Patient Treated in Trial of SNA001