关于bulletproof中的范围证明的一些整理和思考

BulletProof 中的范围证明

本文主要对BulletProofs的这篇论文1中的范围证明进行了一些梳理和学习。

改进的内积证明

在bulletproof论文中的第三章,提出了一种改进的内积证明,虽然不是零知识的,但是可以将通信复杂度降低到 2 l o g 2 ( n ) 2log_2(n) 2log2(n),如果在零知识证明中使用这种内积证明,需要在两个向量中加入盲因子。

内积证明所要证明的是以下关系:
{ ( g , h ∈ G n , P ∈ G , c ∈ Z p ; a , b ∈ Z p n ) : P = g a h b ∩ c = < a , b > } \{ (\pmb g, \pmb h \in G^n,P\in G,c\in Z_p;\pmb a, \pmb b \in Z_p^n): P=\pmb g^{\pmb a}\pmb h^{\pmb b} ∩ c = <\pmb a, \pmb b> \} { (ggg,hhhGn,PG,cZp;aaa,bbbZpn):P=gggaaahhhbbbc=<aaa,bbb>}
通过协议1将以上关系转变为以下的关系:
{ ( g , h ∈ G n , P ∈ G , c ∈ Z p ; a , b ∈ Z p n ) : P = g a h b ⋅ u < a , b > } \{ (\pmb g, \pmb h \in G^n,P\in G,c\in Z_p;\pmb a, \pmb b \in Z_p^n): P=\pmb g^{\pmb a}\pmb h^{\pmb b} \cdot u^{<\pmb a, \pmb b>} \} { (ggg,hhhGn,PG,cZp;aaa,bbbZpn):P=gggaaahhhbbbu<aaa,bbb>}
a , b \pmb a, \pmb b aaa,bbb两个向量二分再合并,使其通信复杂度下降。

算法实现

算法分作两个部分,protocol 1将证明的两个等式合并成一个,protocol 2通过一个递归算法将需要证明的两个向量,不断二分合并,最后在两个向量为1的时候,给出验证的结果。

运行Protocol 1

为证
{ ( g , h ∈ G n , P ∈ G , c ∈ Z p ; a , b ∈ Z p n ) : P = g a h b ∩ c = < a , b > } \{ (\pmb g, \pmb h \in G^n,P\in G,c\in Z_p;\pmb a, \pmb b \in Z_p^n): P=\pmb g^{\pmb a}\pmb h^{\pmb b}∩ c = <\pmb a, \pmb b> \} { (ggg,hhhGn,PG,cZp;aaa,bbbZpn):P=gggaaahhhbbbc=<aaa,bbb>}
verifier:

​ 随机选取x和u,将x发送给prover,再将 P ‘ P^` P发送给prover。
P ‘ = P ⋅ u x ⋅ c P^` = P \cdot u^{x \cdot c} P=Puxc
协议2得到的输入是 ( g , h , u x , P ‘ ; a , b ) (\pmb g, \pmb h, u^x,P^`;\pmb a, \pmb b) (ggg,hhh,ux,P;aa

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值