2025年GKR协议小记

GKR协议小记1 引言 前序博客 Delegating Computation Interactive Proofs for Muggles 学习笔记 sum check protocol in zkproof sum check protocol 深入研究 Goldwasser Kalai 和 Rothblum GKR 2008 年论文 Delegating

大家好,我是讯享网,很高兴认识大家。

1. 引言

前序博客:

  • Delegating Computation: Interactive Proofs for Muggles 学习笔记
  • sum-check protocol in zkproof
  • sum-check protocol深入研究

Goldwasser, Kalai和Rothblum (GKR) 2008年论文《Delegating Computation: Interactive Proofs for Muggles》中描述了一种强大的通用interactive proof protocol——GKR协议,该协议定位为circuit evaluation 上下文:

  • 已知某layered arithmetic circuit C C C,其depth为 d d d,size为 S ( n ) S(n) S(n),fan-in为 2 2 2。其中 n n n为input length, O ~ \tilde{O} O~中隐藏了 n n n中的polylogarithmic因子。
  • GKR协议允许Prover在保证正确的情况下以time poly ( S ( n ) ) \text{poly}(S(n)) poly(S(n))来evaluate C C C。
  • Verifier run time为 O ~ ( n + d log ⁡ S ( n ) ) \tilde{O}(n+d\log S(n)) O~(n+dlogS(n))。

因此,对于具有polynomial size和sublinear depth的电路,其Verifier的runtime为quasilinear in the input length——相比于整个电路size要小很多,因此,相比于Verifier直接在本地执行计算所需用时要节约大量时间。

而Cormode, Mitzenmacher, and Thaler(CMT)2012年论文《Practical Verified Computation with Streaming Interactive Proofs》中,将GKR协议中Prover的runtime,由 poly ( S ( n ) ) \text{poly}(S(n)) poly(S(n)) 降为 O ( S ( n ) log ⁡ S ( n ) ) O(S(n)\log S(n)) O(S(n)logS(n)),同时在https://github.com/pepper-project/pepper/tree/master/pepper/cmtgkr(C语言)中做了完整实现并benchmark。

而Thaler 2013年论文《Time-optimal interactive proofs for circuit evaluation》中,对(如任意并行数据计算中的)具有重复结构的电路,将GKR协议中Prover的runtime,由 O ( S ( n ) log ⁡ S ( n ) ) O(S(n)\log S(n)) O(S(n)logS(n)) 进一步降低。

本文:

  • 展示了对CMT协议的改进
  • 提供了一种理论简化方法,可降低Prover runtime、round复杂度,并与CMT相比将GKR协议中总的communication开销降低约33%。

2. 背景知识

2.1 Interactive Proof

为函数 f f f定义一个valid interactive proof协议:
在这里插入图片描述
讯享网

2.2 sum-check 协议

假设已知某基于有限域 F \mathbb{F} F的具有 v v v个变量的多变量多项式 g g g,sum-check协议的目的是计算:
H : = ∑ b 1 ∈ { 0 , 1 } ∑ b 2 ∈ { 0 , 1 } ⋯ ∑ b v ∈ { 0 , 1 } g ( b 1 , ⋯   , b v ) H:=\sum_{b_1\in\{0,1\}}\sum_{b_2\in\{0,1\}}\cdots \sum_{b_v\in\{0,1\}}g(b_1,\cdots,b_v) H:=∑b1​∈{ 0,1}​∑b2​∈{ 0,1}​⋯∑bv​∈{ 0,1}​g(b1​,⋯,bv​)

为执行该协议,Verifier需能对随机选择的 ( r 1 , ⋯   , r v ) ∈ F v (r_1,\cdots,r_v)\in\mathbb{F}^v (r1​,⋯,rv​)∈Fv进行evaluate g ( r 1 , ⋯   , r v ) g(r_1,\cdots,r_v) g(r1​,⋯,rv​)。

