原文标题:《Bitcoin’s Duplicate Transactions》原文来源:BitMEX Research
在比特币区块链中存在两组完全相同的交易,一组交易「夹住」了另一组交易,它们都发生在 2010 年 11 月中旬。重复交易可能会导致混乱,比特币开发者多年来一直通过各种方式与之作斗争。这个问题仍未 100% 解决,下一个潜在的重复交易可能会在 2046 年出现。尽管与重复交易相关的风险现在已经很小,但这是一个值得思考的有趣怪异 bug。

来源:https://gist.github.com/jnewbery/df0a98f3d2fea52e487001bf2b9ef1fd
因此,下一个可能出现重复交易的区块是 1,983,702,将于 2046 年 1 月左右产生。2012 年 1 月产生的 164,384 区块中的 Coinbase 交易向七个不同的输出地址发送了 170 BTC。因此,如果 2046 年的矿工想要进行这次攻击,他们不仅需要足够幸运地找到这个区块,还需要烧掉不到 170 BTC 的费用,总成本略高于 170 BTC,其中包括 0.09765625 BTC 区块补贴的机会成本。
按照目前 88500 美元的比特币价格计算,这将花费超过 1500 万美元。至于 2012 年币库交易的七个地址归谁所有,目前还不得而知,密钥很有可能已经丢失。目前,该 Coinbase 交易的所有七个输出地址都已被使用,其中三个在同一笔交易中使用。我们认为这些资金可能与 Pirate40 庞氏骗局有关,但这只是我们的推测。因此,这次攻击看起来不仅代价高昂,而且对攻击者来说几乎毫无用处。要在硬分叉中将 31 年前的 2015 年 11 月节点从网络中删除,这将是一笔不小的开支。
下一个可能被复制的脆弱区块是 2012 年 3 月的 169985。这个 Coinbase 只花费了刚刚超过 50 BTC,远远低于 170 BTC。当然,50 BTC 是当时的补贴,而当这一 Coinbase 交易在 2078 年变得容易被重复时,补贴就会低得多。因此,要利用这一点,矿工将需要烧掉大约 50 BTC 的费用,而这些费用他们是拿不回来的,因为这些费用必须发送到 2012 年的旧产出中。谁也不知道 2078 年比特币的价格会是多少,但这种攻击的成本也可能高得吓人。因此,这个问题可能不是比特币的主要风险,但仍然令人担忧。
自 2017 年 SegWit 升级以来,Coinbase 交易也可以包含对一个区块中所有交易的承诺。这些 BIP34 之前的区块并不包含见证承诺。因此,要产生一个重复的 Coinbase 交易,矿工需要从区块中排除任何 SegWit 输出赎回交易,这进一步增加了攻击的机会成本,因为区块可能无法包含许多其他支付费用的交易。
结论
考虑到复制交易的难度和成本,以及利用它的机会非常罕见,这个复制交易漏洞并不像是比特币的一个主要安全问题。不过,考虑到所涉及的时间尺度和重复交易的新颖性,想想还是挺有意思的。尽管如此,多年来开发人员还是在这个问题上花费了大量时间,2046 年这个日期在一些开发人员心中可能是修复这个问题的最后期限。修复这个错误的方法有很多,可能需要软叉。一种可能的修复方法是强制执行 SegWit 承诺。
