Skip to article frontmatterSkip to article content

Zeromorph 系列协议复杂度分析

Evaluation 证明协议(朴素版)复杂度分析

协议描述文档:Evaluation 证明协议(朴素版)

下面我们先给出一个简单朴素的协议实现,方便理解。

公共输入

Witness

Round 1

Prover 发送余数多项式的承诺

f~(X0,X1,,Xn1)v=k=0n1(Xkuk)q~k(X0,X1,,Xk1)\tilde{f}(X_0,X_1,\ldots, X_{n-1}) - v = \sum_{k=0}^{n-1} (X_k-u_k) \cdot \tilde{q}_k(X_0,X_1,\ldots, X_{k-1})

Prover 计算,πk=cm(XDmax2k+1q^k),0k<n\pi_k=\mathsf{cm}(X^{D_{max}-2^k+1}\cdot \hat{q}_k), \quad 0\leq k<n ,作为 deg(q^k)<2k\deg(\hat{q}_k)<2^k 的 Degree Bound 证明 ,一并发送给 Verifier

Prover:

  • 直接用 Zeromorph 论文 Appendix A.2 的算法能计算出 q~k\tilde{q}_k 在 Hypercube 上的值,即可以得到 QkQ_k 的系数,根据论文的结论,整个算法复杂度为 (2n+13) Fadd(2^{n+1} - 3) ~ \mathbb{F}_{\mathsf{add}} 以及 (2n2) Fmul(2^{n} - 2) ~ \mathbb{F}_{\mathsf{mul}} 。这里不计入加法的复杂度,因此计算出 q^k=[[q~k]]k,0k<n\hat{q}_k=[[\tilde{q}_k]]_k, \quad 0 \leq k < n 的复杂度为 (2n2) Fmul(2^{n} - 2) ~ \mathbb{F}_{\mathsf{mul}}
  • 计算 cm(q^0),cm(q^1),,cm(q^n1)\mathsf{cm}(\hat{q}_0), \mathsf{cm}(\hat{q}_1), \ldots, \mathsf{cm}(\hat{q}_{n-1}) ,这里涉及 MSM 算法,对于每一个 cm(q^k)\mathsf{cm}(\hat{q}_{k}) ,多项式 qkq_{k} 的系数有 2k2^k 个,复杂度为 msm(2k,G1)\mathsf{msm}(2^k,\mathbb{G}_1) ,因此这一步的总复杂度为
    k=0n1msm(2k,G1)\sum_{k=0}^{n-1} \mathsf{msm}(2^k,\mathbb{G}_1)
  • 计算 πk=cm(XDmax2k+1q^k),0k<n\pi_k=\mathsf{cm}(X^{D_{max}-2^k+1}\cdot \hat{q}_k), \quad 0\leq k<n
    • 计算 XDmax2k+1q^kX^{D_{max}-2^k+1}\cdot \hat{q}_k ,这里涉及多项式的乘法,deg(q^k)=2k1\deg(\hat{q}_k) = 2^k - 1 ,复杂度记为 polymul(Dmax2k+1,2k1)\mathsf{polymul}(D_{max} - 2^k + 1, 2^k - 1) ,因此总复杂度为
      k=0n1polymul(Dmax2k+1,2k1)\sum_{k=0}^{n-1} \mathsf{polymul}(D_{max} - 2^k + 1, 2^k - 1)
    • 计算 πk=cm(XDmax2k+1q^k),0k<n\pi_k=\mathsf{cm}(X^{D_{max}-2^k+1}\cdot \hat{q}_k), \quad 0\leq k<n ,复杂度为
      k=0n1msm(Dmax+1,G1)=n msm(Dmax+1,G1)\sum_{k=0}^{n-1} \mathsf{msm}(D_{max} + 1,\mathbb{G}_1) = n ~ \mathsf{msm}(D_{max} + 1,\mathbb{G}_1)
      因此这一步的总复杂度为
      k=0n1polymul(Dmax2k+1,2k1)+n msm(Dmax+1,G1)\sum_{k=0}^{n-1} \mathsf{polymul}(D_{max} - 2^k + 1, 2^k - 1) + n ~ \mathsf{msm}(D_{max} + 1,\mathbb{G}_1)

因此这一轮的总复杂度为

>(2n2) Fmul+k=0n1msm(2k,G1)+k=0n1polymul(Dmax2k+1,2k1)+n msm(Dmax+1,G1)>> (2^{n} - 2) ~ \mathbb{F}_{\mathsf{mul}} + \sum_{k=0}^{n-1} \mathsf{msm}(2^k,\mathbb{G}_1) + \sum_{k=0}^{n-1} \mathsf{polymul}(D_{max} - 2^k + 1, 2^k - 1) + n ~ \mathsf{msm}(D_{max} + 1,\mathbb{G}_1) >

💡 这里计算多项式的乘法,XDmax2k+1q^kX^{D_{max}-2^k+1}\cdot \hat{q}_k 应该可以优化,直接挪动 q^k\hat{q}_k 的系数就可以了。

Round 2

  1. Verifier 发送随机数 ζFp\zeta\in \mathbb{F}_p^*

  2. Prover 计算辅助多项式 r(X)r(X) 与商多项式 h(X)h(X),并发送 cm(h)\mathsf{cm}(h)

r(X)=[[f~]]nvΦn(ζ)k=0n1(ζ2kΦnk1(ζ2k+1)ukΦnk(ζ2k))q^k(X)r(X) = [[\tilde{f}]]_{n} - v\cdot \Phi_{n}(\zeta) - \sum_{k=0}^{n-1} \Big(\zeta^{2^k}\cdot \Phi_{n-k-1}(\zeta^{2^{k+1}}) - u_k\cdot \Phi_{n-k}(\zeta^{2^{k}})\Big)\cdot \hat{q}_k(X)
h(X)=r(X)Xζh(X) = \frac{r(X)}{X-\zeta}

Prover:

  • 先根据随机数 ζ\zeta 计算出 ζ\zeta 的幂次,即 ζ2,,ζ2n\zeta^2, \ldots, \zeta^{2^{n}} ,涉及 nn 次有限域的乘法,复杂度为 n Fmuln ~ \mathbb{F}_{\mathsf{mul}}

  • 计算 r(X)r(X)

    • 计算 Φn(ζ)\Phi_n(\zeta),
      Φn(ζ)=i=0n1ζ2i\Phi_n(\zeta) = \sum_{i=0}^{n-1} \zeta^{2^i}

    这里可以直接用前面计算出的 ζ\zeta 的幂次直接进行累加,涉及到的是有限域的加法,因此不做记录。

    • 计算 vΦn(ζ)v \cdot \Phi_n(\zeta) ,涉及一次有限域乘法,复杂度为 Fmul\mathbb{F}_{\mathsf{mul}}
    • 计算 Φnk1(ζ2k+1)\Phi_{n-k-1}(\zeta^{2^{k+1}}) ,由于
      Φnk1(X2k+1)=1+X2k+1+X22k+1++X(2nk11)2k+1\Phi_{n-k-1}(X^{2^{k+1}}) = 1 + X^{2^{k + 1}} + X^{2 \cdot 2^{k + 1}} + \ldots + X^{(2^{n - k - 1} - 1) \cdot 2^{k + 1}}
      因此
      Φnk1(ζ2k+1)=1+ζ2k+1+ζ22k+1++ζ(2nk11)2k+1\Phi_{n-k-1}(\zeta^{2^{k+1}}) = 1 + \zeta^{2^{k + 1}} + \zeta^{2 \cdot 2^{k + 1}} + \ldots + \zeta^{(2^{n - k - 1} - 1) \cdot 2^{k + 1}}
      这里依然可以通过有限域的加法直接计算得到,同理对于计算 Φnk(ζ2k)\Phi_{n-k}(\zeta^{2^{k}}) 也是一样的,通过有限域的加法得到。
    • 计算 ζ2kΦnk1(ζ2k+1)ukΦnk(ζ2k)\zeta^{2^k}\cdot \Phi_{n-k-1}(\zeta^{2^{k+1}}) - u_k\cdot \Phi_{n-k}(\zeta^{2^{k}}) 这里就涉及两次有限域的乘法,复杂度为 2 Fmul2 ~ \mathbb{F}_{\mathsf{mul}}kk 次累加就为 2n Fmul2n ~ \mathbb{F}_{\mathsf{mul}}
    • 计算 (ζ2kΦnk1(ζ2k+1)ukΦnk(ζ2k))q^k(X)\Big(\zeta^{2^k}\cdot \Phi_{n-k-1}(\zeta^{2^{k+1}}) - u_k\cdot \Phi_{n-k}(\zeta^{2^{k}})\Big)\cdot \hat{q}_k(X) ,涉及多项式的乘法,复杂度为 polymul(0,2k1)\mathsf{polymul}(0, 2^k - 1)kk 经过累加之后,总复杂度为
      k=0n1polymul(0,2k1)\sum_{k = 0}^{n - 1} \mathsf{polymul}(0, 2^k - 1)
      因此计算 r(X)r(X) 的总复杂度为
    >Fmul+2n Fmul+k=0n1polymul(0,2k1)=(2n+1) Fmul+k=0n1polymul(0,2k1)>> \mathbb{F}_{\mathsf{mul}} + 2n ~ \mathbb{F}_{\mathsf{mul}} + \sum_{k = 0}^{n - 1} \mathsf{polymul}(0, 2^k - 1) = (2n + 1) ~ \mathbb{F}_{\mathsf{mul}} + \sum_{k = 0}^{n - 1} \mathsf{polymul}(0, 2^k - 1) >
  • 计算 cm(h)\mathsf{cm}(h) ,先计算 h(X)h(X) ,其可以用线性除法的方式得到,复杂度与 r(X)r(X) 的次数相关,由于 deg(r)=2n11\deg(r) = 2^{n - 1} - 1 ,因此这里多项式除法的复杂度为 (2n11) Fmul(2^{n - 1} - 1) ~ \mathbb{F}_{\mathsf{mul}} ,接着计算承诺,其复杂度为 msm(2n11,G1)\mathsf{msm}(2^{n - 1} - 1, \mathbb{G}_1) 。 这里总复杂度为

    (2n11) Fmul+msm(2n11,G1)(2^{n - 1} - 1) ~ \mathbb{F}_{\mathsf{mul}} + \mathsf{msm}(2^{n - 1} - 1, \mathbb{G}_1)