sum-check协议执行 v v v轮:

  • 第一轮:Prover P P P 发送多项式 g 1 ( X 1 ) g_1(X_1) g1​(X1​),并声称 g 1 ( X 1 ) = ∑ x 2 , ⋯   , x v ∈ { 0 , 1 } v − 1 g ( X 1 , x 2 , ⋯   , x v ) g_1(X_1)=\sum_{x_2,\cdots,x_v\in\{0,1\}^{v-1}}g(X_1,x_2,\cdots,x_v) g1​(X1​)=∑x2​,⋯,xv​∈{ 0,1}v−1​g(X1​,x2​,⋯,xv​)。由此可知:
    • 若 g 1 g_1 g1​正确,则有 H = g 1 ( 0 ) + g 1 ( 1 ) H=g_1(0)+g_1(1) H=g1​(0)+g1​(1)
    • 多项式 g 1 ( X 1 ) g_1(X_1) g1​(X1​)的degree为 deg ⁡ 1 ( g ) \deg_1(g) deg1​(g)——即 X 1 X_1 X1​变量在 g g g多项式中的degree。因此,可通过 deg ⁡ 1 ( g ) + 1 \deg_1(g)+1 deg1​(g)+1个field elements来唯一确定 g 1 g_1 g1​。
      • 实际实现时,Prover P P P 可发送 g g g在set { 0 , 1 , ⋯   , deg ⁡ 1 ( g ) } \{0,1,\cdots,\deg_1(g)\} { 0,1,⋯,deg1​(g)}的evaluations来唯一确定 g g g。
  • 在第 j > 1 j>1 j>1轮:
    • Verifier V V V 选择随机值 r j − 1 ∈ F r_{j-1}\in\mathbb{F} rj−1​∈F,并发送给Prover P P P。
    • Prover P P P 发送多项式 g j ( X j ) g_j(X_j) gj​(Xj​),并声称:
      g j ( X j ) = ∑ x j + 1 , ⋯   , x v ∈ { 0 , 1 } v − 1 g ( r 1 , r 2 , ⋯   , r j − 1 , X j , x j + 1 , ⋯   , x v )      ( 1 ) g_j(X_j)=\sum_{x_{j+1},\cdots,x_v\in\{0,1\}^{v-1}}g(r_1,r_2,\cdots,r_{j-1},X_j,x_{j+1},\cdots,x_v) \ \ \ \ (1) gj​(Xj​)=∑xj+1​,⋯,xv​∈{ 0,1}v−1​g(r1​,r2​,⋯,rj−1​,Xj​,xj+1​,⋯,xv​)    (1)
    • Verifier V V V:
      • 选择最新的2个多项式,检查 g j − 1 ( r j − 1 ) = g j ( 0 ) + g j ( 1 ) g_{j-1}(r_{j-1})=g_j(0)+g_j(1) gj−1​(rj−1​)=gj​(0)+gj​(1)是否成立,若不成立则拒绝。
      • 若多项式 g j g_j gj​的degree太高,也会拒绝:每个多项式 g j g_j gj​的degree应为 deg ⁡ j ( g ) \deg_j(g) degj​(g)——对应为多项式 g g g中 X j X_j Xj​变量的degree。
  • 在最后一轮:
    • Prover P P P 发送 g v ( X v ) g_v(X_v) gv​(Xv​),并声称 g v ( X v ) = g ( r 1 , r 2 , ⋯   , r v − 1 , X v ) g_v(X_v)=g(r_1,r_2,\cdots,r_{v-1},X_v) gv​(Xv​)=g(r1​,r2​,⋯,rv−1​,Xv​)。
    • Verifier V V V:
      • 直接检查 g v ( r v ) = g ( r 1 , r 2 , ⋯   , r v − 1 , r v ) g_v(r_v)=g(r_1,r_2,\cdots,r_{v-1},r_v) gv​(rv​)=g(r1​,r2​,⋯,rv−1​,rv​)是否成立(之前已假设Verifier V V V可evaluate g g g at ( r 1 , ⋯   , r v ) (r_1,\cdots,r_v) (r1​,⋯,rv​))。
      • 若本轮检查、以及之前所有轮检查 均成功的话,则Verifier V V V accept,从而信服 H = g 1 ( 0 ) + g 1 ( 1 ) H=g_1(0)+g_1(1) H=g1​(0)+g1​(1)。

