😱 比特幣末日預言?重複交易幽靈重現倒計時!
比特幣的陰暗面:被複製的交易與潛在的危機
看似正常的交易,實則隱藏的漏洞?
比特幣,這個被譽為去中心化革命的先鋒,真的像我們想像的那樣堅不可摧嗎? 答案可能並非如此 однозначно. 在比特幣看似完美的區塊鏈架構中,隱藏著一個不為人知的秘密:重複交易。 想像一下,你花費了大量的時間和金錢,挖出了一枚閃閃發光的比特幣。 結果卻發現,有人複製了你的交易,並且還能花費同樣的幣! 這聽起來像是科幻小說的情節,但它卻是真實存在於比特幣歷史中的一個漏洞。 當然,這並不是說比特幣馬上就要崩潰了。 但這個漏洞的存在,就像是牆上的一道裂縫,提醒我們即使是最先進的技術,也可能存在意想不到的瑕疵。 我們需要做的,不是無視它,而是正視它,理解它,並且找到修復它的方法。 畢竟,只有認清了風險,才能更好地保護我們的數字資產。
重蹈覆轍:兩組驚人的重複交易
Coinbase交易的特殊性:漏洞的根源
要理解重複交易的奧秘,首先要了解Coinbase交易的特殊地位。 想像一下,礦工們辛勤工作,驗證交易,維護網絡的安全。 作為獎勵,他們可以獲得新產生的比特幣。 這些新幣的來源,就是Coinbase交易。 與普通交易不同,Coinbase交易沒有輸入(inputs),因為它是憑空創造出來的。 正是這種獨特性,為重複交易的出現埋下了伏筆。 因為缺乏輸入,不同的Coinbase交易有可能產生完全相同的輸出,從而導致TXID的衝突。
哈希碰撞?別想了!
你可能會想,如果TXID是交易數據的哈希摘要,那麼要複製TXID,豈不是需要破解SHA256哈希算法? 簡而言之,是的。 但在現實世界中,這幾乎是不可能的。 哈希碰撞的難度,堪比大海撈針,即使是擁有超級計算機的國家級黑客,也難以做到。 因此,我們可以排除哈希碰撞的可能性。 重複交易的出現,並非由於算法的缺陷,而是由於Coinbase交易的特殊性質。
時間線:重複交易的幽靈出沒
2010年11月14日,比特幣網絡經歷了一場小小的震盪。 在短短16個小時內,兩組完全相同的交易浮出水面。 它們就像是雙胞胎,擁有相同的基因,相同的命運。 第一組重複交易,編號為d5d2….8599,像個害羞的孩子,躲在了第二組交易的身後。 儘管它實際上更早被複製,但在區塊鏈上的首次露面卻晚於它的“兄弟”e3bf….b468。 這段歷史,充滿了謎團,也充滿了警示。
追蹤幽靈交易:瀏覽器的不同演繹
瀏覽器大亂鬥:誰能準確呈現真相?
當我們試圖追蹤這些幽靈般的重複交易時,區塊瀏覽器,就像是我們手中的羅盤。 但令人困惑的是,不同的瀏覽器,卻給出了不同的答案。 例如,當你輸入d5d2….8599的TXID時,mempool.space會默認顯示較早的區塊。 而對於e3bf….b468,它卻又選擇了較晚的區塊。 Blockstream.info和Btcscan.org也與mempool.space保持了一致的步調。 這讓人不禁懷疑,它們是否受到了某種神秘力量的操縱? 另一方面,Blockchain.com和Blockchair.com則顯得更加果斷。 無論你輸入哪個TXID,它們總是會展示最新的版本。 這種差異,不僅讓人感到困惑,也引發了對數據一致性的質疑。 究竟哪個瀏覽器才是真相的守護者?
孤獨的區塊:91,812的秘密
在包含重複交易的四個區塊中,只有一個區塊,編號為91,812,還容納了其他的交易。 這個區塊就像是一個孤獨的舞者,在眾多區塊中獨樹一幟。 它將1 BTC和19 BTC的輸出合併成了一個20 BTC的輸出。 這筆交易看似普通,但它卻與重複交易的幽靈產生了交集。 這是否意味著,它也受到了某種詛咒? 我們不得而知。
潘朵拉的盒子:被複製的比特幣能否花費?
理論上的無限可能:重複交易的無限延伸?
由於存在兩組相同的TXID,一個令人不安的問題浮出水面:這些被複製的比特幣,到底能不能花費? 想像一下,你手握一把鑰匙,可以打開兩個一模一樣的保險箱。 每個保險箱裡都存放著50 BTC。 這意味著,你總共掌握了200 BTC的控制權。 或者,從另一個角度來看,你只擁有100 BTC,因為另外100 BTC只存在於虛擬世界中。 截至今日,所有200 BTC都靜靜地躺在區塊鏈上,等待著被喚醒。 理論上,如果有人掌握了與這些輸出相關聯的私鑰,他們就可以花費這些比特幣。 但是,一旦其中一個UTXO被花費,它將會從數據庫中被移除。 這就意味著,重複的50 BTC將永遠消失,只有100 BTC能夠被找回。 至於花費的幣來自哪個區塊,是較早的還是較晚的,這仍然是一個未解之謎。
風險警示:玩火者必自焚
更令人膽寒的是,如果有人在創建重複交易之前,就已經花費了所有的比特幣,然後又創建了重複的輸出,那會發生什麼? 這將會在UTXO數據庫中創建新的條目,導致不僅存在重複交易,還可能存在重複的已花費輸出的重複交易! 如果這種情況真的發生,那麼當這些輸出被花費時,將會創建更多的重複交易,形成一條無盡的重複鏈。 這就像是打開了潘朵拉的盒子,釋放出了無數的惡魔。 幸運的是,這種噩夢般的場景從未發生過。 但它也提醒我們,在比特幣的世界裡,一舉一動都可能產生意想不到的後果。
重複交易:擾亂秩序的元兇
混亂的源頭:錢包和區塊瀏覽器的噩夢
重複交易,就像是混入清澈泉水中的一滴墨水,污染了整個比特幣生態系統。 它們會給錢包和區塊瀏覽器帶來混亂,讓用戶難以分辨比特幣的真實來源。 想像一下,你的錢包裡顯示有100 BTC,但實際上只有50 BTC是真實存在的。 這種不確定性,會讓人感到不安,甚至恐慌。 更糟糕的是,重複交易還會帶來一系列的安全隱患。
雙重支付的誘惑:針對交易所的潛在攻擊
重複交易,為心懷不軌之人打開了方便之門。 他們可以利用重複交易進行雙重支付,從而獲取不正當的利益。 例如,一個狡猾的攻擊者可以用兩筆重複的交易,向同一個人支付兩次。 然後,當受害者試圖使用這些資金時,他們會發現只有一半的資金可以被提取。 這對交易所來說,是一個巨大的威脅。 攻擊者可以通過這種方式,在存款後立即提取資金,從而使交易所破產,而自己卻毫髮無損。 這種攻擊,不僅會損害交易所的利益,也會動搖整個比特幣社區的信心。
亡羊補牢:BIP30軟分叉的救贖之路
Pieter Wuille的遠見卓識:亡羊補牢,猶未晚矣?
面對重複交易的威脅,比特幣社區並沒有坐以待斃。 2012年2月,一位名叫Pieter Wuille的比特幣開發者,提出了BIP30軟分叉方案。 這個方案就像是一劑強心針,旨在阻止使用重複TXID進行交易,除非之前的TXID已經被花費。 簡單來說,就是禁止“舊瓶裝新酒”。 這項措施,有效地降低了重複交易的風險,為比特幣網絡的安全,增加了一道防線。
Greg Maxwell的進擊:更嚴格的安全防護
同年9月,另一位比特幣開發者,Greg Maxwell,對BIP30規則進行了修改。 他將BIP30檢查的適用範圍,擴大到了所有區塊,而不僅僅是2012年3月15日之後的區塊。 這一舉措,堵住了一些潛在的漏洞,進一步加強了比特幣網絡的安全。 從技術上講,這也是一次軟分叉。 但由於規則變更只適用於過去6個月以上的區塊,因此它不存在與正常協議規則變更相關的任何風險。
高昂的代價:BIP30檢查的計算成本
BIP30檢查,就像是一位盡職盡責的門衛,時刻守護著比特幣網絡的安全。 但這位門衛,卻是一位耗能大戶。 節點需要檢查新區塊中的所有交易輸出,並確認這些輸出端點是否已經存在於UTXO中。 這種檢查,需要大量的計算資源。 這可能就是Wuille最初只對未使用的輸出進行檢查的原因。 如果對所有輸出都進行檢查,計算成本將會更高,而且無法進行剪枝。
BIP34:看似完美的謝幕?
Gavin Andresen的貢獻:區塊高度的強制要求
為了徹底根除重複交易的隱患,2012年7月,比特幣開發者Gavin Andresen提出了BIP34軟分叉方案,並於2013年3月正式激活。 這個方案的核心思想是,強制要求Coinbase交易包含區塊高度。 就像是在每一筆Coinbase交易上,都蓋上一個獨一無二的時間戳。 這一舉措,不僅使得區塊版本管理成為可能,也為解決重複交易問題,提供了一個釜底抽薪的方案。 具體來說,區塊高度被添加為幣基交易腳本Sig的第一項。 Coinbase scriptSig中的第一個字節,代表區塊高度數字所使用的字節數,接下來的字節,就是區塊高度數字本身。 對於最初的160年(223 /(每天144個區塊 * 每年365天)),第一個字節應該為0x03。 這就是為什麼如今的Coinbase ScriptSig(HEX)總是以03開頭。
真的高枕無憂了嗎?BIP34的局限性
BIP34的實施,就像是一場及時雨,有效地緩解了重複交易的威脅。 但它真的徹底解決了這個問題嗎? 答案可能並非如此 однозначно. 儘管BIP34在絕大多數情況下都起到了作用,但它並不是一個完美的解決方案。 在BIP34激活之前的某些區塊中,存在一些Coinbase交易,它們使用的scriptSigs的第一個字節,恰好與未來有效的區塊高度相匹配。 這就像是歷史開的一個玩笑,讓重複交易的幽靈,有了再次出現的機會。
歷史的塵埃:被遺忘的硬分叉?
Alex Morcos的精簡:移除BIP30檢查的爭議
時間來到2015年11月,比特幣開發者Alex Morcos向比特幣核心軟件倉庫提交了一個拉取請求,建議移除BIP30檢查。 他的理由是,既然BIP34已經修復了重複交易的問題,那麼這種昂貴的檢查就變得多餘了。 這個提議,就像是一顆投入平靜湖面的石子,激起了一陣漣漪。 儘管當時並沒有引起太多的關注,但事後來看,這項更改,實際上為未來可能出現的極端情況,埋下了一顆定時炸彈。 從技術上講,這是一次硬分叉。
技術債務:潛藏的風險
事實證明,移除BIP30檢查,是一個有風險的決定。 儘管當時幾乎沒有人運行2015年11月之前的節點軟件,但這意味著,如果未來出現符合特定條件的區塊,那些運行舊版本節點的用戶,可能會與網絡的其他部分發生分歧。 這就像是積累了一筆技術債務,在平時可能看不出任何問題,但一旦遇到特殊情況,就會爆發出來。 為了防止這種情況發生,一些人仍然堅持運行包含BIP30檢查的舊版本節點,就像是在黑暗中點燃一盞燈,守護著比特幣網絡的安全。 例如,在forkmonitor.info,我們運行的就是2015年10月發布的Bitcoin Core 0.10.3。 因此,我們仍然在進行昂貴的BIP30檢查,以防萬一。
區塊1,983,702:定時炸彈還是杞人憂天?
John Newbery的警示:潛在重複交易的清單
2018年,比特幣開發者John Newbery打印出了一份完整的清單,列出了所有潛在的重複Coinbase交易,就像是一位警惕的哨兵,向我們發出了預警。
2046年的末日預言?攻擊成本的考量
這份清單中最令人不安的,莫過於區塊1,983,702。 按照目前的區塊生成速度,這個區塊將會在2046年1月左右被挖出。 這意味著,在20多年後,重複交易的幽靈,可能會再次浮出水面。 但是,要利用這個漏洞,並非易事。 2012年1月產生的164,384區塊中的Coinbase交易,向七個不同的輸出地址發送了170 BTC。 因此,如果2046年的礦工想要發起攻擊,他們不僅需要足夠幸運地找到這個區塊,還需要燒掉不到170 BTC的費用。 總成本略高於170 BTC,其中包括0.09765625 BTC區塊補貼的機會成本。 按照目前88500美元的比特幣價格計算,這將花費超過1500萬美元。 這無疑是一筆巨大的開銷。
誰是幕後黑手?失落的私鑰與龐氏騙局的陰影
更令人好奇的是,2012年Coinbase交易的七個地址,究竟歸誰所有? 這些私鑰,是否還安全地保存著? 有沒有可能,它們已經永遠丟失了? 目前,該Coinbase交易的所有七個輸出地址都已被使用,其中三個在同一筆交易中使用。 我們認為這些資金可能與Pirate40龐氏騙局有關,但這只是我們的推測。 如果真的是這樣,那麼發起攻擊的成本,將會更加高昂。 因為這不僅需要燒掉1500萬美元的費用,還需要面對龐氏騙局受害者的怒火。 因此,這次攻擊看起來不僅代價高昂,而且對攻擊者來說幾乎毫無用處。 要在硬分叉中將31年前的2015年11月節點從網絡中刪除,這將是一筆不小的开支。
2078:下一個潛在的危機點?
誘人的誘餌:50 BTC的陷阱?
在John Newbery的清單中,除了區塊1,983,702,還有一個區塊值得我們關注:區塊169985,它產生於2012年3月。 這個Coinbase交易只花費了剛剛超過50 BTC,遠遠低於170 BTC。 這意味著,如果有人想要利用這個漏洞,所需付出的代價,將會相對較低。
SegWit的阻礙:額外的攻擊成本
當然,50 BTC是當時的區塊獎勵。 當這個Coinbase交易在2078年變得容易被複製時,區塊獎勵將會遠低於50 BTC。 因此,要利用這個漏洞,礦工將需要燒掉大約50 BTC的費用,而這些費用,他們是無法收回的,因為它們必須發送到2012年的舊輸出中。 誰也不知道2078年比特幣的價格會是多少,但這種攻擊的成本,也可能高得嚇人。 此外,自2017年SegWit升級以來,Coinbase交易還可以包含對一個區塊中所有交易的承諾。 這些BIP34之前的區塊,並不包含見證承諾。 因此,要產生一個重複的Coinbase交易,礦工需要從區塊中排除任何SegWit輸出贖回交易。 這進一步增加了攻擊的機會成本,因為區塊可能無法包含許多其他支付費用的交易。 這就像是在設置了一個陷阱的同時,也增加了觸發陷阱的難度。
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。