这一轮的总复杂度为:

(3n+2n1) Fmul+k=0n1polymul(0,2k1)+msm(2n11,G1)(3n + 2^{n - 1}) ~ \mathbb{F}_{\mathsf{mul}} + \sum_{k = 0}^{n - 1} \mathsf{polymul}(0, 2^k - 1) + \mathsf{msm}(2^{n - 1} - 1, \mathbb{G}_1)

Verification

Verifier 验证下面的等式

cm(r)=cm([[f~]]n)cm(vΦn(ζ))i=0n1(ζ2iΦni1(ζ2i+1)uiΦni(ζ2i))cm(q^i)\mathsf{cm}(r) = \mathsf{cm}([[\tilde{f}]]_{n}) - \mathsf{cm}(v\cdot \Phi_{n}(\zeta)) - \sum_{i=0}^{n-1} \Big(\zeta^{2^i}\cdot \Phi_{n-i-1}(\zeta^{2^{i+1}}) - u_i\cdot \Phi_{n-i}(\zeta^{2^{i}})\Big)\cdot \mathsf{cm}(\hat{q}_i)
e(cm(r), [1]2)=e(cm(h),[τ]2ζ[1]2)e(\mathsf{cm}(r), \ [1]_2) = e(\mathsf{cm}(h), [\tau]_2 - \zeta\cdot [1]_2)
e(cm(q^i),[τDmax2i+1]2)=e(πi,[1]2),0i<ne(\mathsf{cm}(\hat{q}_i), [\tau^{D_{max}-2^i+1}]_2) = e(\pi_i, [1]_2), \quad 0\leq i<n

Verifier:

  • 构造 cm(r)\mathsf{cm}(r) 的承诺

    • 先根据随机数 ζ\zeta 计算出 ζ\zeta 的幂次,即 ζ2,,ζ2n\zeta^2, \ldots, \zeta^{2^{n}} ,涉及 nn 次有限域的乘法,复杂度为 n Fmuln ~ \mathbb{F}_{\mathsf{mul}}
    • cm(vΦn(ζ))\mathsf{cm}(v\cdot \Phi_{n}(\zeta)) ,复杂度为 Fmul+EccMulG1\mathbb{F}_{\mathsf{mul}} + \mathsf{EccMul}^{\mathbb{G}_1}
    • 计算 i=0n1(ζ2iΦni1(ζ2i+1)uiΦni(ζ2i))cm(q^i)\sum_{i=0}^{n-1} \Big(\zeta^{2^i}\cdot \Phi_{n-i-1}(\zeta^{2^{i+1}}) - u_i\cdot \Phi_{n-i}(\zeta^{2^{i}})\Big)\cdot \mathsf{cm}(\hat{q}_i) ,复杂度为
      n(2 Fmul+EccMulG1)+(n1) EccAddG1=2n Fmul+n EccMulG1+(n1) EccAddG1n( 2 ~ \mathbb{F}_{\mathsf{mul}} + \mathsf{EccMul}^{\mathbb{G}_1}) + (n - 1) ~ \mathsf{EccAdd}^{\mathbb{G}_1} = 2n ~ \mathbb{F}_{\mathsf{mul}} + n ~ \mathsf{EccMul}^{\mathbb{G}_1} + (n - 1) ~ \mathsf{EccAdd}^{\mathbb{G}_1}
    • 计算 cm([[f~]]n)cm(vΦn(ζ))i=0n1(ζ2iΦni1(ζ2i+1)uiΦni(ζ2i))cm(q^i)\mathsf{cm}([[\tilde{f}]]_{n}) - \mathsf{cm}(v\cdot \Phi_{n}(\zeta)) - \sum_{i=0}^{n-1} \Big(\zeta^{2^i}\cdot \Phi_{n-i-1}(\zeta^{2^{i+1}}) - u_i\cdot \Phi_{n-i}(\zeta^{2^{i}})\Big)\cdot \mathsf{cm}(\hat{q}_i) ,就是三个椭圆曲线上的点相加,复杂度为 2 EccAddG12 ~ \mathsf{EccAdd}^{\mathbb{G}_1}

    构造 rr 的承诺的总复杂度为

    (3n+1) Fmul+(n+1) EccMulG1+(n+1) EccAddG1(3n + 1)~ \mathbb{F}_{\mathsf{mul}} + (n + 1) ~ \mathsf{EccMul}^{\mathbb{G}_1} + (n + 1) ~ \mathsf{EccAdd}^{\mathbb{G}_1}
  • 验证 r(ζ)=0r(\zeta) = 0

    • 计算 [τ]2ζ[1]2[\tau]_2 - \zeta\cdot [1]_2 ,复杂度为 EccMulG2+EccAddG2\mathsf{EccMul}^{\mathbb{G}_2} + \mathsf{EccAdd}^{\mathbb{G}_2}
    • 计算 e(cm(r), [1]2)e(\mathsf{cm}(r), \ [1]_2)e(cm(h),[τ]2ζ[1]2)e(\mathsf{cm}(h), [\tau]_2 - \zeta\cdot [1]_2) ,涉及两个椭圆曲线上的配对操作,记为 2 P2~P

    这一步的总复杂度为

    EccMulG2+EccAddG2+2 P\mathsf{EccMul}^{\mathbb{G}_2} + \mathsf{EccAdd}^{\mathbb{G}_2} + 2~P
  • 验证 (π0,π1,,πn1)(\pi_0, \pi_1, \ldots, \pi_{n-1}) 是否正确,

    e(cm(q^i),[τDmax2i+1]2)=e(πi,[1]2),0i<ne(\mathsf{cm}(\hat{q}_i), [\tau^{D_{max}-2^i+1}]_2) = e(\pi_i, [1]_2), \quad 0\leq i<n

    这里每一次涉及的复杂度为 2 P2 ~ P ,因此总复杂度为 2n P2n ~ P

这一轮的总复杂度为

>(3n+1) Fmul+(n+1) EccMulG1+(n+1) EccAddG1+EccMulG2+EccAddG2+(2n+2) P>> (3n + 1)~ \mathbb{F}_{\mathsf{mul}} + (n + 1) ~ \mathsf{EccMul}^{\mathbb{G}_1} + (n + 1) ~ \mathsf{EccAdd}^{\mathbb{G}_1} + \mathsf{EccMul}^{\mathbb{G}_2} + \mathsf{EccAdd}^{\mathbb{G}_2} + (2n + 2)~P >

汇总

Prover 计算复杂度:

>>(2n2) Fmul+k=0n1msm(2k,G1)+k=0n1polymul(Dmax2k+1,2k1)+n msm(Dmax+1,G1)>+(3n+2n1) Fmul+k=0n1polymul(0,2k1)+msm(2n11,G1)>=(32n1+3n2) Fmul+k=0n1polymul(Dmax2k+1,2k1)+k=0n1polymul(0,2k1)>+k=0n1msm(2k,G1)+n msm(Dmax+1,G1)+msm(2n11,G1)>>> \begin{aligned} > & (2^{n} - 2) ~ \mathbb{F}_{\mathsf{mul}} + \sum_{k=0}^{n-1} \mathsf{msm}(2^k,\mathbb{G}_1) + \sum_{k=0}^{n-1} \mathsf{polymul}(D_{max} - 2^k + 1, 2^k - 1) + n ~ \mathsf{msm}(D_{max} + 1,\mathbb{G}_1) \\ > & + (3n + 2^{n - 1}) ~ \mathbb{F}_{\mathsf{mul}} + \sum_{k = 0}^{n - 1} \mathsf{polymul}(0, 2^k - 1) + \mathsf{msm}(2^{n - 1} - 1, \mathbb{G}_1) \\ > = & ( 3 \cdot 2^{n - 1} + 3n - 2) ~ \mathbb{F}_{\mathsf{mul}} + \sum_{k=0}^{n-1} \mathsf{polymul}(D_{max} - 2^k + 1, 2^k - 1) + \sum_{k = 0}^{n - 1} \mathsf{polymul}(0, 2^k - 1) \\ > & + \sum_{k=0}^{n-1} \mathsf{msm}(2^k,\mathbb{G}_1) + n ~ \mathsf{msm}(D_{max} + 1,\mathbb{G}_1) + \mathsf{msm}(2^{n - 1} - 1, \mathbb{G}_1) > \end{aligned} >

Verifier 计算复杂度:

>(3n+1) Fmul+(n+1) EccMulG1+(n+1) EccAddG1+EccMulG2+EccAddG2+(2n+2) P>> (3n + 1)~ \mathbb{F}_{\mathsf{mul}} + (n + 1) ~ \mathsf{EccMul}^{\mathbb{G}_1} + (n + 1) ~ \mathsf{EccAdd}^{\mathbb{G}_1} + \mathsf{EccMul}^{\mathbb{G}_2} + \mathsf{EccAdd}^{\mathbb{G}_2} + (2n + 2)~P >

证明大小:

Prover 发送的证明有

>(cm(q^0),cm(q^1),,cm(q^n1),π0,,πn1,cm(h))>> (\mathsf{cm}(\hat{q}_0), \mathsf{cm}(\hat{q}_1), \ldots, \mathsf{cm}(\hat{q}_{n-1}), \pi_0, \ldots, \pi_{n - 1}, \mathsf{cm}(h)) >

总计为 (2n+1)G1(2n + 1) \mathbb{G}_1 .

代入多项式相乘的复杂度 polymul(a,b)=(a+1)(b+1) Fmul=(ab+a+b+1) Fmul\mathsf{polymul}(a, b) = (a + 1) (b + 1) ~ \mathbb{F}_{\mathsf{mul}} = (ab + a + b + 1) ~ \mathbb{F}_{\mathsf{mul}} ,得到

Prover 复杂度:

(32n1+3n2) Fmul+k=0n1polymul(Dmax2k+1,2k1)+k=0n1polymul(0,2k1)+k=0n1msm(2k,G1)+n msm(Dmax+1,G1)+msm(2n11,G1)=(32N+3n2) Fmul+((Dmax+2)(N1)13(N21)) Fmul+(N1) Fmul+k=0n1msm(2k,G1)+n msm(Dmax+1,G1)+msm(2n11,G1)=((Dmax+92)N13N2+3nDmax143) Fmul+k=0n1msm(2k,G1)+n msm(Dmax+1,G1)+msm(2n11,G1)\begin{align} & ( 3 \cdot 2^{n - 1} + 3n - 2) ~ \mathbb{F}_{\mathsf{mul}} + \sum_{k=0}^{n-1} \mathsf{polymul}(D_{max} - 2^k + 1, 2^k - 1) + \sum_{k = 0}^{n - 1} \mathsf{polymul}(0, 2^k - 1) \\ & + \sum_{k=0}^{n-1} \mathsf{msm}(2^k,\mathbb{G}_1) + n ~ \mathsf{msm}(D_{max} + 1,\mathbb{G}_1) + \mathsf{msm}(2^{n - 1} - 1, \mathbb{G}_1) \\ = & ( \frac{3}{2} N + 3n - 2) ~ \mathbb{F}_{\mathsf{mul}} + ((D_{max} + 2)(N - 1) - \frac{1}{3}(N^2 - 1))~ \mathbb{F}_{\mathsf{mul}} + (N - 1) ~ \mathbb{F}_{\mathsf{mul}}\\ & + \sum_{k=0}^{n-1} \mathsf{msm}(2^k,\mathbb{G}_1) + n ~ \mathsf{msm}(D_{max} + 1,\mathbb{G}_1) + \mathsf{msm}(2^{n - 1} - 1, \mathbb{G}_1) \\ = & ((D_{max} + \frac{9}{2}) N - \frac{1}{3} N^2 + 3n - D_{max} - \frac{14}{3}) ~ \mathbb{F}_{\mathsf{mul}} \\ & + \sum_{k=0}^{n-1} \mathsf{msm}(2^k,\mathbb{G}_1) + n ~ \mathsf{msm}(D_{max} + 1,\mathbb{G}_1) + \mathsf{msm}(2^{n - 1} - 1, \mathbb{G}_1) \\ \end{align}

Verifier 复杂度:

(3n+1) Fmul+(n+1) EccMulG1+(n+1) EccAddG1+EccMulG2+EccAddG2+(2n+2) P(3n + 1)~ \mathbb{F}_{\mathsf{mul}} + (n + 1) ~ \mathsf{EccMul}^{\mathbb{G}_1} + (n + 1) ~ \mathsf{EccAdd}^{\mathbb{G}_1} + \mathsf{EccMul}^{\mathbb{G}_2} + \mathsf{EccAdd}^{\mathbb{G}_2} + (2n + 2)~P

Proof size:

(2n+1)G1(2n + 1) \mathbb{G}_1

Evaluation 证明协议(优化版-Degree Bound 聚合)

协议描述文档:Evaluation 证明协议(优化版)

公共输入

Witness

Round 1

第一轮:Prover 发送余数多项式的承诺

f~(X0,X1,,Xn1)v=i=0n1(Xkuk)qi(X0,X1,,Xk1)\tilde{f}(X_0,X_1,\ldots, X_{n-1}) - v = \sum_{i=0}^{n-1} (X_k-u_k) \cdot q_i(X_0,X_1,\ldots, X_{k-1})

Prover:

  • 直接用 Zeromorph 论文 Appendix A.2 的算法能计算出 qiq_i 在 Hypercube 上的值,即可以得到 QiQ_i 的系数,根据论文的结论,整个算法复杂度为 (2n+13) Fadd(2^{n+1} - 3) ~ \mathbb{F}_{\mathsf{add}} 以及 (2n2) Fmul(2^{n} - 2) ~ \mathbb{F}_{\mathsf{mul}} 。这里不计入加法的复杂度,因此计算出 Qi=[[qi]]i,0i<nQ_i=[[q_i]]_i, \quad 0 \leq i < n 的复杂度为 (2n2) Fmul(2^{n} - 2) ~ \mathbb{F}_{\mathsf{mul}}
  • 计算 cm(q0),cm(q1),,cm(qn1)\mathsf{cm}(q_0), \mathsf{cm}(q_1), \ldots, \mathsf{cm}(q_{n-1}) ,这里涉及 MSM 算法,对于每一个 cm(qk)\mathsf{cm}(q_{k}) ,多项式 qkq_{k} 的系数有 2k2^k 个,复杂度为 msm(2k,G1)\mathsf{msm}(2^k,\mathbb{G}_1) ,因此这一步的总复杂度为
>k=0n1msm(2k,G1)>> \sum_{k=0}^{n-1} \mathsf{msm}(2^k,\mathbb{G}_1) >

因此这一轮的总复杂度为

>(2n2) Fmul+k=0n1msm(2k,G1)>> (2^{n} - 2) ~ \mathbb{F}_{\mathsf{mul}} + \sum_{k=0}^{n-1} \mathsf{msm}(2^k,\mathbb{G}_1) >

Round 2

  1. Verifier 发送随机数 βFp\beta\in \mathbb{F}_p^* 用来聚合多个 Degree Bound 证明

  2. Prover 构造 qˉ(X)\bar{q}(X) 作为聚合商多项式 {q^i(X)}\{\hat{q}_i(X)\} 的多项式,并发送其承诺 cm(qˉ)\mathsf{cm}(\bar{q})

qˉ(X)=i=0n1βiX2n2iq^i(X)\bar{q}(X) = \sum_{i=0}^{n-1} \beta^i \cdot X^{2^n-2^i}\hat{q}_i(X)

