BulletProof-内积证明

BulletProof-内积证明

Inner Product Proof Full Math Defination

首先,我们观察到 Prover 可以简单发送向量 l ( x ) \mathbf{l}(x) l(x) r ( x ) \mathbf{r}(x) r(x),Verifier 可以直接检查向量内积 t ( x ) t(x) t(x) 和承诺 P 是否正确。我们给出内积 t ( x ) t(x) t(x) 和一个承诺 P 的关系:
t ( x ) = < l ( x ) , r ( x ) > P = < l ( x ) , G > + < r ( x ) , H > \begin{matrix} t(x)=<\mathbf{l}(x),\mathbf{r}(x)> \\ \\ P = <\mathbf{l}(x),\mathbf{G}>+<\mathbf{r}(x),\mathbf{H}> \end{matrix} t(x)=<l(x),r(x)>P=<l(x),G>+<r(x),H>
为了保证符号的简洁性,我们使用内积参数的常用符号表示:
a , b ∈ Z p n G , H ∈ G n c = < a , b > P = < a , G > + < b , H > \begin{matrix} \mathbf{a,b} \in Z_p^n \\ \\ \mathbf{G,H} \in G^n \\ \\ c=<\mathbf{a},\mathbf{b}> \\ \\ P = <\mathbf{a},\mathbf{G}>+<\mathbf{b},\mathbf{H}> \end{matrix} a,bZpnG,HGnc=<a,b>P=<a,G>+<b,H>
在以上的定义中我们需要有以下关系的知识证明:

