# 比特币交易复制现象:一个低风险但有趣的特殊情况比特币交易通常通过引用前一笔交易的ID来使用未花费输出。这些输出只能被使用一次,否则会导致双重支付问题。然而,比特币系统中存在两组完全相同的交易。这种情况之所以发生,是因为coinbase交易没有输入,而是产生新币。因此,两个不同的coinbase交易有可能发送相同金额到相同地址,构建方式也完全一致,从而产生完全相同的交易。由于交易内容相同,它们的交易ID也会匹配,因为交易ID是交易数据的哈希值。除非发生哈希碰撞,否则不可能出现重复的交易ID,而哈希碰撞在比特币或其他任何系统中都从未发生过。这两组重复交易发生在2010年11月14日至15日之间,时间跨度约16小时。第一组重复交易(d5d2....8599)虽然在区块链上晚于另一组出现,但被视为首个复制品。从区块浏览器截图可以看到,第一个重复交易在两个不同区块中重复出现。有趣的是,不同区块浏览器在显示这些重复交易时的默认行为不同。在相关的四个区块中,只有一个区块包含了其他交易。这些重复交易涉及的比特币总额为200 BTC,但实际上只有100 BTC是真实存在的。截至目前,这200 BTC都未被使用。理论上,如果有人拥有相关私钥,可能可以使用这些比特币。但一旦使用,重复的50 BTC将无法再次使用。至于使用时会从哪个区块中扣除,可能是不确定的。重复交易会给钱包和区块浏览器带来混乱,也可能被用于欺诈攻击。为了解决这个问题,2012年3月实施了BIP30软分叉,禁止使用重复交易ID,除非前一个交易已被使用。同年9月,这一规则被进一步修改,适用于所有区块,但保留了最初的两个重复交易作为例外。2013年3月激活的BIP34要求coinbase交易包含区块高度,这在很大程度上解决了重复交易问题。然而,在BIP34激活前的一些区块中,coinbase交易的scriptSig第一个字节恰好与未来有效的区块高度匹配,这意味着仍存在潜在的重复可能性。下一个可能出现重复交易的区块是1,983,702,预计在2046年1月左右产生。利用这个漏洞的成本非常高,可能超过1500万美元,而且对攻击者几乎没有实际好处。之后的潜在漏洞区块要到2078年才会出现。考虑到利用这个漏洞的难度和成本,以及机会的稀少性,重复交易问题并不构成比特币的主要安全威胁。然而,考虑到涉及的时间跨度和问题的独特性,这仍然是一个引人思考的话题。比特币开发者们可能会在2046年之前寻求彻底解决这个问题,可能需要通过软分叉来实现。一种可能的解决方案是强制执行SegWit承诺。
比特币历史上的罕见重复交易:未来潜在风险与解决方案探讨
比特币交易复制现象:一个低风险但有趣的特殊情况
比特币交易通常通过引用前一笔交易的ID来使用未花费输出。这些输出只能被使用一次,否则会导致双重支付问题。然而,比特币系统中存在两组完全相同的交易。这种情况之所以发生,是因为coinbase交易没有输入,而是产生新币。因此,两个不同的coinbase交易有可能发送相同金额到相同地址,构建方式也完全一致,从而产生完全相同的交易。由于交易内容相同,它们的交易ID也会匹配,因为交易ID是交易数据的哈希值。除非发生哈希碰撞,否则不可能出现重复的交易ID,而哈希碰撞在比特币或其他任何系统中都从未发生过。
这两组重复交易发生在2010年11月14日至15日之间,时间跨度约16小时。第一组重复交易(d5d2....8599)虽然在区块链上晚于另一组出现,但被视为首个复制品。
从区块浏览器截图可以看到,第一个重复交易在两个不同区块中重复出现。有趣的是,不同区块浏览器在显示这些重复交易时的默认行为不同。在相关的四个区块中,只有一个区块包含了其他交易。
这些重复交易涉及的比特币总额为200 BTC,但实际上只有100 BTC是真实存在的。截至目前,这200 BTC都未被使用。理论上,如果有人拥有相关私钥,可能可以使用这些比特币。但一旦使用,重复的50 BTC将无法再次使用。至于使用时会从哪个区块中扣除,可能是不确定的。
重复交易会给钱包和区块浏览器带来混乱,也可能被用于欺诈攻击。为了解决这个问题,2012年3月实施了BIP30软分叉,禁止使用重复交易ID,除非前一个交易已被使用。同年9月,这一规则被进一步修改,适用于所有区块,但保留了最初的两个重复交易作为例外。
2013年3月激活的BIP34要求coinbase交易包含区块高度,这在很大程度上解决了重复交易问题。然而,在BIP34激活前的一些区块中,coinbase交易的scriptSig第一个字节恰好与未来有效的区块高度匹配,这意味着仍存在潜在的重复可能性。
下一个可能出现重复交易的区块是1,983,702,预计在2046年1月左右产生。利用这个漏洞的成本非常高,可能超过1500万美元,而且对攻击者几乎没有实际好处。之后的潜在漏洞区块要到2078年才会出现。
考虑到利用这个漏洞的难度和成本,以及机会的稀少性,重复交易问题并不构成比特币的主要安全威胁。然而,考虑到涉及的时间跨度和问题的独特性,这仍然是一个引人思考的话题。比特币开发者们可能会在2046年之前寻求彻底解决这个问题,可能需要通过软分叉来实现。一种可能的解决方案是强制执行SegWit承诺。