比特币重复交易漏洞:历史案例与未来风险分析

robot
摘要生成中

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

比特币交易通常通过引用前一笔交易的ID来使用未花费的输出。这些输出只能被花费一次,否则就会导致双重支付问题。然而,比特币历史上确实出现过两组完全相同的交易。这种情况之所以可能发生,是因为coinbase交易没有输入,而是直接生成新币。因此,两个不同的coinbase交易有可能向同一地址发送相同数量的币,并以完全相同的方式构建,使它们完全一致。由于交易内容相同,它们的交易ID也就相同。

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

这两组重复交易都发生在2010年11月14日至15日之间,时间跨度约16小时。第一组重复交易d5d2....8599虽然先成为复制品,但在区块链上的首次出现反而晚于另一个重复交易e3bf....b468。

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

有趣的是,不同的区块浏览器在显示这些重复交易时会有不同的表现。有些默认显示较早的区块,有些则显示较晚的区块。

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

这些重复交易涉及的200 BTC至今仍未被花费。理论上拥有相关私钥的人可以花费这些比特币,但一旦被花费,重复的50 BTC就会丢失,因此实际可用的只有100 BTC。至于这些币被花费后会来自哪个区块,目前还无法确定。

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

重复交易显然会带来诸多问题。它们会给钱包和区块浏览器造成混乱,也会让人不清楚比特币的来源。更严重的是,它还可能被用于攻击交易所等机构。

为了解决这个问题,2012年3月实施了BIP30软分叉,禁止使用重复交易ID进行交易。2012年9月,这一规则又被扩展到适用于所有区块。

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

2013年3月激活的BIP34软分叉要求coinbase交易包含区块高度,这进一步解决了重复交易问题。因此,2015年11月比特币核心软件停止了BIP30检查。

然而,BIP34并非完美解决方案。在BIP34激活之前的一些区块中,coinbase交易的scriptSig第一个字节恰好与未来有效的区块高度匹配。这意味着仍有可能出现重复交易,下一个可能的区块是1,983,702,预计在2046年1月左右产生。

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

不过,利用这一漏洞的成本非常高。以区块1,983,702为例,矿工需要烧掉约170 BTC的费用,按当前价格计算约1500万美元。而且这些资金很可能无法收回。

考虑到复制交易的难度和成本,以及利用机会的稀少性,这个漏洞并不构成比特币的主要安全威胁。尽管如此,开发人员仍在努力寻求彻底修复这一问题的方法,可能需要通过软分叉来实现。

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

此页面可能包含第三方内容,仅供参考(非陈述/保证),不应被视为 Gate 认可其观点表述,也不得被视为财务或专业建议。详见声明
  • 赞赏
  • 6
  • 分享
评论
0/400
咖啡厅矿工vip
· 10小时前
协议多了也不见得更安全哦~
回复0
MEV猎人不看涨vip
· 07-18 00:45
这bug修得真无聊...
回复0
0x复利型人格vip
· 07-18 00:42
早年漏洞有一说一还挺怕人
回复0
screenshot_gainsvip
· 07-18 00:42
代码永远是个坑
回复0
fren_with_benefitsvip
· 07-18 00:34
开发爷们咋又闹幺蛾子~
回复0
RugPullSurvivorvip
· 07-18 00:27
奇怪 还有这种bug
回复0
交易,随时随地
qrCode
扫码下载 Gate APP
社群列表
简体中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)