大家好,欢迎来到IT知识分享网。
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−1g(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。
- 实际实现时,Prover P P P 可发送 g g g在set { 0 , 1 , ⋯ , deg 1 ( g ) } \{0,1,\cdots,\deg_1(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−1g(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),zjpj)
很容易看出, β 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。
- 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:{
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+1f(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
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/143751.html