Prover:

  • 可以先由随机数 β\beta 计算得到 β2,,βn1\beta^2, \ldots, \beta^{n - 1} ,复杂度为 (n2) Fmul(n - 2) ~ \mathbb{F}_{\mathsf{mul}}
  • 计算 βiX2n2iq^i(X)\beta^i \cdot X^{2^n-2^i}\hat{q}_i(X) ,为多项式的乘法,复杂度为 polymul(2n2i,2i1)+polymul(0,2n1)\mathsf{polymul}(2^n - 2^i, 2^i - 1) + \mathsf{polymul}(0, 2^n - 1) ,因此求和相加的复杂度为
    i=0n1(polymul(2n2i,2i1)+polymul(0,2n1))=n polymul(0,2n1)+i=0n1polymul(2n2i,2i1)\begin{aligned} & \sum_{i = 0}^{n - 1} \big( \mathsf{polymul}(2^n - 2^i, 2^i - 1) + \mathsf{polymul}(0, 2^n - 1) \big) \\ = & n ~ \mathsf{polymul}(0, 2^n - 1) + \sum_{i = 0}^{n - 1} \mathsf{polymul}(2^n - 2^i, 2^i - 1) \end{aligned}
  • 计算 cm(qˉ)\mathsf{cm}(\bar{q}) ,复杂度为 msm(2n,G1)\mathsf{msm}(2^n , \mathbb{G}_1)

这一轮的总复杂度为

>(n2) Fmul+n polymul(0,2n1)+i=0n1polymul(2n2i,2i1)+msm(2n,G1)>> (n - 2) ~ \mathbb{F}_{\mathsf{mul}} + n ~ \mathsf{polymul}(0, 2^n - 1) + \sum_{i = 0}^{n - 1} \mathsf{polymul}(2^n - 2^i, 2^i - 1) + \mathsf{msm}(2^n , \mathbb{G}_1) >

Round 3

  1. Verifier 发送随机数 ζFp\zeta\in \mathbb{F}_p^* ,用来挑战多项式在 X=ζX=\zeta 处的取值

  2. Prover 计算 h0(X)h_0(X)h1(X)h_1(X)

r(X)=f^(X)vΦn(ζ)i=0n1(ζ2iΦni1(ζ2i+1)uiΦni(ζ2i))q^i(X)r(X) = \hat{f}(X) - v\cdot \Phi_{n}(\zeta) - \sum_{i=0}^{n-1} \Big(\zeta^{2^i}\cdot \Phi_{n-i-1}(\zeta^{2^{i+1}}) - u_i\cdot \Phi_{n-i}(\zeta^{2^{i}})\Big)\cdot\hat{q}_i(X)
s(X)=qˉ(X)k=0n1βkζ2n2kq^k(X)s(X) = \bar{q}(X) - \sum_{k=0}^{n-1} \beta^k \cdot \zeta^{2^n-2^k}\cdot \hat{q}_k(X)
h0(X)=r(X)Xζ,h1(X)=s(X)Xζh_0(X) = \frac{r(X)}{X-\zeta}, \qquad h_1(X) = \frac{s(X)}{X-\zeta}

Prover:

  • 先根据随机数 ζ\zeta 计算出 ζ\zeta 的幂次,即 ζ2,,ζ2n\zeta^2, \ldots, \zeta^{2^{n}} ,涉及 nn 次有限域的乘法,复杂度为 n Fmuln ~ \mathbb{F}_{\mathsf{mul}}

  • 计算 r(X)r(X) 复杂度与上面朴素协议的分析一致,复杂度为

    >(2n+1) Fmul+k=0n1polymul(0,2k1)>> (2n + 1) ~ \mathbb{F}_{\mathsf{mul}} + \sum_{k = 0}^{n - 1} \mathsf{polymul}(0, 2^k - 1) >
  • 计算 s(X)s(X)

    • βkζ2n2k\beta^k \cdot \zeta^{2^n-2^k} ,复杂度为 Fmul\mathbb{F}_{\mathsf{mul}}
    • βkζ2n2kq^k(X)\beta^k \cdot \zeta^{2^n-2^k}\cdot \hat{q}_k(X) ,复杂度为 polymul(0,2k1)\mathsf{polymul}(0, 2^k - 1)

    因此 计算 s(X)=qˉ(X)k=0n1βkζ2n2kq^k(X)s(X) = \bar{q}(X) - \sum_{k=0}^{n-1} \beta^k \cdot \zeta^{2^n-2^k}\cdot \hat{q}_k(X) 复杂度为

    >n Fmul+k=0n1polymul(0,2k1)>> n ~ \mathbb{F}_{\mathsf{mul}} + \sum_{k = 0}^{n - 1} \mathsf{polymul}(0, 2^k - 1) >
  • 计算商多项式 h0(X)h_0(X)h1(X)h_1(X) ,这里可以用线性除法进行计算,由于 deg(r)=2n1\deg(r) = 2^n - 1deg(s(X))=2n1\deg(s(X)) = 2^n - 1 ,因此这里的复杂度为

    >(2n+12) Fmul>> (2^{n + 1} - 2) ~ \mathbb{F}_{\mathsf{mul}} >

因此这一轮的总复杂度为

>>n Fmul+(2n+1) Fmul>+k=0n1polymul(0,2k1)+n Fmul+k=0n1polymul(0,2k1)+(2n+12) Fmul>=(4n+2n+11) Fmul+2k=0n1polymul(0,2k1)>>> \begin{aligned} > & n ~ \mathbb{F}_{\mathsf{mul}} + (2n + 1) ~ \mathbb{F}_{\mathsf{mul}} \\ > & + \sum_{k = 0}^{n - 1} \mathsf{polymul}(0, 2^k - 1) + n ~ \mathbb{F}_{\mathsf{mul}} + \sum_{k = 0}^{n - 1} \mathsf{polymul}(0, 2^k - 1) + (2^{n + 1} - 2) ~ \mathbb{F}_{\mathsf{mul}} \\ > = & (4n + 2^{n + 1} - 1) ~ \mathbb{F}_{\mathsf{mul}} + 2 \sum_{k = 0}^{n - 1} \mathsf{polymul}(0, 2^k - 1) > \end{aligned} >

Round 4

  1. Verifier 发送随机数 αFp\alpha\in \mathbb{F}_p^* ,用来聚合 h0(X)h_0(X)h1(X)h_1(X)

  2. Prover 计算 h(X)h(X) 并发送其承诺 cm(h)\mathsf{cm}(h)

h(X)=(h0(X)+αh1(X))XDmax2n+2h(X)=(h_0(X) + \alpha\cdot h_1(X))\cdot X^{D_{max}-2^n+2}

Prover:

  • 计算 h0(X)+αh1(X)h_0(X) + \alpha\cdot h_1(X) ,复杂度为 polymul(0,2n2)\mathsf{polymul}(0, 2^n - 2)
  • (h0(X)+αh1(X))XDmax2n+1(h_0(X) + \alpha\cdot h_1(X))\cdot X^{D_{max}-2^n+1} 复杂度为 polymul(2n2,Dmax2n+1)\mathsf{polymul}(2^n - 2, D_{max}-2^n+1)
  • 计算 cm(h)\mathsf{cm}(h) 复杂度为 msm(Dmax+1,G1)\mathsf{msm}(D_{max} + 1, {\mathbb{G}_1})

这一轮的总复杂度为

>polymul(0,2n2)+polymul(2n2,Dmax2n+1)+msm(Dmax+1,G1)>> \mathsf{polymul}(0, 2^n - 2) + \mathsf{polymul}(2^n - 2, D_{max}-2^n+1) + \mathsf{msm}(D_{max} + 1, {\mathbb{G}_1}) >

Verification

Verifier

cm(r)=cm(f)cm(vΦn(ζ))i=0n1(ζ2iΦni1(ζ2i+1)uiΦni(ζ2i))cm(q^i)\mathsf{cm}(r) = \mathsf{cm}(f) - \mathsf{cm}(v\cdot \Phi_{n}(\zeta)) - \sum_{i=0}^{n-1} \Big(\zeta^{2^i}\cdot \Phi_{n-i-1}(\zeta^{2^{i+1}}) - u_i\cdot \Phi_{n-i}(\zeta^{2^{i}})\Big)\cdot \mathsf{cm}(\hat{q}_i)
cm(s)=cm(qˉ)i=0n1βiζ2n2icm(q^i)\mathsf{cm}(s) = \mathsf{cm}(\bar{q}) - \sum_{i=0}^{n-1} \beta^i \cdot \zeta^{2^n-2^i}\cdot \mathsf{cm}(\hat{q}_i)
e(cm(r)+αcm(s), [τD2n+2]2)=e(cm(h), [τ]2ζ[1]2)e(\mathsf{cm}(r) + \alpha\cdot \mathsf{cm}(s), \ [\tau^{D-2^n+2}]_2) = e(\mathsf{cm}(h),\ [\tau]_2 - \zeta\cdot [1]_2)

证明大小:

在 Verifier 进行验证前,其收到的证明为

>π=(cm(q^0),cm(q^1),,cm(q^n1),cm(qˉ),cm(h))>> \pi = (\mathsf{cm}(\hat{q}_0), \mathsf{cm}(\hat{q}_1), \ldots, \mathsf{cm}(\hat{q}_{n-1}), \mathsf{cm}(\bar{q}), \mathsf{cm}(h)) >

