🎉 Gate xStocks 交易開啓啦,現貨、合約、Alpha齊上線!
📝 在Gate廣場發帖,曬出你的交易體驗或精彩截圖,瓜分$1,000大獎池!
🎁 廣場優質創作者5名,每人獨享$100合約體驗券!
🎉 帖文同步分享到X(推特),瀏覽量前十再得$50獎勵!
參與方式:
1️⃣ 關注 @Gate廣場_Official
2️⃣ 帶 #Gate xStocks 交易体验# ,原創發帖(不少於20字,僅用活動標籤)
3️⃣ 若分享到推特,請將連結提交表單:https://www.gate.com/questionnaire/6854
注:表單可多次提交,發布更多帖文可提升獲獎機會!
📅 7月3日16:00—7月9日24:00(UTC+8)
詳情:https://www.gate.com/announcements/article/45926
每一條體驗,都有機會贏取大獎!快在Gate廣場show出你的操作吧!
比特幣重復交易漏洞解析:歷史成因、潛在風險與未來挑戰
比特幣重復交易現象:一個罕見的系統缺陷
概述
比特幣交易通常通過引用前一筆交易的ID來使用未花費的輸出。這些輸出只能被花費一次,否則就會出現雙重支付問題。然而,比特幣系統中確實存在兩組完全相同的交易。這種情況之所以發生,是因爲coinbase交易沒有輸入,而是直接生成新幣。因此,兩個不同的coinbase交易有可能發送相同數量到相同地址,構建方式完全一致,從而產生相同的交易ID。除此之外,交易ID重復的唯一可能是哈希碰撞,但這在當前的加密技術下幾乎不可能發生。
這兩組重復交易發生在2010年11月14日至15日之間,跨度約16小時。第一組重復交易(d5d2....8599)夾在第二組之間,盡管它在區塊鏈上首次出現時間較晚。
重復交易詳情
區塊瀏覽器顯示,第一個重復交易在兩個不同區塊中重復出現。不同的區塊瀏覽器在顯示這些重復交易時存在一些差異,有的默認顯示較早的區塊,有的則顯示較晚的區塊。
在涉及的四個區塊中,只有一個區塊(91,812)包含了其他交易,將1 BTC和19 BTC合並成了20 BTC。
重復輸出的處理
由於存在兩組相同的交易ID,這些重復交易總共涉及200 BTC,或者可以理解爲100 BTC。截至目前,這200 BTC都未被花費。理論上,擁有相關私鑰的人可以花費這些比特幣,但一旦被花費,重復的50 BTC將無法使用並丟失,因此實際上只有100 BTC可能被找回。至於這些幣被花費後會從哪個區塊中扣除,目前還無法確定。
重復交易的問題
重復交易會給錢包和區塊瀏覽器帶來混亂,也會模糊比特幣的來源。它還可能被用於攻擊,例如用兩筆重復交易向某人支付兩次,但實際上只有一半的資金可用。這可能被用來攻擊交易所,試圖使其資金出現差錯。
解決方案
爲了解決重復交易問題,2012年3月實施了BIP30軟分叉,禁止使用重復交易ID,除非前一個交易已被花費。同年9月,這一規則被進一步修改,適用於所有區塊。
2013年3月,BIP34軟分叉要求coinbase交易包含區塊高度,這基本上解決了重復交易問題。此後,節點停止了BIP30檢查,因爲這種昂貴的檢查不再必要。
潛在的未來問題
盡管BIP34解決了大部分問題,但在其激活前的一些區塊中,coinbase交易的scriptSig第一個字節恰好與未來有效的區塊高度匹配。這意味着在未來某些特定區塊高度時,仍有可能出現重復交易。
下一個可能出現重復交易的區塊是1,983,702,預計將在2046年1月左右產生。利用這個漏洞需要礦工花費大量資金,按當前比特幣價格計算可能超過1500萬美元,而且幾乎沒有實際收益。
之後的潛在風險區塊是169985,預計在2078年可能被復制。同樣,利用這個漏洞的成本也可能非常高。
結論
考慮到復制交易的難度、成本以及利用機會的稀少,這個漏洞並不構成比特幣的主要安全威脅。盡管如此,開發人員仍在努力尋找解決方案,可能需要通過軟分叉來最終修復這個問題。一種可能的方法是強制執行SegWit承諾。