1. 引言
前序博客:
- Bulletproofs: Short Proofs for Confidential Transactions and More学习笔记
- Bulletproofs 代码解析
- Bulletproofs+: Shorter Proofs for Privacy-Enhanced Distributed Ledger学习笔记
- Bulletproofs+ 代码解析
Liam Eagen 2022年3月论文《Bulletproofs++》。
开源代码实现见:
- https://github.com/sanket1729/rust-bulletproofs-pp(Rust)
Bulletproofs++ 在 Bulletproofs 和 Bulletproofs+ 的基础上,实现了:
-
1)新的range proof:具有更短的proof size的同时,具有更短的witness length。
- 1.1)将(weighted)inner product协议修改为可证明norm relation——即self inner product,与此同时,仅需要对该vector commit一次。
- 1.2)借助norm relation argument,构建了a binary digit range proof,其witness length仅为 Bulletproofs和Bulletproofs+ 的一半。
- 1.3)借鉴由BG12论文派生的logarithmic permutation argument,以及本文的norm argument,构建了一组具有任意bases的range proof方案。
- 1.3.1)对于64 bit range proof:采用16个十六进制数字,reciprocal range proofs中包含10个曲线点和3个标量,其proof size对应Curve25519为416字节,对应SECP256k1为418字节。
该proof size比Bulletproofs+ 小约27%,比Bulletproofs小约38%。 - 1.3.2)witness length与Verification Complexity成比例,缩小了约6倍,随着range number的增加,可缩小约8倍。
- 1.3.1)对于64 bit range proof:采用16个十六进制数字,reciprocal range proofs中包含10个曲线点和3个标量,其proof size对应Curve25519为416字节,对应SECP256k1为418字节。
-
2)新的confidential transaction协议:支持多种currency类型。
使用permutation argument构建了支持多种currency类型的 zero knowledge confidential transaction protocol:- 采用one multiplication per input and per output,并支持多方证明,从而大大改进基于ring signature以及Bulletproof所构建的confidential transactions。
具体range proof证明性能对比为:
range proof验证性能对比为:
不同range proof的proof size对比为: