sum-check protocol

sumcheck是一个交互式证明协议,给定域F上的多元多项式 g ( x 1 , . . . , x v ) g(x_1,...,x_v) g(x1,...,xv),证明者Prover可以向验证者Verifier证明该多项式 g g g的遍历求和值等于公开值 H H H,即
H = ∑ b 1 , b 2 , . . . , b v ∈ { 0 , 1 } v g ( b 1 , b 2 , . . . , b v ) H= \sum_{b_1,b_2,...,b_v \in \{0,1\}^v}g(b_1,b_2,...,b_v) H=b1,b2,...,bv{0,1}vg(b1,b2,...,bv)
法一: Verifier可以直接通过上述等式计算验证,但直接计算需要 2 v 2^v 2v次求和

法二:Verifier将计算转移到计算能力更强的Prover,即本文所述的sum-check协议,通过sum-check协议,Prover使得Verifier相信其遍历求和值等于 H H H

sumcheck

sumcheck一共需要进行 v v v轮交互,其过程如下:

第1轮:
  • Prover:向Verifier发送一个单变量多项式( univariate polynomial)
    g 1 ( X 1 ) = ∑ b 2 , . . . , b v ∈ 0 , 1 v g ( X 1 , b 2 , . . . , b v ) g_1(X_1)=\sum_{b_2,...,b_v \in{0,1}^v}g(X_1,b_2,...,b_v) g1(X1)=b2,...,bv0,1vg(X1,b2,...,bv)

  • Verifier: 检查 H = g 1 ( 0 ) + g 1 ( 1 ) H=g_1(0) + g_1(1) H=g1(0)+g1(1)是否成立,如果成立则随机选取 r 1 ∈ F r_1 \in F r1F发送给Prover

第j轮:
  • Prover:向Verifier发送一个单变量多项式
    g j ( X j ) = ∑ b j + 1 , . . . , b v ∈ { 0 , 1 } v g ( r 1 , . . . , r j − 1 , X j , b j + 1 , . . . , b v ) g_j(X_j)=\sum_{b_{j+1},...,b_v \in \{0,1\}^v}g(r_1,...,r_{j-1},X_j,b_{j+1},...,b_v) gj(Xj)=bj+1,...,bv{0,1}vg(r1,...,rj1,Xj,bj+1,...,bv)

  • Verifier: 检查 g j − 1 ( r j − 1 ) = g j ( 0 ) + g j ( 1 ) g_{j-1}(r_{j-1})=g_j(0) + g_j(1) gj1(rj1)=gj(0)+gj(1)是否成立,如果成立则随机选取 r j ∈ F r_j \in F rjF发送给Prover

第v轮:
  • Prover:向Verifier发送一个单变量多项式
    g v ( X v ) = g ( r 1 , r 2 . . . , r v − 1 , X v ) g_v(X_v)=g(r_1,r_2...,r_{v-1},Xv) gv(Xv)=g(r1,r2...,rv1,Xv)

  • Verifier: 检查 g v − 1 ( r v − 1 ) = g v ( 0 ) + g v ( 1 ) g_{v-1}(r_{v-1})=g_v(0) + g_v(1) gv1(rv1)=gv(0)+gv(1)是否成立,如果成立则计算 g ( r 1 , r 2 , . . . , r v ) g(r_1,r_2,...,r_v) g(r1,r2,...,rv) ,并验证 g ( r 1 , r 2 , . . . , r v ) = g v ( r v ) g(r_1,r_2,...,r_v)= g_v(r_v) g(r1,r2,...,rv)=gv(rv)是否成立

例如 g ( X 1 , X 2 , X 3 ) = 2 X 1 3 + X 1 X 3 + X 2 X 3 g(X_1,X_2,X_3)= 2X_1^3 + X_1X_3+X_2X_3 g(X1,X2,X3)=2X13+X1X3+X2X3 ,其遍历求和值 H = 12 H =12 H=12
第1轮:
  • Prover:向Verifier发送一个单变量多项式( univariate polynomial)
    g 1 ( X 1 ) = 8 X 1 3 + 2 X 1 + 1 g_1(X_1)=8X_1^3+2X_1+1 g1(X1)=8X13+2X1+1

  • Verifier: 验证 H = g 1 ( 0 ) + g 1 ( 1 ) = 12 H=g_1(0) + g_1(1) = 12 H=g1(0)+g1(1)=12,并随机选取 r 1 = 2 r_1 =2 r1=2发送给Prover

第2轮:
  • Prover:向Verifier发送一个单变量多项式
    g 2 ( X 2 ) = 34 + X 2 g_2(X_2)=34 + X_2 g2(X2)=34+X2

  • Verifier: 验证 g 1 ( 2 ) = g 2 ( 0 ) + g 2 ( 1 ) = 69 g_{1}(2)=g_2(0) + g_2(1) = 69 g1(2)=g2(0)+g2(1)=69,并随机选取 r 2 = 3 r_2 =3 r2=3发送给Prover

第3轮:
  • Prover:向Verifier发送一个单变量多项式
    g 3 ( X 3 ) = 16 + 5 X 3 g_3(X_3)=16+5X_3 g3(X3)=16+5X3

  • Verifier: 验证 g 2 ( r 2 ) = g 3 ( 0 ) + g 3 ( 1 ) = 37 g_{2}(r_{2})=g_3(0) + g_3(1)= 37 g2(r2)=g3(0)+g3(1)=37,并随机选取 r 3 = 6 r_3 =6 r3=6,计算并验证 g ( r 1 , r 2 , . . . , r v ) = 46 = g 3 ( 6 ) g(r_1,r_2,...,r_v) = 46 = g_3(6) g(r1,r2,...,rv)=46=g3(6)

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值