关于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
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
根据题目要求,我们可以设计如下的类和接口: 1. 抽象类 Door:拥有开门和关门的共性方法 openDoor() 和 closeDoor()。 ```java public abstract class Door { public abstract void openDoor(); public abstract void closeDoor(); } ``` 2. 接口 TheftProof:定义防盗功能 theftProof()。 ```java public interface TheftProof { void theftProof(); } ``` 3. 接口 Waterproof:定义防水功能 waterproof()。 ```java public interface Waterproof { void waterproof(); } ``` 4. 接口 Bulletproof:定义防弹功能 bulletproof()。 ```java public interface Bulletproof { void bulletproof(); } ``` 5. 综合门类 ComprehensiveDoor:继承 Door 抽象类,并实现 TheftProof、WaterproofBulletproof 接口。 ```java public class ComprehensiveDoor extends Door implements TheftProof, Waterproof, Bulletproof { @Override public void openDoor() { // 打开门的具体实现 System.out.println("打开综合门"); } @Override public void closeDoor() { // 关闭门的具体实现 System.out.println("关闭综合门"); } @Override public void theftProof() { // 防盗功能的具体实现 System.out.println("综合门具备防盗功能"); } @Override public void waterproof() { // 防水功能的具体实现 System.out.println("综合门具备防水功能"); } @Override public void bulletproof() { // 防弹功能的具体实现 System.out.println("综合门具备防弹功能"); } } ``` 这样,我们就设计了一个具备继承、抽象类和接口的门系统。综合门类 ComprehensiveDoor 继承了 Door 抽象类,并实现了 TheftProof、WaterproofBulletproof 接口,具备了开门、关门、防盗、防水和防弹的功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值