內存池 Bug 導致 BCH 出現空交易區塊,P網已暫停存取款

這個問題可能是操作計數Bug,他們使用的是舊規則去驗證操作計數,而不是按照新規則來驗證的。

內存池 Bug 導致 BCH 出現空交易區塊,P網已暫停存取款

比特幣現金是目前全球排名第四的加密貨幣,市值超過60億美元,之前的全系統範圍升級(也被成為硬分叉)已經將比特幣現金(BCH)網絡分成了兩部分——但是現在,問題來了。

一位來自 Reddit 論壇用戶透露,由比特幣現金開發者團隊開發的軟件版本——Bitcoin ABC 中出現了一個代碼 Bug,該 Bug 很快影響到了與升級本身無關的比特幣現金內存池(mempool)。根據 BitMEX Research 的 Forkmonitor 工具披露的數據顯示,就在比特幣現金網絡在第 582,679 區塊嘗試升級到新軟件之後,發生了一次區塊鏈分裂(chain split)。

內存池 Bug 導致 BCH 出現空交易區塊,P網已暫停存取款

與比特幣區塊鏈類似,比特幣現金也要求礦工驗證交易之後才能將新區塊添加到區塊鏈上,內存池裡通常包含了等待礦工批准的比特幣現金區塊鏈上的所有待處理交易。Reddit 論壇用戶“FerriestaPatronum”解釋說:

“看起來,就在比特幣現金硬分叉之後,內存池接受規則中出現了一個小 Bug……從我目前的理解,這個問題可能是操作計數(operation count)Bug,他們依然使用的是舊規則去驗證操作計數,而不是按照新規則來驗證的。”

就在該漏洞出現之後,比特幣現金開發人員很快發佈了修復 Bug 的新代碼,根據 CoinDance 的數據和業內人士披露的信息顯示,在這個 Bug 修復之前,比特幣現金區塊鏈產生了一串空交易區塊。

Vin Armani 是比特幣現金應用程序 CoinText 首席技術官,他表示:

“大約在一個半小時之後,區塊被清空了。現在內存池沒問題了,而且交易也可以像以前那樣進入區塊,一起都恢復正常。”

不過截至本文撰寫時,我們仍然不清楚有多少節點(即運行 Bitcoin ABC 軟件的額計算機服務器)已經升級了修復 Bug 的軟件。為了修復這個問題,加密貨幣交易所 Poloniex 已經宣佈將暫停 Bitcoin ABC 提款和存款交易,該交易所在 Twitter 上發文稱:

“比特幣現金今天計劃的硬分叉有問題,因此我們將禁止 BCHABC 的存款和取款交易,直到另行通知為止。比特幣現金的核心開發人員正在努力解決問題,感謝您的耐心等待。”

還是中心化問題惹的禍?

根據挖礦及礦池運營區塊鏈初創公司 Navier 研發團隊透露,目前大多數比特幣現金礦工使用的都是 Bitcoin ABC 軟件,而不是像 Bitcoin Unlimited (BU) 這樣的其他比特幣現金軟件。

Navier 副總裁 David Steinberg 解釋說:

“大多數比特幣現金礦工使用的都是 Bitcoin ABC 客戶端,而不是 Bitcoin Unlimited,所以人們創建交易並將這些交易提交給內存池的速度比他們寫入一個區塊的速度更快,這導致大部分區塊都是空的。”

David Steinberg 同時強調,如果礦工可以嘗試使用不同的節點軟件,那麼就可以有效防止因為代碼出現 Bug 而導致區塊鏈網絡癱瘓的問題,他補充說道:

“擁有單一類型的節點是一種中心化的形式——你可以從自己選擇的節點類型中信任代碼庫,以保持按預期工作。理想狀況下,礦工其實可以嘗試選擇不同類型的節點軟件,防止類似這次 Bug 事件再次發生。”

David Steinberg 認為,在硬分叉期間使用一些特別受歡迎的軟件,其實是一件比較危險的事情。他最後總結說道:

“事實上,這個 Bug 出現的時間恰逢硬分叉,結果加劇了問題的嚴重性,因為通常來說,你必須要升級節點軟件才能參與分叉。對於正常的增量升級,並不是每個節點都會及時進行軟件更新,因此如果你嘗試使用不同的節點軟件,那麼這種問題可能只會影響到少數礦工。我認為這裡最大的問題是程序員也會犯錯,而且就算是去中心化系統,假設某個環節存在中心化問題——比如依賴單一的代碼庫,也會因為一個 Bug 導致網絡受到影響。”

原文作者:Christine Kim

Odaily 星球日報譯者:Moni

相關推薦

推薦中...