从而有proposition:
在这里插入图片描述

2.3 Multilinear extension

对于任意域 F \mathbb{F} F,若 d d d-variate多项式 p : F d → F p:\mathbb{F}^d\rightarrow \mathbb{F} p:Fd→F的 d d d个输入变量的degree最多为1,则称 p p p是multilinear的。

已知函数 W : { 0 , 1 } d → { 0 , 1 } W:\{0,1\}^d\rightarrow \{0,1\} W:{ 0,1}d→{ 0,1}的domain为 d d d-dimensional Boolean hypercube,将基于域 F \mathbb{F} F的 W W W的multilinear extension表示为 W ~ \tilde{W} W~,对于在所有Boolean-valued input上的值均与 W W W一致,则 W ~ \tilde{W} W~为 W W W的唯一multilinear多项式 F d → F \mathbb{F}^d\rightarrow \mathbb{F} Fd→F。即对于所有的 x ∈ { 0 , 1 } d x\in\{0,1\}^d x∈{ 0,1}d,有 W ~ ( x ) = W ( x ) \tilde{W}(x)=W(x) W~(x)=W(x)。

2.4 GKR协议总览

GKR协议中,Prover P P P 和 Verifier V V V需对所关心的、代表特定函数的、基于有限域 F \mathbb{F} F的、fan-in 2算术电路 C C C达成一致—— C C C可能具有多个输出。

  • 假设电路 C C C为分层模式,即可将电路分解为多层,将连接相邻层的gate。
  • 假设电路 C C C的depth为 d d d,则层1~层 d d d对应为输入层,且层1对应为输出层。

GKR协议中:

  • Prover P P P 发送的第一个消息为:声称的电路 C C C的输出。
  • GKR协议逐层迭代,每个输入层对应一次迭代。
    • 第 i i i次迭代的目的是将 层 i i i中的gates values claim reduce为 层 i + 1 i+1 i+1中的gates values,从而Verifier V V V可安全地假设:若第1个claim为true,则第2个claim也为true。——具体通过对特定多项式运用标准的sum-check协议即可实现。(见下一章的Equation (2))
  • 事实上,GKR协议 以 “电路output gates values claim” 为起点,但Verifier V V V 无法在不evaluate该电路的情况下check该claim——Verifier V V V 想要避免该工作。
    因此,第一个迭代:运用sum-check protocol来将 “电路output gates values claim” reduce 为 “层2的gates values claim”(准确来说,是“对层2的gates values的multilinear extension evaluation的claim”)。
    以此类推,每次迭代Verifier V V V 都不想自己check claim,因此需再用另一个sum-check protocol来将 “层2的gates values claim”(准确来说,是“对层2的gates values的multilinear extension evaluation的claim”) reduce为 “层3的gates values claim”(准确来说,是“对层3的gates values的multilinear extension evaluation的claim”)等等。
    最终,Verifier V V V 剩下的为“电路的inputs claim”,从而Verifier V V V 可自己检查该claim。

2.5 附加说明

