比特幣重復交易漏洞解析:歷史成因、潛在風險與未來挑戰

比特幣重復交易現象:一個罕見的系統缺陷

概述

比特幣交易通常通過引用前一筆交易的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 认可其观点表述,也不得被视为财务或专业建议。详见声明
  • 讚賞
  • 5
  • 分享
留言
0/400
rugpull_survivorvip
· 10小時前
看这bug不错!我等穷人也就这点乐趣了
回復0
佛系链上人vip
· 10小時前
这挖矿bug都13年了 记得当时没睡觉看这事儿
回復0
无常损失资深哲学家vip
· 10小時前
这漏洞也太早了点叭?
回復0
ser_we_are_ngmivip
· 10小時前
2010的bug... 真是币圈黑暗史了
回復0
交易,隨時隨地
qrCode
掃碼下載 Gate APP
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)