BulletProof的工作原理

BulletProof的工作原理

Building on BulletProof

Range Proof

我们要证明一个 statement(论述): 0 ≤ v < 2 n 0 \le v < 2^n 0v<2n

我们知道如果这个论述是真的话,那么 v v v 必须是一个 n n n 长度的二进制数。例如,如果 n = 4 n=4 n=4 并且 v = 3 v=3 v=3,那么 v v v 可以被分解为一个二进制数即 4 位长度。

在这里插入图片描述

我们想以内积的形式展示这个声明(claim),这是由于 BulletProof 推出的高效率的内积证明(inner product proof)。

首先,让我们定义 v 的比特形式为: V b i t s V_{bits} Vbits
在这里插入图片描述
如果 v b i t s v_{bits} vbits 的确是 v v v 的比特形式, v v v 必须与 v b i t s v_{bits} vbits 和 向量 2 n 2^n 2n 的内积相等, 2 n 2^n 2n 向量的展开为长度为 n n n ( 2 0 , 2 1 , . . . , 2 n − 1 ) (2^0, 2^1,...,2^{n-1}) (20,21,...,2n1)

此外,我们必须要确保 v b i t s v_{bits} vbits 的确是由 { 0 , 1 } \{0,1\} {0,1} 构成,不能出现其他数字:
在这里插入图片描述

V b i t s ∘ ( V b i t s − 1 n ) = 0 n V_{bits} \circ(V_{bits}-1^n)=0^n Vbits(Vbits1n)=0n 这个等式为什么能够检测其是否是由 0,1 组成?

例如 V b i t s = ( 0 , 0 , 1 , 1 ) V_{bits} = (0,0,1,1) Vbits=(0,0,1,1),那么 ( V b i t s − 1 n ) = ( − 1 , − 1 , 0 , 0 ) (V_{bits} - 1^n) = (-1,-1,0,0) (Vbits1n)=(1,1,0,0),那么这两个向量的内积必须是 0,如果 V b i t s V_{bits} Vbits 出现了 0,1 以外的元素,那么内积结果肯定不为 0。

之后,我们使用挑战标量结合这两个 statements,并且增加盲因子(blinding factors)。

Inner Product Proof

一个 Inner Product Proof 证明 c c c 是向量 a \mathbf{a} a b \mathbf{b} b 的内积,即: c = < a , b > c=<\mathbf{a,b}> c=<a,b>。那么一个向量内积表示为:

在这里插入图片描述

简单的版本:Prover 可以通过向 Verifier 发送 a \mathbf{a} a , b \mathbf{b} b 和 c,那么 Verifier 就可以通过计算 c = < a , b > c = <\mathbf{a},\mathbf{b}> c=<a,b> 来验证。然而,这会有 o ( n ) o(n) o(n) 的空间复杂度和 o ( n ) o(n) o(n) 的时间复杂度。 n n n a \mathbf{a} a , b \mathbf{b} b 的长度。但是,bulletproofs inner pruduct 为我们提供了 o(log n) 的空间复杂度。

bullet proof innner product 要求在向 Verifier 之前有 log(n) 的步骤,最后发送给 Verifier 的 a \mathbf{a} a b \mathbf{b} b 的长度都是 1。

在我们开始之前,我们可以将原始向量 a \mathbf{a} a b \mathbf{b} b 分为 hilo 两部分:

在这里插入图片描述

之后,我们得到一个挑战标量 x x x,并结合 hilo 来创建 a ′ \mathbf{a'} a b ′ \mathbf{b'} b,有 c ′ = < a ′ , b ′ > c'=<\mathbf{a'},\mathbf{b'}> c=<a,b>

在这里插入图片描述
我们对 c ′ \mathbf{c'} c 进行数学扩展,注意: c ′ \mathbf{c'} c 的两个元素 a ′ \mathbf{a'} a b ′ \mathbf{b'} b ,也可以划分为 hilo 两部分,因此我们可以简化 c ′ \mathbf{c'} c 表达式,并将其称为 LR

在这里插入图片描述
在每一轮中, Prover 发送 LR 给 Verifier,并且使用 a ′ , b ′ , c ′ \mathbf{a'},\mathbf{b'},\mathbf{c'} a,b,c 作为 a , b , c \mathbf{a},\mathbf{b},\mathbf{c} a,b,c。log n 轮过后,我们得到了我们最开始的假设, a ′ \mathbf{a'} a b ′ \mathbf{b'} b 的长度都为 1。然后,无需再进行任何压缩,Prover 可以将 a ′ , b ′ , c ′ \mathbf{a'},\mathbf{b'},\mathbf{c'} a,b,c 发送给 Verifier。

在这里插入图片描述

Verifier 现在拥有标量 a ′ , b ′ , c ′ \mathbf{a'},\mathbf{b'},\mathbf{c'} a,b,c 和每一步产生的 LR,Verifier 可以反转整个过程,他可以通过验证 c ′ = a ′ ∗ b ′ c' = a' * b' c=ab。Verifier 可以通过每一步产生的 c ′ \mathbf{c'} c, L, R 来验证 c \mathbf{c} c,直到完成所有步骤的检查。

链接
Bulletproofs: Short proofs for confidential transactions and more
Building on Bulletproofs
innner product notes

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据题目要求,我们可以设计如下的类和接口: 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 接口,具备了开门、关门、防盗、防水和防弹的功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值