比特幣重複交易:一項風險極低的有趣失誤


比特幣網絡中出現過兩組重複交易,這種情況雖然罕見,卻可能導致雙重支付和混亂。重複交易產生於2010年,涉及到50BTC的交易。儘管這些重複交易的風險較小,但由於存在引用問題,可能引發更多攻擊。為了解決這一問題,比特幣開發者在多次更新中提出了BIP30和BIP34軟分叉,後者要求coinbase交易包含區塊高度,從而確保交易唯一性。儘管大部分問題得以解決,但仍存在一些潛在的重複交易風險。整體來看,該問題尚未成為比特幣的主要安全隱患。

概述

一個正常的比特幣交易通過引用前一筆交易的交易ID(txid)來使用至少一個前一筆交易的輸出。這些未花費的輸出只能被花費一次,如果它們可以被花費兩次,你就可以對比特幣進行雙重支付,使比特幣變得毫無價值。然而,在比特幣中實際上恰好存在兩組完全相同的交易。這種情況之所以可能發生,是因為coinbase交易沒有任何交易輸入

這兩組重複交易都發生在相近的時間內,2010年11月14日08:37 UTC至1010年11月11月15日00:38utc之間,跨度約16小時。第一組重複交易被夾在第二組之間。我們將d5d2….8599歸類為第一個重複交易

重複交易詳情

在下面的圖片中,可以看到來自mempool.space區塊瀏覽器的兩個截圖,顯示了第一個重複交易在兩個不同區塊中重複出現的情況。 ,顯示了第一個重複交易在兩個不同區塊中重複出現的情況。

比特幣的重複交易:一個風險極小的有趣錯誤

比特幣的重複交易:一個風險極小的有趣錯誤

有趣的是,當在網絡瀏覽器中輸入相關網址時

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

這些輸出可以被花費嗎?

由於存在兩組相同的txid,這為後續交易創造了引用問題。每個重複交易的價值為50btc。因此,這些重複交易總共4 x 50 btc = 200 btc = 200 btc,或者根據不同的理解方式,可能涉及2x 50 btc = a100 btc = a100 btc。在某種程度上,有100btc實際上並不存在。截至今天,所有200btc實際上並不存在。截至今天,所有200btc 都未被花費。據我們所知(我們可能在這裡是錯誤的) BTC可能被找回。至於如果這些幣被花費,它們將來自哪個區塊,是較早的還是最近的,這可能是未定義的或無法確定的。 ,這可能是未定義的或無法確定的。

這個人本可以在創建重複交易之前花費所有比特幣,然後創建重複輸出,在未花費輸出的數據庫中創建新條目。這將意味著不僅有重複交易,還有可能有重複的已花費輸出的重複交易。如果發生這種情況,當這些輸出被花費時,將可能創建更多的重複交易

重複交易的問題

重複交易顯然是不好的。它們會給錢包和區塊瀏覽器帶來混亂,也會讓人不清楚比特幣的來源。它還會帶來許多攻擊和漏洞。例如,你可以用兩筆重複的交易支付某人兩次。然後,當交易方決定嘗試使用這筆資金時,他們可能會發現只有一半的資金可以收回。例如,這可以是對交易所的攻擊

禁止使用重複txid的交易

為了緩解重複交易問題,2012年2月,比特幣開發者pieter wuille提出了bip30軟分叉方案,禁止使用重複txid進行交易

2012年9月,比特幣開發者麥克斯韋,使

這種bip30檢查的計算成本很高。節點需要檢查新區塊中的所有交易輸出,並檢查這些輸出端點是否已存在於utxo中。這可能就是wuille只對未使用的輸出進行檢查的原因,如果對所有輸出都進行檢查,計算成本會更高,而且無法進行剪枝。 ,而且無法進行剪枝。

BIP34

2012年7月7日,比特幣開發者加文-安德森(-gavin andresen)提出了bip34軟分叉方案,2013年3月3月激活。這一協議變更要求coinbase交易包含區塊高度交易包含區塊高度03開頭。這次軟分叉似乎徹底解決了重複交易問題,現在所有交易都應該是唯一的。

Bip34,2015年11月,Alex Morcos(Alex Morcos),向比特幣核心軟件倉庫添加了一個拉取請求

區塊,983,702問題

事實證明,在bip34激活之前的區塊中有一些coinbase交易,scriptsigs的第一個字節恰好與未來有效的區塊高度相匹配。因此,雖然bip34確實在幾乎所有情況下都修復了這個問題,但它並不是一個完全的100%修復。 2018年,比特幣開發者約翰,約翰·紐伯里(John Newbery),打印出了這些潛在重複的完整列表

比特幣的重複交易:一個風險極小的有趣錯誤

比特幣的重複交易:一個風險極小的有趣錯誤

*注:2012年2017年Coinbase交易並非重複。 209921 個區塊(距離第一次減半僅差79個區塊)

來源:https://gist.github.com/jnewbery/df0a98f3d2fea52e487001bf2b9ef1fd

Coinbase交易數量

比特幣的重複交易:一個風險極小的有趣錯誤

來源:https://gist.github.com/jnewbery/df0a98f3d2fea52e487001bf2b9ef1fd

因此,下一個可能出現重複交易的區塊是,下一個可能出現重複交易的區塊是1,983,702,將於2046年1月左右產生。 2012年1月產生的1月產生的164,384區塊中的共同基礎交易向七個不同的輸出地址發送了170btc。因此,如果2046年的礦工想要進行這次攻擊1500年萬美元。至於,2012年,目前還不得而知,密鑰很有可能已經丟失。目前,coinbase交易的所有七個輸出地址都已被使用

2012年3月169985 coinbase只花費了剛剛超過50btc,遠遠低於170btc。當然,50 btc是當時的補貼,而當這一coinbase交易在2078年變得容易被重複時,補貼就會低得多。因此,補貼就會低得多。因此,要利用這一點

自2017年segwit升級以來,coinbase交易也可以包含對一個區塊中所有交易的承諾。這些bip34之前的區塊並不包含見證承諾。因此,要產生一個重複的coinbase交易

結論

考慮到復制交易的難度和成本,以及利用它的機會非常罕見,這個複制交易漏洞並不像是比特幣的一個主要安全問題。不過,考慮到所涉及的時間尺度和重複交易的新穎性,想想還是挺有意思的。儘管如此,多年來開發人員還是在這個問題上花費了大量時間

資訊來源:由0x資訊編譯自互聯網。版權歸作者所有,未經許可,不得轉載

Total
0
Shares
Related Posts