Monero 是一种安全、不可追踪的电子现金。它是开源的、去中心化的,并且可供所有人免费使用。在这篇文章中,我们要来谈谈环签名概念。
在上一篇文章中,我们讨论了 Monero 隐形地址如何防止输出与收件人的公共地址相关联。这是通过使用一次性目标公钥来实现的。一次性公钥只能由收件人使用,并且只有收件人才能在区块链上检测到其指定的输出。由于所有输出都是不可链接的,因此可以确保收件人的隐私。
而在交易输入的这端,也就是付款者的隐私,则是通过使用环签名(ring signatures)来保护。
环签名与密钥镜像
环签名是一种数字签名,其中一组可能的签名者融合在一起以产生授权交易的独特签名。这类似于从联名银行账户签署支票,但实际签名者未知。数字签名由实际签名者和非签名者组成,形成一个“环”,其中所有成员都是平等且有效的。实际签名者是一次性支出密钥,与发送者钱包中支出的输出相对应。非签名者是从区块链中提取的过去交易输出,充当诱饵。这些输出共同构成交易的输入。对于第三方来说,所有输入似乎都同样可能是交易中支出的输出。此功能通过使所有输入彼此无法区分,帮助发送者隐藏交易的来源。
您现在可能会问自己:“如果第三方无法验证哪个输出被花费,那么如何防止某人重复花费相同的输出?”这个潜在问题可以通过使用密钥映像(key image)来解决。密钥映像是从被花费的输出派生的加密密钥,是每个环签名交易的一部分。区块链上的每个输出只能有一个密钥映像,但由于其加密属性,无法确定哪个输出创建了哪个密钥映像。区块链中维护了所有使用过的密钥映像的列表,使矿工能够验证没有输出被重复花费。
让我们通过一个例子来看看这一切是如何工作的。
环签名交易
Alice 想要将 Monero 发送给 Bob,其环大小(ringsize)值为 5。五个输入中的一个将来自 Alice 的钱包,该钱包将在交易中使用。其他四个输入是从区块链中任意挑选的,用作诱饵。这形成了一个由五个可能的签名者组成的组,其中所有环成员都可能是交易的实际签名者。对于外部观察者(包括 Bob 本人)来说,不清楚哪个输入真正由 Alice 的一次性支出密钥签名。但是,有了密钥映像,网络就可以安全地确认转给 Bob 的 Monero 之前没有被使用过。如您所见,通过使用环签名,Monero 通过隐藏输入来源来保护发送者的隐私,从而确保任何 Monero 的来源都无法追踪。
RingCT
为了提高双方的隐私,实施了环保密交易(通常称为 RingCT)来隐藏交易金额。RingCT 对环签名协议进行了一些改进。我们将在下一篇文章中详细讨论 RingCT。
如果您对门罗币成为领先的以隐私为中心的加密货币的原因感兴趣,请查看本站其他文章或访问 getmonero.org。