因此证明的大小为 (n+2) G1(n + 2) ~ \mathbb{G}_1

Verifier:

  • 构造 cm(r)\mathsf{cm}(r) 的承诺

    • 计算 ζ2,ζ4,,ζ2n\zeta^2, \zeta^4, \ldots, \zeta^{2^n} ,复杂度为 n Fmuln ~ \mathbb{F}_{\mathsf{mul}}

    • 计算 cm(vΦn(ζ))\mathsf{cm}(v\cdot \Phi_{n}(\zeta)) 复杂度: Fmul+EccMulG1\mathbb{F}_{\mathsf{mul}} + \mathsf{EccMul}^{\mathbb{G}_1}

    • 计算 i=0n1(ζ2iΦni1(ζ2i+1)uiΦni(ζ2i))cm(q^i)\sum_{i=0}^{n-1} \Big(\zeta^{2^i}\cdot \Phi_{n-i-1}(\zeta^{2^{i+1}}) - u_i\cdot \Phi_{n-i}(\zeta^{2^{i}})\Big)\cdot \mathsf{cm}(\hat{q}_i)

      • (ζ2iΦni1(ζ2i+1)uiΦni(ζ2i))cm(q^i)\Big(\zeta^{2^i}\cdot \Phi_{n-i-1}(\zeta^{2^{i+1}}) - u_i\cdot \Phi_{n-i}(\zeta^{2^{i}})\Big)\cdot \mathsf{cm}(\hat{q}_i) 复杂度为:2 Fmul+EccMulG12 ~ \mathbb{F}_{\mathsf{mul}} + \mathsf{EccMul}^{\mathbb{G}_1}

      得到的 nnG1\mathbb{G}_1 上的点还要相加,因此这步计算的总复杂为 2n Fmul+n EccMulG1+(n1) EccAddG12n ~ \mathbb{F}_{\mathsf{mul}} + n ~\mathsf{EccMul}^{\mathbb{G}_1} + (n - 1) ~\mathsf{EccAdd}^{\mathbb{G}_1}

    • 将上边得到的三个 G1\mathbb{G}_1 上的点相加,复杂度为 2 EccAddG12~\mathsf{EccAdd}^{\mathbb{G}_1}

    因此计算出 cm(r)\mathsf{cm}(r) 的复杂度为

    >>n Fmul+Fmul+EccMulG1+2n Fmul+n EccMulG1+(n1) EccAddG1+2 EccAddG1>=(3n+1) Fmul+(n+1) EccMulG1+(n+1) EccAddG1>>> \begin{aligned} > & n ~ \mathbb{F}_{\mathsf{mul}} + \mathbb{F}_{\mathsf{mul}} + \mathsf{EccMul}^{\mathbb{G}_1} + 2n ~ \mathbb{F}_{\mathsf{mul}} + n ~\mathsf{EccMul}^{\mathbb{G}_1} + (n - 1) ~\mathsf{EccAdd}^{\mathbb{G}_1} + 2~\mathsf{EccAdd}^{\mathbb{G}_1} \\ > = & (3n + 1) ~ \mathbb{F}_{\mathsf{mul}} + (n + 1) ~ \mathsf{EccMul}^{\mathbb{G}_1} + (n + 1) ~ \mathsf{EccAdd}^{\mathbb{G}_1} > \end{aligned} >
  • 计算 cm(s)\mathsf{cm}(s) 的承诺

    • 先计算出 β2,,βn1\beta^2, \ldots, \beta^{n - 1} ,复杂度为 (n2) Fmul(n - 2) ~ \mathbb{F}_{\mathsf{mul}}

    • 计算 βiζ2n2icm(q^i)\beta^i \cdot \zeta^{2^n-2^i}\cdot \mathsf{cm}(\hat{q}_i) 复杂度为: Fmul+EccMulG1\mathbb{F}_{\mathsf{mul}} + \mathsf{EccMul}^{\mathbb{G}_1}, 因此求和计算的复杂度不仅有每一项的计算,同时计算完椭圆曲线上的点之后,还要将这 nn 个点相加,因此计算 i=0n1βiζ2n2icm(q^i)\sum_{i=0}^{n-1} \beta^i \cdot \zeta^{2^n-2^i}\cdot \mathsf{cm}(\hat{q}_i) 的总复杂度为

      >n Fmul+n EccMulG1+(n1) EccAddG1>> n ~ \mathbb{F}_{\mathsf{mul}} + n ~ \mathsf{EccMul}^{\mathbb{G}_1} + (n - 1) ~ \mathsf{EccAdd}^{\mathbb{G}_1} >
    • 计算 cm(qˉ)i=0n1βiζ2n2icm(q^i)\mathsf{cm}(\bar{q}) - \sum_{i=0}^{n-1} \beta^i \cdot \zeta^{2^n-2^i}\cdot \mathsf{cm}(\hat{q}_i) 的复杂度为两个椭圆曲线 G1\mathbb{G}_1 上的点相加,为 EccAddG1\mathsf{EccAdd}^{\mathbb{G}_1}

    因此计算出 cm(s)\mathsf{cm}(s) 的复杂度为

    >(2n2) Fmul+n EccMulG1+n EccAddG1>> (2n - 2) ~ \mathbb{F}_{\mathsf{mul}} + n ~ \mathsf{EccMul}^{\mathbb{G}_1} + n ~ \mathsf{EccAdd}^{\mathbb{G}_1} >
  • 验证 r(ζ)=0r(\zeta) = 0s(ζ)=0s(\zeta) = 0

    • 计算 cm(r)+αcm(s)\mathsf{cm}(r) + \alpha\cdot \mathsf{cm}(s)[τ]2ζ[1]2[\tau]_2 - \zeta\cdot [1]_2 的复杂度为 EccMulG1+EccAddG1+EccMulG2+EccAddG2\mathsf{EccMul}^{\mathbb{G}_1} + \mathsf{EccAdd}^{\mathbb{G}_1} + \mathsf{EccMul}^{\mathbb{G}_2} + \mathsf{EccAdd}^{\mathbb{G}_2}
    • 计算 e(cm(r)+αcm(s), [τD2n+2]2)e(\mathsf{cm}(r) + \alpha\cdot \mathsf{cm}(s), \ [\tau^{D-2^n+2}]_2)e(cm(h), [τ]2ζ[1]2)e(\mathsf{cm}(h),\ [\tau]_2 - \zeta\cdot [1]_2) ,涉及两个椭圆曲线上的配对操作,记为 2 P2~P

    因此这一步的总复杂度为

    >EccMulG1+EccAddG1+EccMulG2+EccAddG2+2 P>> \mathsf{EccMul}^{\mathbb{G}_1} + \mathsf{EccAdd}^{\mathbb{G}_1} + \mathsf{EccMul}^{\mathbb{G}_2} + \mathsf{EccAdd}^{\mathbb{G}_2} + 2~P >

因此在 Verification 阶段的总复杂度为

>>(3n+1) Fmul+(n+1) EccMulG1+(n+1) EccAddG1>+(2n2) Fmul+n EccMulG1+n EccAddG1>+EccMulG1+EccAddG1+EccMulG2+EccAddG2+2 P>=(5n1) Fmul+(2n+2) EccMulG1+(2n+2) EccAddG1+EccMulG2+EccAddG2+2 P>>> \begin{aligned} > & (3n + 1) ~ \mathbb{F}_{\mathsf{mul}} + (n + 1) ~ \mathsf{EccMul}^{\mathbb{G}_1} + (n + 1) ~ \mathsf{EccAdd}^{\mathbb{G}_1} \\ > & + (2n - 2) ~ \mathbb{F}_{\mathsf{mul}} + n ~ \mathsf{EccMul}^{\mathbb{G}_1} + n ~ \mathsf{EccAdd}^{\mathbb{G}_1} \\ > & + \mathsf{EccMul}^{\mathbb{G}_1} + \mathsf{EccAdd}^{\mathbb{G}_1} + \mathsf{EccMul}^{\mathbb{G}_2} + \mathsf{EccAdd}^{\mathbb{G}_2} + 2~P \\ > = & (5n - 1) ~ \mathbb{F}_{\mathsf{mul}} + (2n + 2) ~ \mathsf{EccMul}^{\mathbb{G}_1} + (2n + 2) ~ \mathsf{EccAdd}^{\mathbb{G}_1} + \mathsf{EccMul}^{\mathbb{G}_2} + \mathsf{EccAdd}^{\mathbb{G}_2} + 2~P > \end{aligned} >

汇总

Prover 计算复杂度:

