Co-authored-by: WooKey-Aurora <jack.zheng.md@hotmail.com> Co-authored-by: lwf <lwf@one.cafe> Co-authored-by: Muge Niu <mugeniu12138@gmail.com>
3.1 KiB
terms | summary | ||
---|---|---|---|
|
a new kind of range proofs replacing RingCT in transactions to obfuscate the amounts sent |
基础知识
引入环机密交易是为了混淆交易金额。@环机密交易的一个目标是证明@交易中的输入和输出之和为0,并且所有输出都是正数。
为了实现这个目标,构建了两种环签名:一个环签名为整个交易(证明输出之和为0);另一组环签名为交易单位的子集(为了证明所有输出都是正数),然后组合在一起,最初使用 Schnorr 签名(后来被 Borromean 环签名所取代)。
当它运行的时候,存在一个很大的缺点就是这种环机密交易的尺寸太大。
涉及到防弹协议
早在2017年,一个斯坦福应用加密小组写了一篇论文,提出了一种新的范围证明,称为防弹协议。
防弹证明是一种短的非交互式零知识证明,不需要可信的设置。
与 Borromean 或 Schnorr 签名不同,防弹协议作为范围证明非常高效。要证明一个大的数据集只需产生一个小的证明,而且这个证明的尺寸随着被证明数据的规模大小呈对数增长。
这意味着在一个交易中,增加输出的数量只会略微增加证明的大小。
防弹协议还具有这样一些优势,可以同时证明多个提交的数量在所需范围内。不需要分别证明每个输出到每个目标;整个交易金额可以被证明在一个更大的(但仍然非常小)防弹协议中。
彻底的审核过程及执行
由于防弹协议很新,而且小组制作的最初的实现虽然完成得很彻底,但是需要针对我们特定的用例进行重写,所以在门罗币中实现防弹协议并不是一件简单的事情。
代码被编写了一遍又一遍,以遵循仍在不断被开发的新版防弹程序,但是一旦这个门罗币实现被完成,就应该非常小心地进行部署。
因此,社区开始了审计过程。研究人员联系了本尼迪克特·邦茨(Benedikt Bunz),他是这篇防弹论文的主要作者,并联系了OSTIF,这是一个帮助开源技术改进和保护自身安全的组织。
OSTIF给小组,介绍了几个具备执行审计所需技能的组织。其中一个要求匿名,因此被排除在需要公开的过程之外,而另外两个(QuarksLab & Kudelski Security)被选中进行审计。
我们的3个审计员是由社区资助的,以检查该实现是否存在严重的bug,以及是否存在任何漏洞。
最终的报告是在2018年夏天发布的,并提出了几个有用的修正和修复建议,最终的防弹实现已经首先添加到门罗币的镜像主网,然后在2018年10月网络升级期间添加到门罗币的主网。
自从防弹协议部署以来,平均交易尺寸已经下降了至少80%,交易费用也因而大幅下降。
更多与门罗币的防弹协议实现有关的解释,可以在 youtube fondajo 频道上 与 Sarang Noether 的对话 当中找到。