零知识范围证明要求证明者向验证者证明某个秘密值 v 落在区间 [0, 2n-1] 内,却不能泄露 v 的任何其他信息。Bulletproofs 方案通过将 v 拆分成若干个比特位,利用向量的内积约束等价地描述这一范围条件,再借助一种高效的内积论证协议,使得最终证明的尺寸仅为 O(log n) 个群元素,验证计算量也远低于早期的 Borromean 环签名方案。整个过程无需任何可信初始化阶段,完全基于标准离散对数假设,因此非常适合部署在去中心化环境中。

一、内积论证与范围约束的桥梁
范围证明的起点是 Pedersen 承诺。选定循环群 G 的生成元 g, h,证明者要对秘密值 v 计算承诺 V = gvhr,其中 r 是随机致盲因子。要证明 v ∈ [0, 2n-1],可以将 v 表示为 n 位的二进制向量 aL ∈ {0,1}n,使得 < aL, 2n > = v,这里 2n 表示各分量依次为 1,2,4,...,2n-1 的向量。同时,定义 aR = aL - 1n,那么 aL 的每一位非 0 即 1 这一事实等价于 aL ∘ aR = 0n,其中 ∘ 表示 Hadamard 乘积(逐元素相乘)。Bulletproofs 的设计核心就是把这三个条件翻译成内积形式的等式,从而将任意的范围证明统一归约到内积论证问题上。
具体而言,证明者引入额外的随机挑战 y, z,将 v 的比特序列和承诺随机性进行绑定的同时,把二进制约束 aL ∘ aR = 0 与内积 <aL,2n> = v 整合成单一的多项式恒等式 P(x) = t(x)。这个多项式 t(x) 的常数项与 v 线性相关,而高次项系数则可通过对 aL, aR 的盲化向量 sL, sR 进行承诺来隐藏。最终,证明者需要向验证者证明自己知道两个向量 l, r,使得它们的内积 <l,r> 等于某个公开值,同时已为 l 和 r 分别生成了承诺。这正是 Bulletproofs 内积论证所要解决的形式化问题。
二、内积论证的递归压缩过程
传统的内积证明需要通过逐位展开向量来实现,其证明长度与向量维度 n 成正比。Bulletproofs 利用一种巧妙的折半递归技术,将证明尺寸压缩到 O(log n)。假设证明者拥有 n 维向量 a 和 b,其承诺 P = gahbu<a,b>,想证明自己确实知道满足该承诺的向量。证明者将 a 和 b 均分为两半 aL, aR 和 bL, bR,计算 L = g[:n/2]aR·g[n/2:]aL·h[:n/2]bR·h[n/2:]bL·u<aL,bR>+<aR,bL> 和对称的 R。验证者发送随机挑战 x,双方将向量压缩为 a' = aL·x + aR·x-1、b' = bL·x-1 + bR·x,并更新承诺 P' = Lx2·P·Rx-2。一轮交互后,向量维度减半,而验证者只需多保留两个群元素 L 和 R。经过 log2 n 轮后,向量退化到长度为 1,证明者只需直接发送最后的标量 a, b,验证者再按递归路径回推验证即可。
在范围证明的完整协议中,上述递归内积论证被封装成一个非交互式子协议,利用 Fiat-Shamir 变换将验证者的随机挑战替换为哈希函数的输出。为了同时证明 aL, aR 的比特约束,协议在生成内积证明前,会先将所有盲化向量用多项式承诺包装起来,使得验证者可以在回顾证明时通过一个简洁的配对检查确认 Hadamard 乘积条件成立。整个过程的证明规模由几个对数阶的群元素决定:除了原始的 V 承诺外,只需额外提供约 2log2 n + 3 个点,对于 n=64 的典型场景,证明大小仅为几百字节,远小于基于环签名的线性尺寸方案。
三、在非交互式设置下的批量优化
Bulletproofs 天然支持批量验证,这使得它在区块链等高频应用场景中极具吸引力。假设有 m 个独立的需要进行范围证明的秘密值,按照朴素做法需要生成 m 份独立的证明,总大小为 m·O(log n)。然而,通过共享递归内积论证中的公共生成元和随机挑战,可以将这 m 个证明的验证过程合并为一次多指数运算。具体来说,验证者收到 m 组 (Li, Ri, ai, bi) 后,可以将所有递归轮次的等式加权组合成一个单一的等式,仅需要计算一个多标量乘法(multi-exponentiation)就能同时检验全部 m 份证明的正确性。批量验证的计算复杂度从 O(m·n) 降至 O(m + n),当 m 很大时,平均每笔证明的验证开销接近于常数。
此外,当需要证明的秘密值构成一个向量且范围相同时,可以使用聚合范围证明进一步压缩。证明者可以将多个秘密值打包进同一个承诺,并对整个向量的每一位构造对应的内积约束,最终只生成一份内积论证。这意味着在机密交易中,一笔交易可能包含多个输入和输出金额,如果它们都使用同一种资产,则所有金额的范围证明可以聚合成一个体积几乎不变的小证明,显著减少区块链存储和带宽消耗。这种聚合能力源自 Bulletproofs 的线性同态特性,也是其在实际匿名加密货币(如 Monero)中得到广泛应用的重要原因。
四、安全假设与应用边界
Bulletproofs 的安全性建立在离散对数问题的困难性以及随机预言机模型的假设之上。由于不需要公共参考串的可信生成,避免了 Parameter Generation Ceremony 这种容易被攻击的环节,也消除了长期秘密被泄露后所有证明失效的风险。不过,实现中仍需谨慎选择椭圆曲线和哈希函数,并防止侧信道攻击。在实际工程中,往往使用 Ristretto 这类压缩点表示来避免群元素的小子群攻击,同时利用 dalek-cryptography 这样的密码学库获得恒时实现。
应用边界方面,Bulletproofs 更适用于 n 较小(如 n ≤ 64)的范围证明场景,因为证明大小与 log n 线性增长,当 n 很大时,虽然仍是对数级,但递归轮次增加会带来计算开销。对于需要证明秘密值在极大范围内的情形,可考虑将范围拆分成多个小范围组合,或改用其他零知识证明方案如 Plonky2、Halo2 等。但就纯粹的区间证明需求而言,Bulletproofs 凭借无预设、短证明、可批量的综合优势,仍然是机密交易、去中心化身份、可验证凭证等系统的首选工具。理解其向量内积与递归压缩的设计哲学,也有助于进一步掌握更复杂的通用零知识证明系统。
Bulletproofs范围证明零知识证明修改时间:2026-08-12 12:13:08