>>(2n2) Fmul+k=0n1msm(2k,G1)>+(n2) Fmul+n polymul(0,2n1)+i=0n1polymul(2n2i,2i1)+msm(2n,G1)>+(4n+2n+11) Fmul+2k=0n1polymul(0,2k1)>+polymul(0,2n2)+polymul(2n2,Dmax2n+1)+msm(Dmax+1,G1)>=(32n+5n5) Fmul+n polymul(0,2n1)+i=0n1polymul(2n2i,2i1)>+2k=0n1polymul(0,2k1)+polymul(0,2n2)+polymul(2n2,Dmax2n+1)>+k=0nmsm(2k,G1)+msm(Dmax+1,G1)>>> \begin{aligned} > & (2^{n} - 2) ~ \mathbb{F}_{\mathsf{mul}} + \sum_{k=0}^{n-1} \mathsf{msm}(2^k,\mathbb{G}_1) \\ > & + (n - 2) ~ \mathbb{F}_{\mathsf{mul}} + n ~ \mathsf{polymul}(0, 2^n - 1) + \sum_{i = 0}^{n - 1} \mathsf{polymul}(2^n - 2^i, 2^i - 1) + \mathsf{msm}(2^n , \mathbb{G}_1) \\ > & + (4n + 2^{n + 1} - 1) ~ \mathbb{F}_{\mathsf{mul}} + 2 \sum_{k = 0}^{n - 1} \mathsf{polymul}(0, 2^k - 1) \\ > & + \mathsf{polymul}(0, 2^n - 2) + \mathsf{polymul}(2^n - 2, D_{max}-2^n+1) + \mathsf{msm}(D_{max} + 1, {\mathbb{G}_1})\\ > = & (3 \cdot 2^n + 5n - 5) ~ \mathbb{F}_{\mathsf{mul}} + n ~ \mathsf{polymul}(0, 2^n - 1) + \sum_{i = 0}^{n - 1} \mathsf{polymul}(2^n - 2^i, 2^i - 1) \\ > & + 2 \sum_{k = 0}^{n - 1} \mathsf{polymul}(0, 2^k - 1) + \mathsf{polymul}(0, 2^n - 2) + \mathsf{polymul}(2^n - 2, D_{max}-2^n+1)\\ > & + \sum_{k=0}^{n} \mathsf{msm}(2^k,\mathbb{G}_1) + \mathsf{msm}(D_{max} + 1, {\mathbb{G}_1}) > \end{aligned} >

Verifier 计算复杂度:

>(5n1) Fmul+(2n+2) EccMulG1+(2n+2) EccAddG1+EccMulG2+EccAddG2+2 P>> (5n - 1) ~ \mathbb{F}_{\mathsf{mul}} + (2n + 2) ~ \mathsf{EccMul}^{\mathbb{G}_1} + (2n + 2) ~ \mathsf{EccAdd}^{\mathbb{G}_1} + \mathsf{EccMul}^{\mathbb{G}_2} + \mathsf{EccAdd}^{\mathbb{G}_2} + 2~P >

证明大小:

>(n+2) G1>> (n + 2) ~ \mathbb{G}_1 >

代入多项式相乘的复杂度 polymul(a,b)=(a+1)(b+1) Fmul=(ab+a+b+1) Fmul\mathsf{polymul}(a, b) = (a + 1) (b + 1) ~ \mathbb{F}_{\mathsf{mul}} = (ab + a + b + 1) ~ \mathbb{F}_{\mathsf{mul}} ,得到

Prover 复杂度:

(32n+5n5) Fmul+n polymul(0,2n1)+i=0n1polymul(2n2i,2i1)+2k=0n1polymul(0,2k1)+polymul(0,2n2)+polymul(2n2,Dmax2n+1)+k=0nmsm(2k,G1)+msm(Dmax+1,G1)=(3N+5n5) Fmul+nN Fmul+(23N223) Fmul+(2N2) Fmul+(N1) Fmul+((Dmax+3)NN2Dmax2) Fmul+k=0nmsm(2k,G1)+msm(Dmax+1,G1)=(13N2+nN+(Dmax+9)N+5n323Dmax) Fmul+k=0nmsm(2k,G1)+msm(Dmax+1,G1)\begin{align} & (3 \cdot 2^n + 5n - 5) ~ \mathbb{F}_{\mathsf{mul}} + n ~ \mathsf{polymul}(0, 2^n - 1) + \sum_{i = 0}^{n - 1} \mathsf{polymul}(2^n - 2^i, 2^i - 1) \\ & + 2 \sum_{k = 0}^{n - 1} \mathsf{polymul}(0, 2^k - 1) + \mathsf{polymul}(0, 2^n - 2) + \mathsf{polymul}(2^n - 2, D_{max}-2^n+1)\\ & + \sum_{k=0}^{n} \mathsf{msm}(2^k,\mathbb{G}_1) + \mathsf{msm}(D_{max} + 1, {\mathbb{G}_1}) \\ = & (3 N + 5n - 5) ~ \mathbb{F}_{\mathsf{mul}} + nN ~ \mathbb{F}_{\mathsf{mul}} + (\frac{2}{3}N^2 - \frac{2}{3}) ~ \mathbb{F}_{\mathsf{mul}} \\ & + (2N - 2) ~ \mathbb{F}_{\mathsf{mul}} + (N - 1) ~ \mathbb{F}_{\mathsf{mul}} + ((D_{max} + 3)N - N^2 - D_{max} - 2) ~ \mathbb{F}_{\mathsf{mul}} \\ & + \sum_{k=0}^{n} \mathsf{msm}(2^k,\mathbb{G}_1) + \mathsf{msm}(D_{max} + 1, {\mathbb{G}_1}) \\ = & (-\frac{1}{3}N^2 +nN +(D_{max} +9)N + 5n - \frac{32}{3} - D_{max}) ~ \mathbb{F}_{\mathsf{mul}} \\ & + \sum_{k=0}^{n} \mathsf{msm}(2^k,\mathbb{G}_1) + \mathsf{msm}(D_{max} + 1, {\mathbb{G}_1}) \\ \end{align}

Verifier 计算复杂度:

>(5n1) Fmul+(2n+2) EccMulG1+(2n+2) EccAddG1+EccMulG2+EccAddG2+2 P>> (5n - 1) ~ \mathbb{F}_{\mathsf{mul}} + (2n + 2) ~ \mathsf{EccMul}^{\mathbb{G}_1} + (2n + 2) ~ \mathsf{EccAdd}^{\mathbb{G}_1} + \mathsf{EccMul}^{\mathbb{G}_2} + \mathsf{EccAdd}^{\mathbb{G}_2} + 2~P >

证明大小:

>(n+2) G1>> (n + 2) ~ \mathbb{G}_1 >

zeromorph-pcs (degree bound optimized)

协议描述文档:Zeromorph-PCS (Part II)

公共输入

Witness

Round 1

f~(X0,X1,,Xn1)v=i=0n1(Xiui)q~i(X0,X1,,Xi1)\tilde{f}(X_0,X_1,\ldots, X_{n-1}) - v = \sum_{i=0}^{n-1} (X_i-u_i) \cdot \tilde{q}_i(X_0,X_1,\ldots, X_{i-1})

Prover Cost:

这一轮和上一个 batched degree bound 协议一样,这一轮的复杂度为

(2n2) Fmul+k=0n1msm(2k,G1)(2^{n} - 2) ~ \mathbb{F}_{\mathsf{mul}} + \sum_{k=0}^{n-1} \mathsf{msm}(2^k,\mathbb{G}_1)

Round 2

  1. Verifier 发送随机数 βFq\beta\in \mathbb{F}_q^*
  2. Prover 构造 g(X)g(X) 作为聚合多项式 {qi(X)}\{q_i(X)\} 的多项式,满足
g(X1)=i=0n1βiX2i+1qi(X)g(X^{-1}) = \sum_{i=0}^{n-1} \beta^i \cdot X^{-2^i+1}\cdot q_i(X)
  1. Prover 计算并发送 g(X)g(X) 的承诺 cm(g)\mathsf{cm}(g)

Prover Cost:

g(X)=i=0n1βiX2i1qi(X1)g(X) = \sum_{i = 0}^{n - 1} \beta^i \cdot X^{2^i-1}{q}_i(X^{-1})

X2i1qi(X1)X^{2^i-1}{q}_i(X^{-1}) 其实是 qi(X)q_i(X) 的系数进行翻转,然后再乘以 βi\beta^i ,这里的复杂度为 polymul(0,2i1)\mathsf{polymul}(0, 2^i - 1) ,因此求和相加的复杂度为

i=0n1polymul(0,2i1)\sum_{i = 0}^{n - 1} \mathsf{polymul}(0, 2^i - 1)

这一轮的总复杂度为

(n2) Fmul+i=0n1polymul(0,2i1)+msm(2n1,G1)(n - 2) ~ \mathbb{F}_{\mathsf{mul}} + \sum_{i = 0}^{n - 1} \mathsf{polymul}(0, 2^i - 1) + \mathsf{msm}(2^{n - 1} , \mathbb{G}_1)

Round 3

  1. Verifier 发送随机数 ζFp\zeta\in \mathbb{F}_p^* ,用来挑战多项式在 X=ζX=\zeta 处的取值

  2. Prover 计算 g(ζ1)g(\zeta^{-1}),并计算商多项式 qg(X)q_g(X)

qg(X)=g(X)g(ζ1)Xζ1q_g(X) = \frac{g(X) - g(\zeta^{-1})}{X-\zeta^{-1}}
  1. Prover 构造线性化多项式 rζ(X)r_\zeta(X)sζ(X)s_\zeta(X)
rζ(X)=f(X)vΦn(ζ)i=0n1(ζ2iΦni1(ζ2i+1)uiΦni(ζ2i))qi(X)r_\zeta(X) = f(X) - v\cdot \Phi_{n}(\zeta) - \sum_{i=0}^{n-1} \Big(\zeta^{2^i}\cdot \Phi_{n-i-1}(\zeta^{2^{i+1}}) - u_i\cdot \Phi_{n-i}(\zeta^{2^{i}})\Big)\cdot q_i(X)
sζ(X)=g(ζ1)iβiζ2i1qi(X)s_\zeta(X) = g(\zeta^{-1}) - \sum_i\beta^i\zeta^{2^i-1}\cdot q_i(X)
wr(X)=rζ(X)Xζ,ws(X)=sζ(X)Xζw_r(X) = \frac{r_\zeta(X)}{X-\zeta}, \qquad w_s(X) = \frac{s_\zeta(X)}{X-\zeta}
  1. 计算并发送承诺 cm(qg)\mathsf{cm}(q_g)

Prover Cost:

(2n+1) Fmul+k=0n1polymul(0,2k1)(2n + 1) ~ \mathbb{F}_{\mathsf{mul}} + \sum_{k = 0}^{n - 1} \mathsf{polymul}(0, 2^k - 1)
n Fmul+i=0n1polymul(0,2i1)n ~ \mathbb{F}_{\mathsf{mul}} + \sum_{i = 0}^{n - 1}\mathsf{polymul}(0, 2^i - 1)

这一轮的总复杂度为

n Fmul+Finv+2n1 Fmul+(2n11) Fmul+(2n+1) Fmul+k=0n1polymul(0,2k1)+n Fmul+i=0n1polymul(0,2i1)+(32n12) Fmul+msm(2n11,G1)=(52n1+4n2) Fmul+Finv+2k=0n1polymul(0,2k1)+msm(2n11,G1)\begin{aligned} & n ~ \mathbb{F}_{\mathsf{mul}} + \mathbb{F}_{\mathsf{inv}} + 2^{n - 1} ~ \mathbb{F}_{\mathsf{mul}} + (2^{n - 1} - 1) ~ \mathbb{F}_{\mathsf{mul}} \\ & + (2n + 1) ~ \mathbb{F}_{\mathsf{mul}} + \sum_{k = 0}^{n - 1} \mathsf{polymul}(0, 2^k - 1) \\ & + n ~ \mathbb{F}_{\mathsf{mul}} + \sum_{i = 0}^{n - 1}\mathsf{polymul}(0, 2^i - 1) + (3 \cdot 2^{n - 1} - 2) ~ \mathbb{F}_{\mathsf{mul}} \\ & + \mathsf{msm}(2^{n - 1} - 1, \mathbb{G}_1) \\ = & (5 \cdot 2^{n - 1} + 4n - 2) ~ \mathbb{F}_{\mathsf{mul}} + \mathbb{F}_{\mathsf{inv}} + 2 \sum_{k = 0}^{n - 1} \mathsf{polymul}(0, 2^k - 1) + \mathsf{msm}(2^{n - 1} - 1, \mathbb{G}_1) \end{aligned}

Round 4

  1. Verifier 发送随机数 αFp\alpha\in \mathbb{F}_p^* ,用来聚合 wr(X)w_r(X)ws(X)w_s(X)

  2. Prover 计算 w(X)w(X) 并发送其承诺 cm(w)\mathsf{cm}(w)

w(X)=wr(X)+αws(X)w(X) = w_r(X) + \alpha\cdot w_s(X)

Prover Cost:

这一轮的总复杂度为

polymul(0,2n12)+msm(2n1,G1)\mathsf{polymul}(0, 2^{n - 1} - 2) + \mathsf{msm}(2^n - 1, \mathbb{G}_1)

Proof

总共 n+3n+3G1\mathbb{G}_11Fq\mathbb{F}_q

π=(cm(q0),cm(q1),,cm(qn1),cm(g),cm(qg),cm(w),g(ζ1))\pi= \Big( \mathsf{cm}(q_0), \mathsf{cm}(q_1), \ldots, \mathsf{cm}(q_{n-1}), \mathsf{cm}(g), \mathsf{cm}(q_g), \mathsf{cm}(w), g(\zeta^{-1})\Big)

Proof size:

(n+3)G1+Fq\begin{aligned} (n + 3) \cdot \mathbb{G}_1 + \mathbb{F}_q \end{aligned}

Verification

Verifier

  1. 构造 cm(rζ)\mathsf{cm}(r_\zeta) 的承诺:
cm(rζ)=cm(f)cm(vΦn(ζ))i=0n1(ζ2iΦni1(ζ2i+1)uiΦni(ζ2i))cm(qi)\mathsf{cm}(r_\zeta) = \mathsf{cm}(f) - \mathsf{cm}(v\cdot \Phi_{n}(\zeta)) - \sum_{i=0}^{n-1} \Big(\zeta^{2^i}\cdot \Phi_{n-i-1}(\zeta^{2^{i+1}}) - u_i\cdot \Phi_{n-i}(\zeta^{2^{i}})\Big)\cdot \mathsf{cm}(q_i)
  1. 构造 cm(sζ)\mathsf{cm}(s_\zeta) 的承诺:
cm(sζ)=g(ζ1)[1]1i=0n1βiζ2i+1cm(qi)\mathsf{cm}(s_\zeta) = g(\zeta^{-1})\cdot[1]_1 - \sum_{i=0}^{n-1} \beta^i \cdot \zeta^{-2^i+1}\cdot \mathsf{cm}(q_i)
  1. 验证 rζ(ζ)=0r_\zeta(\zeta) = 0sζ(ζ)=0s_\zeta(\zeta) = 0
e(cm(rζ)+αcm(sζ), [1]2)=e(cm(w), [τ]2ζ[1]2)e(\mathsf{cm}(r_\zeta) + \alpha\cdot \mathsf{cm}(s_\zeta), \ [1]_2) = e(\mathsf{cm}(w),\ [\tau]_2 - \zeta\cdot [1]_2)

转换下,可以得到下面的 Pairing 等式:

e(cm(rζ)+αcm(sζ)+ζcm(w), [1]2)=e(cm(w), [τ]2)e(\mathsf{cm}(r_\zeta) + \alpha\cdot \mathsf{cm}(s_\zeta) + \zeta\cdot\mathsf{cm}(w), \ [1]_2) = e(\mathsf{cm}(w),\ [\tau]_2)
  1. 验证 g(ζ1)g(\zeta^{-1}) 的正确性
e(cm(g)g(ζ1)[1]1+ζ1cm(qg), [1]2)=e(cm(qg), [τ]2)e(\mathsf{cm}(g) - g(\zeta^{-1})\cdot [1]_1 + \zeta^{-1}\cdot\mathsf{cm}(q_g),\ [1]_2) = e(\mathsf{cm}(q_g), \ [\tau]_2)

Verifier Cost:

(3n+1) Fmul+(n+1) EccMulG1+(n+1) EccAddG1(3n + 1) ~ \mathbb{F}_{\mathsf{mul}} + (n + 1) ~ \mathsf{EccMul}^{\mathbb{G}_1} + (n + 1) ~ \mathsf{EccAdd}^{\mathbb{G}_1}
Finv+EccMulG1+(n2) Fmul+n Fmul+n EccMulG1+(n1) EccAddG1+EccAddG1=(2n2) Fmul+Finv+(n+1) EccMulG1+n EccAddG1\begin{aligned} & \mathbb{F}_{\mathsf{inv}} + \mathsf{EccMul}^{\mathbb{G}_1} + (n - 2) ~ \mathbb{F}_{\mathsf{mul}} \\ & + n ~ \mathbb{F}_{\mathsf{mul}} + n ~ \mathsf{EccMul}^{\mathbb{G}_1} + (n - 1) ~ \mathsf{EccAdd}^{\mathbb{G}_1} + \mathsf{EccAdd}^{\mathbb{G}_1} \\ = & (2n - 2) ~ \mathbb{F}_{\mathsf{mul}} + \mathbb{F}_{\mathsf{inv}} + (n + 1) ~ \mathsf{EccMul}^{\mathbb{G}_1} + n ~ \mathsf{EccAdd}^{\mathbb{G}_1} \end{aligned}
  • 验证 rζ(ζ)=0r_{\zeta}(\zeta) = 0sζ(ζ)=0s_{\zeta}(\zeta) = 0
    • 计算 cm(rζ)+αcm(sζ)+ζcm(w)\mathsf{cm}(r_{\zeta}) + \alpha \cdot \mathsf{cm}(s_{\zeta}) + \zeta \cdot \mathsf{cm}(w) ,复杂度为 2 EccMulG1+2 EccAddG12 ~ \mathsf{EccMul}^{\mathbb{G}_1} + 2 ~\mathsf{EccAdd}^{\mathbb{G}_1}
  • 计算 e(cm(rζ)+αcm(sζ)+ζcm(w),[1]2)e(\mathsf{cm}(r_{\zeta}) + \alpha \cdot \mathsf{cm}(s_{\zeta}) + \zeta \cdot \mathsf{cm}(w), [1]_2)e(cm(w),[τ]2)e(\mathsf{cm}(w), [\tau]_2) ,复杂度为 2 P2~P

