LocalMonero will be winding down
- Effective immediately, all new signups and ad postings are disabled;
- On May 14th, 2024, new trades will be disabled as well;
- After November 7th, 2024, the website will be taken down. Please reclaim any funds from your arbitration bond wallet prior to that date, otherwise the funds may be considered abandoned/forfeited.
RingCT环形机密技术是如何隐藏门罗币交易的金额
加密货币如果只靠一种技术保护隐私,那么一旦这个技术被破解,则该币的隐私安全就会崩坏,因此门罗币并不是靠单一机制,而是通过三种可以协同工作的技术,共同完成隐私保护,这样做的好处是在提高整体私密性的同时也弥补了单一技术的缺点. 这种三管齐下的方法由ring signatures环形签名技术, RingCT环形机密技术, 以及 stealth addresses隐身地址技术. 这三种技术分别隐藏了实际的输出,也就是发送者,交易金额和接收者. 今天我们将重点讨论RingCT环形机密技术.
包括防弹协议在内广义上的RingCT环形机密技术,可以说是门罗币三大加密技术里最先进的,并且可能是最难理解的,因此我们将不去讨论它的确切原理,而是在逻辑层面说明如何在不知道某个确定量的前提下,仍旧可以对其进行确认. 读者不用担心,我们将一如既往地使用比喻和例子帮助大家理解.
首先,让我们先探讨一下,为什么转帐金额验证是十分必要的. 大家有没有思考过,完全黑箱操作的危害是什么,其实答案很简单,如果转帐金额不被第三方验证的话,只要有机会,很多人可以利用某些漏洞和方法凭空赚钱. 让我们通过一个例子来看一下某些人的小聪明.
如果你想从你的朋友那里购买一件商品,而他商品的售价为十美元,假设交易开始前你正好有十美元,而他只有那件商品,他手里一分钱也没有. 那么当交易结束的时候,由于你给了他十美元,所以他的余额变成了十美元,而你的余额变成零. 这个过程里一共只有10美元,此交易未创建或销毁任何资金.
而在加密货币世界里,当买家支付了10美元购买商品时,另一个本来余额为零的卖家,凭空超发或者强行找零给买家2美元,他们的账本就和之前不同了. 现在双方的余额不再是一方0美元和另一方10美元,而是一方10美元和另一方2美元, 交易前两人总余额为10美元,现在两人总和变成了12美元,凭空捏造出两美元.你可以想象,如果重复这样做,他们将能够在短时间内积聚巨额财富.
使用比特币和其他透明的币,这其实很容易看到. 用户可以通过查看交易双方的转入和转出,确保买家有足够的钱支付,不凭空捏造,收款方也老老实实接受,不会额外记账或者超额找零. 可是如果买卖双方的交易金额已加密且不可见,则其它用户和节点将无法直接验证买家所支付的金额和卖家收到的金额是否一致.
为了增加比特币的隐私性,Gregory Maxwell发明创造了Confidential Transactions缩写为CT,机密交易技术,这是一种交易金额完全隐蔽的新技术,同时可以证明在交易过程中没有人凭空增发或销毁任何加密货币.与大多数保护隐私技术一样,它没有被比特币采纳,但是门罗币热衷于实现它. 而在当时有一个问题,该技术和环签名技术并不兼容. 因此,当时的一名MRL门罗币实验室研究人员,Shen Noether将CT机密交易技术修改为RingCT,也就是与环签名技术兼容的门罗币版本.
再一次重申,这种验证的实现方式是非常技术性的,只在介绍为主的科普文章中很难解释其中科学逻辑和代码实现. 好在对于刨根问底的加密术爱好者,网上有大量深入的文章介绍了CT的内部工作原理的论文可以深入研究. 对于其他普通人,本文将简单说明机密交易是如何在交易金额隐秘的情况下,仍可以证明没有增发或者销毁任何币的.
假设爱丽丝想转帐给鲍勃. 爱丽丝将向鲍勃发送10 门罗币,鲍勃将收到10 门罗币. 转帐前后余额为10,所以这里没有错. 但是爱丽丝不想让任何人知道她到底发送了多少币. 因此,她和鲍勃创建了一个只有两个人知道的秘密数字.假设共享数字是22. 现在,爱丽丝将10门罗币,也就是她实际转帐的数字,乘以22得到220,220就是她与网络节点共享的数字.
矿工和节点并不知道秘密数字是22. 如果他们知道双方秘密是22,他们是可以将220除以秘密数字22,然后获得实际发送的金额10门罗币. 但是由于他们并不知道,因此他们并不能知道双方到底转帐多少钱. 但他们会看到鲍勃将获得220,而爱丽丝也发送了220.交易前后金额相等,220 =220.通过这种方式,网络可以在不知道Alice发送Bob的真实数量的情况下,验证没有创建或销毁任何的门罗币.
因为Bob知道共享的秘密号码是22,所以当他收到钱时,他只用金额220,除以22,就得到Alice发送的真实金额10门罗币.而Alice和Bob都知道发送了多少,收到了多少,而其他人都只能观测到一串错误的数字.这里译者再添加另一个例子帮助大家理解,假设爱丽丝给了鲍勃10美元,由10个硬币和3张纸币组成,那么节点只去验证,鲍勃是否收到了这10个硬币和三张钞票,具体面额并不知道,只有当事人知道,节点只负责确认转帐前后还是这10个硬币和3张钞票,没有人增发也没有人销毁.
再一次,再一次重申,这并不是CT技术的实际工作方式,本文只是给出了一个比较好理解的例子. 真正的方式涉及诸如Pedersen彼德森承诺,发送者会发送两个转帐量,一个加密量发送给接收方,一个承诺量发送给网络节点,以及……好吧,还是不要继续说了,是的,其实写到这里很多读者已经看晕了.
但是要注意的另一件事是,尽管RingCT确实隐藏了交易中两方之间的交易金额,但它并未隐藏另外两组数字.
首先是coinbase金额,这里的coinbase不是指那个交易所,而是中文翻译成币基的加密货币概念. 也许你不熟悉此术语,它的基本含义就是矿工打包某个区块所获得的爆块奖励. 爆块奖励并没有乘以一个秘密数字,任何人都可以看到每个块矿工的的奖励到底是多少.通过这种方式,可以将所有coinbase交易相加来知道现有的门罗币总量,他们的总和将等于当前流通的门罗币.
第二个未隐藏的数字是用户发送交易时愿意支付给矿工的费用. 矿工费必须公开,以便矿工们可以知道应该优先处理哪些转帐. 这其实是损害用户隐私的一种潜在方式,如果某人每次发送交易时使用的矿工费都一样,例如0.12345,则也可能被关联其交易.
除此之外,RingCT环形机密技术,自2017年1月以来一直在隐藏门罗币主链上的其它一切交易金额,我们的集体隐私也因为它而更加强大.