已知某layered arithmetic circuit C C C,其depth为 d d d,size为 S ( n ) S(n) S(n),fan-in为 2 2 2。

  • 令 S i S_i Si​表示电路circuit C C C在层 i i i的gates数量。层 i i i中gates的编号为 0 , ⋯   , S i − 1 0,\cdots,S_i-1 0,⋯,Si​−1。
  • 假设 S i S_i Si​为a power of 2,并令 S i = 2 s i S_i=2^{s_i} Si​=2si​
  • 为解释GKR协议中每个迭代是如何处理的,需额外引入多个函数,每个函数编码了该电路的特定信息。
    • a)层 i i i中gates的编号为 0 , ⋯   , S i − 1 0,\cdots,S_i-1 0,⋯,Si​−1。令函数 W i : { 0 , 1 } s i → F W_i:\{0,1\}^{s_i}\rightarrow \mathbb{F} Wi​:{ 0,1}si​→F以binary gate label为输入,输出为层 i i i中相应gate的value。GKR协议中使用了函数 W i W_i Wi​的multilinear extension W ~ i \tilde{W}_i W~i​。
    • b)GKR协议中还使用了“wiring predicate”概念来编码 “层 i + 1 i+1 i+1中与层 i i i中特定gate之间连接关系的wires pairs”。
      为此,定义了2个函数 a d d i , m u l t i : { 0 , 1 } s i + 2 s i + 1 → { 0 , 1 } add_i,mult_i:\{0,1\}^{s_i+2s_{i+1}}\rightarrow \{0,1\} addi​,multi​:{ 0,1}si​+2si+1​→{ 0,1},来共同构成层 i i i的wiring predicate。
      这2个函数已3个gate labels ( j 1 , j 2 , j 3 ) (j_1,j_2,j_3) (j1​,j2​,j3​)为输入,若“层 i i i中的gate j 1 j_1 j1​” 为 “层 i + 1 i+1 i+1中gate j 2 , j 3 j_2,j_3 j2​,j3​” 的addition(或multiplication),则返回1,否则返回0。
      令 a d d ~ i , m u l t ~ i \tilde{add}_i,\tilde{mult}_i add~i​,mult~i​分别为 a d d i , m u l t i add_i,mult_i addi​,multi​的multilinear extension。
    • c)令 β s i ( z , p ) \beta_{s_i}(z,p) βsi​​(z,p)表示为函数:
      β s i ( z , p ) = ∏ j = 1 s i ( ( 1 − z j ) ( 1 − p j ) , z j p j ) \beta_{s_i}(z,p)=\prod_{j=1}^{s_i}((1-z_j)(1-p_j),z_jp_j) βsi​​(z,p)=∏j=1si​​((1−zj​)(1−pj​),zj​pj​)
      很容易看出, β s i ( z , p ) \beta_{s_i}(z,p) βsi​​(z,p)为函数 B ( x , y ) : { 0 , 1 } s i × { 0 , 1 } s i → { 0 , 1 } B(x,y):\{0,1\}^{s_i}\times \{0,1\}^{s_i}\rightarrow \{0,1\} B(x,y):{ 0,1}si​×{ 0,1}si​→{ 0,1}的multilinear extension,当 x = y x=y x=y时,有 B ( x , y ) = 1 B(x,y)=1 B(x,y)=1,否则为0。

3. CMT的GKR协议细节

CMT论文中实现的GKR协议中利用了如下identity,即对于所有的 z ∈ F s i z\in\mathbb{F}^{s_i} z∈Fsi​,有:
W ~ i ( z ) = ∑ ( p , w 1 , w 2 ) ∈ { 0 , 1 } s i + 2 s i + 1 f ( i ) ( p , w 1 , w 2 )      ( 2 ) \tilde{W}_i(z)=\sum_{(p,w_1,w_2)\in\{0,1\}^{s_i+2s_{i+1}}}f^{(i)}(p,w_1,w_2) \ \ \ \ (2) W~i​(z)=∑(p,w1​,w2​)∈{ 0,1}si​+2si+1​​f(i)(p,w1​,w2​)    (2)
其中:
f ( i ) ( p , w 1 , w 2 ) = β s i ( z , p ) ⋅ ( a d d ~ i ( p , w 1 , w 2 ) ( W ~ i + 1 ( w 1 ) + W ~ i + 1 ( w 2 ) ) + m u l t ~ i ( p , w 1 , w 2 ) ( W ~ i + 1 ( w 1 ) ⋅ W ~ i + 1 ( w 2 ) ) ) f^{(i)}(p,w_1,w_2) =\beta_{s_i}(z,p)\cdot (\tilde{add}_i(p,w_1,w_2)(\tilde{W}_{i+1}(w_1)+\tilde{W}_{i+1}(w_2))+\tilde{mult}_i(p,w_1,w_2)(\tilde{W}_{i+1}(w_1)\cdot\tilde{W}_{i+1}(w_2))) f(i)(p,w1​,w2​)=βsi​​(z,p)⋅(add~i​(p,w1​,w2​)(W~i+1​(w1​)+W~i+1​(w2​))+mult~i​(p,w1​,w2​)(W~i+1​(w1​)⋅W~i+1​(w2​)))

