1. 引言
前序博客有:
微软团队2021年论文 《Nova: Recursive Zero-Knowledge Arguments from Folding Schemes》。
开源代码见:
作者视频讲解见:
Nova为:
- a SNARK for iterative computations:用于证明 y = F ( F ( F ( F ( F ( x ) ) ) ) ) y=F(F(F(F(F(x))))) y=F(F(F(F(F(x))))),其中:
- F F F为(potentially non-deterministic)computation
- x x x为输入, y y y为输出
Nova这样的iterative computation SNARK的应用场景有:
- VDFs:此时 F F F为某delay function,如MinRoot,计算某有限域内的cube root 或 fifth root。
- Rollups: F F F的输入为:state Merkle root,以及,某些交易(non-deterministically),执行交易,输出:updated Merkle root。
- Turing-complete SNARK语言(如Lurk)的后端: F F F为执行a “step” of the program。
Nova的关键特性为:
- 无需trusted setup
- 无需(如,通过FFT运算)做多项式除法和多项式乘法运算
- 可基于任意cycles of curves,如secp/secq。【详情见Spartan-ECDSA:最快的浏览器内 ZK secp256k1 ECDSA中的“附录:Secp256k1/Secq256k1曲线cycle”。】
- 也可基于任意FFT-friendly cycles of curves,如Pasta(Pallas/Vesta)。【详情见:Halo2学习笔记——背景资料之Elliptic curves(5) 和 Mina中的Pasta(Pallas和Vesta)曲线。】
- F F F运算指定为R1CS表示
- 为理论上最简单的证明系统,同时提供了state-of-the-art efficiency:
- Prover time:由2个size为 O ( C ) O(C) O(C)的multiexps主导,其中, C = ∣ F ∣ C=|F| C=∣F∣
- Nova的证明速度要比Groth16/PLONK/Halo等快5~50倍。
- 具有Constant-sized verifier circuit(主要由2个scalar multiplication运算主导):意味着具有lowest recursion threshold。
- 压缩proof size为: O ( log C ) O(\log C) O(logC)个group elements:实际上只有数KB。
- Prover time:由2个size为 O ( C ) O(C) O(C)的multiexps主导,其中, C = ∣ F ∣ C=|F| C=∣F∣
为证明 y = F ( n ) ( x ) y=F^{(n)}(x) y=F(n)(x):
- 1)直观方法为:
-
将 F F F的 n n n个迭代展开为一个电路
-
对该单一电路应用某state-of-the-art SNARK来生成证明
直观方法的缺陷为:
- Prover所需内存为: Ω ( n ∗ ∣ F ∣ ) \Omega(n*|F|) Ω(n∗∣F∣)
- proof 不是 incrementally updatable
- 取决于具体的SNARK方案,Verifier time可能会依赖具体的 n n n值(即,迭代次数)
-
- 2)Incrementally verifiable computation(IVC)[Val08, BCTV14]
[Val08, BCTV14] IVC方案 与 Nova对比为:
Nova 与 Bunz等人2021年论文BCLMS21 Proof-Carrying Data without Succinct Arguments中的“split accumulation”相关:
- Nova效率更高、更直接,且提供了a “native” scheme for proof compression。
Nova的秘密武器在于:Folding Schemes for NP:【下图的NP instance均为R1CS instance】
Nova的关键贡献在于:
- 不使用SNARKs 所实现的folding scheme for NP
R1CS回顾:
为实现R1CS的folding scheme,最直观但却错误的方式为:
即以上方案,对于 Z = ( W , x , 1 ) Z=(W,x,1) Z=(W,x,1),找不到相应的 r r r,使得 A Z ∘ B Z ≠ C Z AZ\circ BZ\neq CZ AZ∘BZ=CZ,原因在于:
Nova的创新之一在于其所实现的Relaxed R1CS:【当 u = 1 , E = 0 ⃗ u=1,E=\vec{0} u=1,E=0时,标准R1CS实例 为 Relaxed R1CS实例 的特例情况。】
针对Relaxed R1CS的folding scheme为:【即通过引入public input u u u和witness E E E来实现消减,以保证folding后仍能满足相同的relation关系】
根据relaxed R1CS的folding scheme所实现的IVC直观方案为:
不过,以上naive方案,IVC proof size为: O ( ∣ F ′ ∣ ) O(|F'|) O(∣F′∣)个group elements。且存在以下2个问题:
- Proofs are large, both asymptotically and concretely
- Proofs are not zero-knowledge
原则上:借助zkSNARKs, P P P可证明the knowledge of a valid IVC proof,从而提供了succinctness和zero-knowledge。但是,借助zkSNARKs的方案是expensive的:
- P P P必须证明,如,其知道 W W W对应承诺值 W ^ \hat{W} W^,以及其他信息
为此,Nova创新之二是进行了proof压缩:
- 将对vectors的承诺值,解析为,对multilinear多项式的多项式承诺值
- 使用Spartan的变种,来直接证明承诺值 W ^ \hat{W} W^满足相应的relaxed R1CS。
- 压缩后的proof size,由 O ( ∣ F ′ ∣ ) O(|F'|) O(∣F′∣)个group elements,降低为 O ( log ∣ F ′ ∣ ) O(\log |F'|) O(log∣F′∣)个group elements
也可以使用IPA(Inner Product Argument)来证明承诺值 W ^ \hat{W} W^满足相应的relaxed R1CS:
- proof size可降低约5倍(可避免Spartan中的sum-check protocol,但在生成final proof时,会引入稍微高一点的开销)
Navo的缺陷有:
- zero-knowledge被限制在单个prover的context(zero-knowledge属性不是必须的)
当前的情况为:
- IVC proof size为: O ( ∣ F ′ ∣ ) O(|F'|) O(∣F′∣)个group elements。
- 压缩的proof size为: O ( log ∣ F ′ ∣ ) O(\log |F'|) O(log∣F′∣)个group elements,但是其不可incremental。
因此,一个open question为:
- 保持Nova其它特性的同时,能否构建具有succinct proof的IVC方案?
Nova的一些优秀特性有:- smallest verifier circuit
- efficient prover等等
当前的一些进展以及规划为:
Nova:
- 为一种新的Incrementally Verifiable Computation(IVC)方案。
- 可递归证明形如 y = F l ( x ) y=F^l(x) y=Fl(x)的incremental computation执行的正确性,其中 F F F为(potentially non-deterministic)computation, x x x为输入, y y y为输出,且 l > 0 l>0 l>0。
不同于之前的IVC方案,Nova完全避免了(SN)ARK,引入了一种新的更简单、更弱、更能高效实现的原语——folding scheme:
- 可将 “检查2个instance之间某种关系的任务” reduce为 “检查单个instance”。