比特币重复交易漏洞解析:历史成因、潜在风险与未来挑战

比特币重复交易现象:一个罕见的系统缺陷

概述

比特币交易通常通过引用前一笔交易的ID来使用未花费的输出。这些输出只能被花费一次,否则就会出现双重支付问题。然而,比特币系统中确实存在两组完全相同的交易。这种情况之所以发生,是因为coinbase交易没有输入,而是直接生成新币。因此,两个不同的coinbase交易有可能发送相同数量到相同地址,构建方式完全一致,从而产生相同的交易ID。除此之外,交易ID重复的唯一可能是哈希碰撞,但这在当前的加密技术下几乎不可能发生。

这两组重复交易发生在2010年11月14日至15日之间,跨度约16小时。第一组重复交易(d5d2....8599)夹在第二组之间,尽管它在区块链上首次出现时间较晚。

比特币的重复交易:一个风险极小的有趣Bug

重复交易详情

区块浏览器显示,第一个重复交易在两个不同区块中重复出现。不同的区块浏览器在显示这些重复交易时存在一些差异,有的默认显示较早的区块,有的则显示较晚的区块。

在涉及的四个区块中,只有一个区块(91,812)包含了其他交易,将1 BTC和19 BTC合并成了20 BTC。

比特币的重复交易:一个风险极小的有趣Bug

重复输出的处理

由于存在两组相同的交易ID,这些重复交易总共涉及200 BTC,或者可以理解为100 BTC。截至目前,这200 BTC都未被花费。理论上,拥有相关私钥的人可以花费这些比特币,但一旦被花费,重复的50 BTC将无法使用并丢失,因此实际上只有100 BTC可能被找回。至于这些币被花费后会从哪个区块中扣除,目前还无法确定。

比特币的重复交易:一个风险极小的有趣Bug

重复交易的问题

重复交易会给钱包和区块浏览器带来混乱,也会模糊比特币的来源。它还可能被用于攻击,例如用两笔重复交易向某人支付两次,但实际上只有一半的资金可用。这可能被用来攻击交易所,试图使其资金出现差错。

比特币的重复交易:一个风险极小的有趣Bug

解决方案

为了解决重复交易问题,2012年3月实施了BIP30软分叉,禁止使用重复交易ID,除非前一个交易已被花费。同年9月,这一规则被进一步修改,适用于所有区块。

2013年3月,BIP34软分叉要求coinbase交易包含区块高度,这基本上解决了重复交易问题。此后,节点停止了BIP30检查,因为这种昂贵的检查不再必要。

比特币的重复交易:一个风险极小的有趣Bug

潜在的未来问题

尽管BIP34解决了大部分问题,但在其激活前的一些区块中,coinbase交易的scriptSig第一个字节恰好与未来有效的区块高度匹配。这意味着在未来某些特定区块高度时,仍有可能出现重复交易。

下一个可能出现重复交易的区块是1,983,702,预计将在2046年1月左右产生。利用这个漏洞需要矿工花费大量资金,按当前比特币价格计算可能超过1500万美元,而且几乎没有实际收益。

之后的潜在风险区块是169985,预计在2078年可能被复制。同样,利用这个漏洞的成本也可能非常高。

结论

考虑到复制交易的难度、成本以及利用机会的稀少,这个漏洞并不构成比特币的主要安全威胁。尽管如此,开发人员仍在努力寻找解决方案,可能需要通过软分叉来最终修复这个问题。一种可能的方法是强制执行SegWit承诺。

比特币的重复交易:一个风险极小的有趣Bug

此页面可能包含第三方内容,仅供参考(非陈述/保证),不应被视为 Gate 认可其观点表述,也不得被视为财务或专业建议。详见声明
  • 赞赏
  • 4
  • 分享
评论
0/400
rugpull_survivorvip
· 19小时前
看这bug不错!我等穷人也就这点乐趣了
回复0
佛系链上人vip
· 19小时前
这挖矿bug都13年了 记得当时没睡觉看这事儿
回复0
无常损失资深哲学家vip
· 19小时前
这漏洞也太早了点叭?
回复0
ser_we_are_ngmivip
· 19小时前
2010的bug... 真是币圈黑暗史了
回复0
交易,随时随地
qrCode
扫码下载 Gate APP
社群列表
简体中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)