CMT的第 i i i次迭代对多项式 f ( i ) f^{(i)} f(i)运用sum-check protocol。由于多项式 f ( i ) f^{(i)} f(i)有 s i + 2 s i + 1 s_i+2s_{i+1} si​+2si+1​个变量,相应的sum-check协议需要 s i + 2 s i + 1 s_i+2s_{i+1} si​+2si+1​轮。

CMT论文中展示了:

  • 在每轮,Prover time为 O ( S ) O(S) O(S)——假设 F \mathbb{F} F的每个加法和乘法运算为 O ( 1 ) O(1) O(1) time。

4. 本文对CMT的改进

本文对CMT的改进:

  • 对一个不同的、更简单的多项式运用sum-check协议。
  • 将round数由 s i + 2 s i + 1 s_i+2s_{i+1} si​+2si+1​ 降为 2 s i + 1 2s_{i+1} 2si+1​,从而将总的communication开销和Prover runtime降低了一个常量因子。
  • 此外,彻底移除了 β s i ( z , p ) \beta_{s_i}(z,p) βsi​​(z,p)多项式。

关键的改进之处为:

  • 派生了一个比上面Equation (2)更简单的 W ~ i ( z ) \tilde{W}_i(z) W~i​(z)——关键在于仅利用了multilinear extension W ~ i \tilde{W}_i W~i​ of W i W_i Wi​、 a d d ~ i \tilde{add}_i add~i​ of a d d i add_i addi​、 m u l t ~ i \tilde{mult}_i mult~i​ of m u l t i mult_i multi​。【关键点在于:若2个multilinear多项式agree at all Boolean inputs,则相应的2个formal多项式也必须相等。】
    在这里插入图片描述
    因此,改进之后,第 i i i次迭代不对多项式 f ( i ) f^{(i)} f(i)运用sum-check protocol,而是,对多项式 g ( i ) g^{(i)} g(i)运用sum-check protocol就足以:
  • 由于 g ( i ) g^{(i)} g(i)具有 2 s i + 1 2s_{i+1} 2si+1​个变量,因此需要 2 s i + 1 2s_{i+1} 2si+1​轮。
  • 每一轮prover的计算量,等同于,CMT中对 f ( i ) f^{(i)} f(i)运用sum-check协议的最后 2 s i + 1 2s_{i+1} 2si+1​轮的Prover计算量。

参考资料

[1] Justin Thaler论文 A Note on the GKR Protocol

Justin Thaler系列博客

  • SNARK Design
  • Rollup项目的SNARK景观
  • SNARK原理示例
  • SNARK性能及安全——Prover篇
  • SNARK性能及安全——Verifier篇
  • sum-check protocol in zkproof
  • sum-check protocol深入研究
  • Lasso、Jolt 以及 Lookup Singularity——Part 1
  • Lasso、Jolt 以及 Lookup Singularity——Part 2

lookup系列博客

  • PLOOKUP
  • PLOOKUP代码解析
  • Efficient polynomial commitment schemes for multiple points and polynomials学习笔记
  • PLONK + PLOOKUP
  • PlonKup: Reconciling PlonK with plookup
  • PLONK: permutations over lagrange-bases for oecumenical noninteractive arguments of knowledge 学习笔记
  • Plonk代码解析
  • RapidUp: Multi-Domain Permutation Protocol for Lookup Tables学习笔记
  • Lookup argument总览
  • Halo2 学习笔记——设计之Proving system之Lookup argument(1)
  • 多变量lookup argument
  • cq:fast lookup argument
  • Lookup Argument性能优化——Caulk
  • 2023年 ZK Hack以及ZK Summit 亮点记
  • Research Day 2023:Succinct ZKP最新进展
  • Lasso、Jolt 以及 Lookup Singularity——Part 1
  • Lasso、Jolt 以及 Lookup Singularity——Part 2
  • Lookup Singularity
小讯
上一篇 2025-01-19 22:53
下一篇 2025-02-10 11:57

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/50662.html