我们使用一个不确定的变量 w ∈ Z p ∗ w \in Z_p^* wZp 并且使用生成元 B ∈ G B\in G BG 加上第二个等式,来结合上述的两个论证:
P = < a , G > + < b , H > + c w B = < a , b > w B P = <\mathbf{a},\mathbf{G}>+<\mathbf{b},\mathbf{H}>+ cwB=<\mathbf{a},\mathbf{b}>wB P=<a,G>+<b,H>+cwB=<a,b>wB
我们使用以下的符号定义来简化这个结果等式:
k = l g n , P ′ = P + c w B , Q = w B k=lg n, P' = P + cwB, Q = wB k=lgn,P=P+cwB,Q=wB
这个等式就变成了:
P ′ = < a , G > + < b , H > + < a , b > ⋅ Q P' = <\mathbf{a},\mathbf{G}>+<\mathbf{b},\mathbf{H}>+ <\mathbf{a},\mathbf{b}>\cdot Q P=<a,G>+<b,H>+<a,b>Q
让我们加入不确定的变量 u k ∈ Z p ∗ u_k \in Z_p^* ukZp 并且通过变量 u k u_k uk 将左右部分相加来压缩这些向量:
a ( k − 1 ) = a l o ⋅ u k + u k − 1 ⋅ a h i b ( k − 1 ) = b l o ⋅ u k − 1 + u k ⋅ b h i G ( k − 1 ) = G l o ⋅ u k − 1 + u k ⋅ G h i H ( k − 1 ) = H l o ⋅ u k + u k − 1 ⋅ H h i \begin{matrix} \mathbf{a}^{(k-1)} = \mathbf{a}_{lo}\cdot u_k + {u_k}^{-1}\cdot \mathbf{a}_{hi} \\ \\ \mathbf{b}^{(k-1)} = \mathbf{b}_{lo}\cdot {u_k}^{-1}+ u_k \cdot \mathbf{b}_{hi} \\ \\ \mathbf{G}^{(k-1)} = \mathbf{G}_{lo}\cdot {u_k}^{-1}+ u_k \cdot \mathbf{G}_{hi} \\ \\ \mathbf{H}^{(k-1)} = \mathbf{H}_{lo}\cdot u_k + {u_k}^{-1}\cdot \mathbf{H}_{hi} \end{matrix} a(k1)=alouk+uk1ahib(k1)=blouk1+ukbhiG(k1)=Glouk1+ukGhiH(k1)=Hlouk+uk1Hhi
我们使 P k = P ′ P_k = P' Pk=P 并且使用与 P k P_k Pk 相同的等式来定义 P k − 1 P_{k-1} Pk1 ,但是使用压缩向量:
P K − 1 = < a ( k − 1 ) , G ( k − 1 ) > + < b ( k − 1 ) , H ( k − 1 ) > + < a ( k − 1 ) , b ( k − 1 ) > ⋅ Q P_{K-1} = <\mathbf{a^{(k-1)}},\mathbf{G^{(k-1)}}>+<\mathbf{b^{(k-1)}},\mathbf{H^{(k-1)}}>+ <\mathbf{a^{(k-1)}},\mathbf{b^{(k-1)}}>\cdot Q PK1=<a(k1),G(k1)>+<b(k1),H(k1)>+<a(k1),b(k1)>Q
展开这个等式得到:
P ′ = < a l o ⋅ u k + u k − 1 ⋅ a h i , G l o ⋅ u k − 1 + u k ⋅ G h i > + < b l o ⋅ u k − 1 + u k ⋅ b h i , H l o ⋅ u k + u k − 1 ⋅ H h i > + < a l o ⋅ u k + u k − 1 ⋅ a h i , b l o ⋅ u k − 1 + u k ⋅ b h i > ⋅ Q \begin{matrix} P' = <\mathbf{a}_{lo}\cdot u_k + {u_k}^{-1}\cdot \mathbf{a}_{hi},\mathbf{G}_{lo}\cdot {u_k}^{-1}+ u_k \cdot \mathbf{G}_{hi}> + \\ \\ <\mathbf{b}_{lo}\cdot {u_k}^{-1}+ u_k \cdot \mathbf{b}_{hi},\mathbf{H}_{lo}\cdot u_k + {u_k}^{-1}\cdot \mathbf{H}_{hi}>+ \\ \\ <\mathbf{a}_{lo}\cdot u_k + {u_k}^{-1}\cdot \mathbf{a}_{hi},\mathbf{b}_{lo}\cdot {u_k}^{-1}+ u_k \cdot \mathbf{b}_{hi}> \cdot Q \end{matrix} P=<alouk+uk1ahi,Glouk1+ukGhi>+<blouk1+ukbhi,Hlouk+uk1Hhi>+<alouk+uk1ahi,blouk1+ukbhi>Q
拆分成更简单的形式:
P k − 1 = < a l o , G l o > + < a h i , G h i > + u k 2 < a l o , G l o > + u k − 2 < a h i , G l o > + < b l o , H l o > + < b h i , H h i > + u k 2 < b h i , H l o > + u k − 2 < b l o , H h i > + ( < a l o , b l o > + < a h i , b h i > ) ⋅ Q + ( u k 2 < a l o , b h i > + u k − 2 < a h i , b l o > ) ⋅ Q \begin{matrix} P_{k-1} = <\mathbf{a}_{lo},\mathbf{G}_{lo}>+<\mathbf{a}_{hi},\mathbf{G}_{hi}> \quad \quad +u_k^2<\mathbf{a}_{lo},\mathbf{G}_{lo}>+u_{k}^{-2}<\mathbf{a}_{hi},\mathbf{G}_{lo}>+ \\ \\ <\mathbf{b}_{lo},\mathbf{H}_{lo}>+<\mathbf{b}_{hi},\mathbf{H}_{hi}> \quad \quad +u_k^2<\mathbf{b}_{hi},\mathbf{H}_{lo}>+u_{k}^{-2}<\mathbf{b}_{lo},\mathbf{H}_{hi}>+ \\ \\ (<\mathbf{a}_{lo},\mathbf{b}_{lo}>+<\mathbf{a}_{hi},\mathbf{b}_{hi}>)\cdot Q \quad +(u_k^2<\mathbf{a}_{lo},\mathbf{b}_{hi}>+u_{k}^{-2}<\mathbf{a}_{hi},\mathbf{b}_{lo}>)\cdot Q \end{matrix} Pk1=<alo,Glo>+<ahi,Ghi>+uk2<alo,Glo>+uk2<ahi,Glo>+<blo,Hlo>+<bhi,Hhi>+uk2<bhi,Hlo>+uk2<blo,Hhi>+(<alo,blo>+<ahi,bhi>)Q+(uk2<alo,bhi>+uk2<ahi,blo>)Q
我们发现左边的内容就是 P k P_k Pk 的定义: P k = < a k , G k > + < b k , H k > + < a k , b k > ⋅ Q P_k = <\mathbf{a}^k,\mathbf{G}^k>+<\mathbf{b}^k,\mathbf{H}^k>+ <\mathbf{a}^k,\mathbf{b}^k>\cdot Q Pk=<ak,Gk>+<bk,Hk>+<ak,bk>Q,右边的式子是 u k u_k uk u k − 2 u_{k}^{-2} uk2 P k P_k Pk 分为左右两部分。我们将被 u k u_k uk 划分的部分为 L k L_k Lk,被 u k − 2 u_{k}^{-2} uk2 划分的部分为 R k R_k Rk
P k − 1 = P k + u k 2 ⋅ L k + u k − 2 ⋅ R k L k = < a l o , G h i > + < b h i , H l o > + < a l o , b h i > ⋅ Q R k = < a h i , G l o > + < b l o , H h > + < a h i , b l o > ⋅ Q \begin{matrix} P_{k-1}=P_k+u_k^2\cdot L_k+u_k^{-2}\cdot R_k \\ \\ L_k=<\mathbf{a}_{lo},\mathbf{G}_{hi}>+<\mathbf{b}_{hi},\mathbf{H}_{lo}>+<\mathbf{a}_{lo},\mathbf{b}_{hi}>\cdot Q \\ \\ R_k=<\mathbf{a}_{hi},\mathbf{G}_{lo}>+<\mathbf{b}_{lo},\mathbf{H}_{h}>+<\mathbf{a}_{hi},\mathbf{b}_{lo}>\cdot Q \end{matrix} Pk1=Pk+uk2Lk+uk2RkLk=<alo,Ghi>+<bhi,Hlo>+<alo,bhi>QRk=<ahi,Glo>+<blo,Hh>+<ahi,blo>Q

