什么是 Bulletproofs?
Bulletproofs 是一种简短的证明,允许你在不透露具体金额的情况下证明该金额是有效的。可以把它想像成用一个写着“21 岁或以上”的魔法印章向门卫证明你的年龄,同时遮住出生日期。高效、低调,并且对隐蔽余额很有用。
“Bulletproofs 隐藏一切。” 并不完全正确。它们隐藏的是金额,而不是地址或时间,而且任何人仍然可以验证正确性。
Bulletproofs 的工作原理
想像发送加密货币时金额被隐藏但仍可证明合法。下面是简要流程。
- 步骤 1:你创建一个 交易,其中金额被锁在密码学承诺里,就像密封的盒子。
- 步骤 2:你生成一个 Bulletproofs,声明“每个密封金额都在有效范围内且不为负。” 这是一个 零知识证明,因此你只透露正确性,而不泄露其他信息。
- 步骤 3:如果有多个输出,你可以把它们合并成一个紧凑的证明。链上数据更少,你需要支付的费用也更低。
- 步骤 4:验证者快速检查该证明。无需查看金额,只需通过数学校验即可。
- 步骤 5:一旦验证通过,网络接受该转移并继续处理。过程安静且简洁。
这就是全部流程。
为什么 Bulletproofs 很重要
你会关心它,因为这在保持资金细节私密的同时仍然可以被验证。
- 好处:比旧的范围证明要小得多,这通常意味着更低的费用和更少的数据膨胀。
- 视角:强烈的 隐私 正在成为链上金融的基本要求,而 Bulletproofs 有助于实现这一点。
- 相关性:你会在保密转账、侧链、一些钱包以及研究级别的 rollups 中看到它的应用。
比较系统时?检查它们使用的是 Bulletproofs 还是 zk SNARKs。Bulletproofs 不需要可信初始化,而 SNARKs 体积更小但可能需要这样的初始化。
Bulletproofs 的关键特性
让它们突出的一些点:
- 紧凑:证明大小大致随范围的对数增长,而不是线性增长。
- 无需初始化:不存在生成系统密钥的可信仪式。
- 可聚合:多个输出可以共享一个证明,进一步缩减数据。
- 快速验证:校验速度快,验证者可以批量处理。
- 通用:基于内积论证,因此它可以扩展到范围检查以外的用途。
变体
你可能会看到的不同类型:
- 范围:经典证明,表明金额位于安全区间内。
- 聚合:将若干范围证明合并为一个紧凑对象。
- 批量:验证者将多份证明一同检查以节省时间。
- 广义:使用 Bulletproofs 的内积技巧来处理其他语句的电路。
Bulletproofs 隐藏的是金额,而不是谁发送或何时发送。若想更深层的保护,项目会将它们与地址屏蔽或网络机制配合使用。
示例
Monero 在 2018 年采用了 Bulletproofs 用于保密金额,这大幅降低了典型手续费并加快了验证速度。
有趣的事实
“Bulletproofs” 这个名字来自作者希望得到一种既短小又强健的方案。Benedikt Bunz 等人在 2018 年发表的论文迅速在加密社区中流行起来。
总结
简短结论:Bulletproofs 让你在隐藏具体数值的同时证明这些数值是有效的。像劳力士遇见 Reddit 讨论。
