monero-site/_i18n/zh-cn/resources/moneropedia/bulletproofs.md
erciccione 7575e6d8e1
Adopt versioning system used in the User Guides to keep track of the translation status of the Moneropedia entries
- Removed the 'untranslated.html' snippet (_includes/untranslated.html). Since now we are using 'disclaimer.html' everywhere
- Replaced the old snippet with the new disclaimer (introduced with #966) in all Moneropedia entries
- Add snippet where it was missing
- Updated instructions in the README
2020-10-04 15:00:43 +02:00

3.2 KiB
Raw Blame History

terms summary
bulletproofs
bulletproof
a new kind of range proofs replacing RingCT in transactions to obfuscate the amounts sent

{% include disclaimer.html translated="yes" translationOutdated="no" %}

基础知识

引入环机密交易是为了混淆交易金额。@环机密交易的一个目标是证明@交易中的输入和输出之和为0并且所有输出都是正数。

为了实现这个目标,构建了两种环签名:一个环签名为整个交易(证明输出之和为0);另一组环签名为交易单位的子集(为了证明所有输出都是正数),然后组合在一起,最初使用 Schnorr 签名(后来被 Borromean 环签名所取代)。

当它运行的时候,存在一个很大的缺点就是这种环机密交易的尺寸太大。

涉及到防弹协议

早在2017年一个斯坦福应用加密小组写了一篇论文,提出了一种新的范围证明,称为防弹协议。

防弹证明是一种短的非交互式零知识证明,不需要可信的设置。

与 Borromean 或 Schnorr 签名不同,防弹协议作为范围证明非常高效。要证明一个大的数据集只需产生一个小的证明,而且这个证明的尺寸随着被证明数据的规模大小呈对数增长。

这意味着在一个交易中,增加输出的数量只会略微增加证明的大小。

防弹协议还具有这样一些优势,可以同时证明多个提交的数量在所需范围内。不需要分别证明每个输出到每个目标;整个交易金额可以被证明在一个更大的(但仍然非常小)防弹协议中。

彻底的审核过程及执行

由于防弹协议很新,而且小组制作的最初的实现虽然完成得很彻底,但是需要针对我们特定的用例进行重写,所以在门罗币中实现防弹协议并不是一件简单的事情。

代码被编写了一遍又一遍,以遵循仍在不断被开发的新版防弹程序,但是一旦这个门罗币实现被完成,就应该非常小心地进行部署。

因此,社区开始了审计过程。研究人员联系了本尼迪克特·邦茨(Benedikt Bunz),他是这篇防弹论文的主要作者,并联系了OSTIF,这是一个帮助开源技术改进和保护自身安全的组织。

OSTIF给小组介绍了几个具备执行审计所需技能的组织。其中一个要求匿名因此被排除在需要公开的过程之外而另外两个(QuarksLab & Kudelski Security)被选中进行审计。

我们的3个审计员是由社区资助的以检查该实现是否存在严重的bug以及是否存在任何漏洞。

最终的报告是在2018年夏天发布的并提出了几个有用的修正和修复建议最终的防弹实现已经首先添加到门罗币的镜像主网然后在2018年10月网络升级期间添加到门罗币的主网。

自从防弹协议部署以来平均交易尺寸已经下降了至少80%,交易费用也因而大幅下降。

更多与门罗币的防弹协议实现有关的解释,可以在 youtube fondajo 频道上 与 Sarang Noether 的对话 当中找到。