因此这一步的总复杂度为 2 EccMulG1+2 EccAddG1+2 P2 ~ \mathsf{EccMul}^{\mathbb{G}_1} + 2 ~\mathsf{EccAdd}^{\mathbb{G}_1} + 2~P

  • 验证 g(ζ1)g(\zeta^{-1}) 的正确性

    • 计算 cm(g)g(ζ1)[1]1+ζ1cm(qg)\mathsf{cm}(g) - g(\zeta^{-1}) \cdot [1]_1 + \zeta^{-1} \cdot \mathsf{cm}(q_g) ,复杂度为 2 EccMulG1+2 EccAddG12 ~ \mathsf{EccMul}^{\mathbb{G}_1} + 2 ~ \mathsf{EccAdd}^{\mathbb{G}_1}
    • 计算 e(cm(g)g(ζ1)[1]1+ζ1cm(qg),[1]2)e(\mathsf{cm}(g) - g(\zeta^{-1}) \cdot [1]_1 + \zeta^{-1} \cdot \mathsf{cm}(q_g), [1]_2)e(cm(qg),[τ]2)e(\mathsf{cm}(q_g), [\tau]_2) ,复杂度为 2 P2~P

    因此这一步的总复杂度为 2 EccMulG1+2 EccAddG1+2 P2 ~ \mathsf{EccMul}^{\mathbb{G}_1} + 2 ~ \mathsf{EccAdd}^{\mathbb{G}_1} + 2~P

可以将 3 和 4 中的 pairing 进行合并,即验证

e(cm(rζ)+αcm(sζ)+ζcm(w)+cm(g)g(ζ1)[1]1+ζ1cm(qg),[1]2)=?e(cm(w)+cm(qg),[τ]2)e(\mathsf{cm}(r_{\zeta}) + \alpha \cdot \mathsf{cm}(s_{\zeta}) + \zeta \cdot \mathsf{cm}(w) + \mathsf{cm}(g) - g(\zeta^{-1}) \cdot [1]_1 + \zeta^{-1} \cdot \mathsf{cm}(q_g), [1]_2) \overset{?}{=} e(\mathsf{cm}(w) + \mathsf{cm}(q_g), [\tau]_2)

复杂度为 4 EccMulG1+6 EccAddG1+2 P4 ~ \mathsf{EccMul}^{\mathbb{G}_1} + 6 ~ \mathsf{EccAdd}^{\mathbb{G}_1} + 2~P

因此在 Verification 阶段的总复杂度为

(3n+1) Fmul+(n+1) EccMulG1+(n+1) EccAddG1+(2n2) Fmul+Finv+(n+1) EccMulG1+n EccAddG1+4 EccMulG1+6 EccAddG1+2 P=(5n1) Fmul+Finv+(2n+6) EccMulG1+(2n+7) EccAddG1+2 P\begin{aligned} & (3n + 1) ~ \mathbb{F}_{\mathsf{mul}} + (n + 1) ~ \mathsf{EccMul}^{\mathbb{G}_1} + (n + 1) ~ \mathsf{EccAdd}^{\mathbb{G}_1} \\ & + (2n - 2) ~ \mathbb{F}_{\mathsf{mul}} + \mathbb{F}_{\mathsf{inv}} + (n + 1) ~ \mathsf{EccMul}^{\mathbb{G}_1} + n ~ \mathsf{EccAdd}^{\mathbb{G}_1} \\ & + 4 ~ \mathsf{EccMul}^{\mathbb{G}_1} + 6 ~\mathsf{EccAdd}^{\mathbb{G}_1} + 2~P \\ = & (5n - 1) ~ \mathbb{F}_{\mathsf{mul}} + \mathbb{F}_{\mathsf{inv}} + (2n + 6) ~ \mathsf{EccMul}^{\mathbb{G}_1} + (2n + 7) ~ \mathsf{EccAdd}^{\mathbb{G}_1} + 2~P \end{aligned}

汇总

Prover 计算复杂度:

(2n2) Fmul+k=0n1msm(2k,G1)+(n2) Fmul+i=0n1polymul(0,2i1)+msm(2n1,G1)+(52n1+4n2) Fmul+Finv+2k=0n1polymul(0,2k1)+msm(2n11,G1)+polymul(0,2n12)+msm(2n1,G1)=(722n+5n6) Fmul+Finv+3k=0n1polymul(0,2k1)+polymul(0,2n12)+k=0nmsm(2k,G1)+msm(2n1,G1)+msm(2n11,G1)+msm(2n1,G1)\begin{aligned} & (2^{n} - 2) ~ \mathbb{F}_{\mathsf{mul}} + \sum_{k=0}^{n-1} \mathsf{msm}(2^k,\mathbb{G}_1) \\ & + (n - 2) ~ \mathbb{F}_{\mathsf{mul}} + \sum_{i = 0}^{n - 1} \mathsf{polymul}(0, 2^i - 1) + \mathsf{msm}(2^{n - 1} , \mathbb{G}_1)\\ & + (5 \cdot 2^{n - 1} + 4n - 2) ~ \mathbb{F}_{\mathsf{mul}} + \mathbb{F}_{\mathsf{inv}} + 2 \sum_{k = 0}^{n - 1} \mathsf{polymul}(0, 2^k - 1) + \mathsf{msm}(2^{n - 1} - 1, \mathbb{G}_1) \\ & + \mathsf{polymul}(0, 2^{n - 1} - 2) + \mathsf{msm}(2^n - 1, \mathbb{G}_1) \\ = & (\frac{7}{2} \cdot 2^n + 5n - 6) ~ \mathbb{F}_{\mathsf{mul}} + \mathbb{F}_{\mathsf{inv}} \\ & + 3 \sum_{k = 0}^{n - 1} \mathsf{polymul}(0, 2^k - 1) + \mathsf{polymul}(0, 2^{n - 1} - 2) \\ & + \sum_{k=0}^{n} \mathsf{msm}(2^k,\mathbb{G}_1) + \mathsf{msm}(2^{n - 1} , \mathbb{G}_1) + \mathsf{msm}(2^{n - 1} - 1, \mathbb{G}_1) + \mathsf{msm}(2^n - 1, \mathbb{G}_1) \end{aligned}

(722n+5n6) Fmul+Finv+3k=0n1polymul(0,2k1)+polymul(0,2n12)+k=0nmsm(2k,G1)+msm(2n1,G1)+msm(2n11,G1)+msm(2n1,G1)\begin{aligned} & (\frac{7}{2} \cdot 2^n + 5n - 6) ~ \mathbb{F}_{\mathsf{mul}} + \mathbb{F}_{\mathsf{inv}} \\ & + 3 \sum_{k = 0}^{n - 1} \mathsf{polymul}(0, 2^k - 1) + \mathsf{polymul}(0, 2^{n - 1} - 2) \\ & + \sum_{k=0}^{n} \mathsf{msm}(2^k,\mathbb{G}_1) + \mathsf{msm}(2^{n - 1} , \mathbb{G}_1) + \mathsf{msm}(2^{n - 1} - 1, \mathbb{G}_1) + \mathsf{msm}(2^n - 1, \mathbb{G}_1) \end{aligned}

Verifier 计算复杂度:

(5n1) Fmul+Finv+(2n+6) EccMulG1+(2n+7) EccAddG1+2 P\begin{aligned} (5n - 1) ~ \mathbb{F}_{\mathsf{mul}} + \mathbb{F}_{\mathsf{inv}} + (2n + 6) ~ \mathsf{EccMul}^{\mathbb{G}_1} + (2n + 7) ~ \mathsf{EccAdd}^{\mathbb{G}_1} + 2~P \end{aligned}

证明大小:

(n+3)G1+Fq\begin{aligned} (n + 3) \cdot \mathbb{G}_1 + \mathbb{F}_q \end{aligned}