我们使用 u k − 1 u_{k-1} uk1 来压缩 P k − 1 P_{k-1} Pk1 就像 u k u_k uk 的压缩方法一样,不断的重复这样的步骤,直到我们得到向量
P 0 = a 0 ( 0 ) G 0 ( 0 ) + b 0 ( 0 ) H 0 ( 0 ) + a 0 ( 0 ) b 0 ( 0 ) Q P 0 = P k + ∑ j = 1 k ( L j u j 2 + u j − 2 R j ) \begin{matrix} P_{0}=a_0^{(0)}G_0^{(0)}+b_0^{(0)}H_0^{(0)}+a_0^{(0)}b_0^{(0)}Q \\ \\ P_{0}=P_k+\sum_{j=1}^{k}(L_ju_j^2+u_j^{-2}R_j) \end{matrix} P0=a0(0)G0(0)+b0(0)H0(0)+a0(0)b0(0)QP0=Pk+j=1k(Ljuj2+uj2Rj)

重写以上定义: P k = P ′ = P + c w B P_k = P' = P + cwB Pk=P=P+cwB 并且 Q = w B Q=wB Q=wB,得到了最终表述结果:
P + c w B = a 0 ( 0 ) G 0 ( 0 ) + b 0 ( 0 ) H 0 ( 0 ) + a 0 ( 0 ) b 0 ( 0 ) w B − ∑ j = 1 k ( L j u j 2 + u j − 2 R j ) \begin{matrix} P+cwB = a_0^{(0)}G_0^{(0)}+b_0^{(0)}H_0^{(0)}+a_0^{(0)}b_0^{(0)}wB-\sum_{j=1}^{k}(L_ju_j^2+u_j^{-2}R_j) \end{matrix} P+cwB=a0(0)G0(0)+b0(0)H0(0)+a0(0)b0(0)wBj=1k(Ljuj2+uj2Rj)
此时 Prover 可以传送两个标量 a 0 ( 0 ) a_0^{(0)} a0(0) b 0 ( 0 ) b_0^{(0)} b0(0) 给 Verifier,Verifier 通过计算,检验等式两边是否成立。

这个协议压缩产生结果有 lg n 步,Prover 需要发送每一步 j = k , . . . , 1 j = k,...,1 j=k,...,1 产生的 ( L j , R j ) (L_j,R_j) (Lj,Rj) 给 Verifier,到最后一步也是发送一对标量 ( a 0 ( 0 ) , b 0 ( 0 ) ) (a_0^{(0)},b_0^{(0)}) (a0(0),b0(0)) 并检查最终关系的正确性。

原文链接
Inner product proof notes

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值