比特幣歷史上的重復交易漏洞:成因、影響與未來風險分析

robot
摘要生成中

比特幣中的重復交易:一個有趣而低風險的缺陷

概述

比特幣交易通常通過引用前一筆交易的ID來使用未花費的輸出。這些輸出只能使用一次,否則會導致雙重支付問題。然而,比特幣歷史上確實出現過兩組完全相同的交易。這種情況之所以可能發生,是因爲coinbase交易沒有輸入,而是直接產生新幣。因此,兩個不同的coinbase交易有可能發送相同數量到相同地址,構建方式完全相同,從而生成相同的交易ID。

這兩組重復交易發生在2010年11月14日至15日之間,時間跨度約16小時。第一組重復交易的ID爲d5d2....8599,盡管它在區塊鏈上首次出現時間晚於另一個重復交易e3bf....b468。

比特幣的重復交易:一個風險極小的有趣Bug

重復交易詳情

這兩組重復交易分別出現在四個不同的區塊中。區塊瀏覽器在顯示這些交易時會有不同的默認行爲,有些會顯示較早的區塊,有些則顯示較晚的區塊。

在這四個相關區塊中,只有一個區塊(91,812)包含了其他交易,將1 BTC和19 BTC合並成了一個20 BTC的輸出。

比特幣的重復交易:一個風險極小的有趣Bug

這些輸出是否可以使用?

每個重復交易的價值爲50 BTC,總共涉及200 BTC(或100 BTC,取決於理解方式)。截至目前,這200 BTC都未被使用。理論上,擁有相關私鑰的人可以使用這些比特幣,但一旦使用,重復的50 BTC將無法再次使用並丟失,因此實際上只有100 BTC可能被找回。

比特幣的重復交易:一個風險極小的有趣Bug

重復交易的問題

重復交易會給錢包和區塊瀏覽器帶來混亂,也會導致比特幣來源不明確。它還可能被用於一些攻擊和漏洞利用,比如對交易所進行欺騙性存款。

解決方案

爲了解決重復交易問題,2012年3月實施了BIP30軟分叉,禁止使用重復交易ID,除非前一個交易已被使用。同年9月,這一規則被進一步修改,適用於所有區塊。

2013年3月,BIP34軟分叉要求coinbase交易包含區塊高度,這實際上解決了重復交易問題。此後,比特幣核心軟件停止了BIP30檢查,因爲它不再必要。

比特幣的重復交易:一個風險極小的有趣Bug

潛在的未來問題

盡管BIP34解決了大部分問題,但在BIP34激活之前的一些區塊中,coinbase交易的scriptSig第一個字節恰好與未來的有效區塊高度匹配。這意味着在未來某些特定區塊高度上,仍然有可能出現重復交易。

下一個可能出現重復交易的區塊是1,983,702,預計在2046年1月左右產生。但是,利用這個漏洞的成本非常高,需要燒掉大量比特幣,而且對攻擊者幾乎沒有實際好處。

比特幣的重復交易:一個風險極小的有趣Bug

結論

考慮到復制交易的難度、成本以及利用機會的稀少性,這個漏洞並不構成比特幣的主要安全威脅。然而,由於其獨特性和長期存在的可能性,它仍然是一個有趣的技術問題。開發者們可能會在2046年之前尋求徹底解決這個問題,可能通過軟分叉來實現。一種潛在的解決方案是強制執行SegWit承諾。

比特幣的重復交易:一個風險極小的有趣Bug

BTC-0.51%
查看原文
此頁面可能包含第三方內容,僅供參考(非陳述或保證),不應被視為 Gate 認可其觀點表述,也不得被視為財務或專業建議。詳見聲明
  • 讚賞
  • 2
  • 分享
留言
0/400
智能钱包vip
· 07-22 07:33
链上数据从不说谎,97%风险已被BIP34锁定.
回復0
AltcoinOraclevip
· 07-22 07:28
令人着迷的是协议如何演变……我的专有指标显示实际利用的概率为0.0021%,说实话
查看原文回復0
交易,隨時隨地
qrCode
掃碼下載 Gate APP
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)