外匯天眼APP訊 : 8月3日,ETC官方推特公佈了區塊鏈數據分析公司Bitquery針對ETC遭受51%攻擊事件的調查報告。

報告顯示,8月1日0:30-8月2日11:30,ETC遭受51%攻擊。

此次攻擊由一個獨立礦工“0x75d1e5477f1fdaad6e0e3d433ab69b08c482f14e”發起。該礦工悄悄產出了3594個區塊,隨後一併廣播給其他礦工,由於這些區塊數量衆多,區塊順序比其他礦工所建立的鏈佔有更大權重,致使其他礦工不得不接受這一系列區塊,最終攻擊者區塊成功取代了原有區塊,從區塊高度10904146到10907740區塊發生重組。

而鏈上數據表明,該名礦工故意從外部購買了哈希算力以發起攻擊,且該礦工地址自7月29日才顯示爲活躍狀態,連續3天每天生成30個區塊。最終該攻擊者僅花費了17.5 BTC(約合17萬美元)欺騙整個ETC網絡12個小時,成功實施攻擊。

此外,由於在ETC網絡中,並非所有由節點和礦工運行的軟件都具有相同的行爲,節點版本和軟件的多樣性使得此次攻擊更加嚴重:

基於Geth和 Hyperledger Besu兩個客戶端的節點接受攻擊者的區塊並選擇最長的分叉鏈;

基於Open Ethereum客戶端的節點仍保留舊的鏈。而這些都導致有些礦工基於舊鏈轉賬,但在主要的ETC鏈(分叉鏈)上並未反映,而基於不同客戶端的節點可能面臨雙花。

據相關機構的調查,其具體過程如下:

1. 惡意礦工(ETC地址:0x75d1e5477f1fdaad6e0e3d433ab69b08c482f14e)挖掘了約3000個區塊。

2. 2Miners礦池由於Multi-geth結束對Ethereum classic的支持而短暫下線進行維護。

3. 當2Miners礦池維護的這段時間內,2Miners礦池並沒有產生新的區塊。在2Miners礦池結束維護上線後,約3000個區塊同時被 插入到2Miners礦池中。

由於Ethereum Classic上所有的Parity或者OpenEthereum節點都無法處理這3693個來自Core-Geth節點的區塊,因此就出現了鏈分叉:

所有的Parity或者OpenEthereum節點上的礦工都依舊在原始主鏈上進行挖掘,但是在Core-Geth節點的礦工就在被 插入約3000個區塊的新鏈上挖掘。

5. 根據工作證明(POW)共識,在新鏈上的工作量會逐漸超過原始主鏈,在原始主鏈上Parity節點的一些礦工根據會“選擇在更多工作量的鏈上進行挖掘”的準則,轉移到新鏈上進行挖掘。

最終,在區塊高度10904146處,總共3693個區塊被通過重組(reorgnization)的方式被加入到區塊鏈中。

通過兩個機構的調查和信息公佈,很明顯的原因有2個,一是因爲近期的客戶端支持問題,二是攻擊者恰恰利用了這一點。

不同的客戶端代表着不同的接入角色,礦工既是網絡維護方,也是數據的產生者,這意味着,如果在客戶端提供一些不正確的數據時,被其他節點同步,也就是攻擊的開始。

上文中的攻擊者利用礦池節點的重新上線時機,將準備好的區塊數據讓礦池誤以爲是正確記賬數據而繼續廣播。而因爲Parity、OpenEthereum、Core-Geth客戶端礦工的“不和”,對不同數據的同步不一致,因此,將導致分叉。

此次的攻擊的源頭是客戶端的混亂,而這件事的成因已醞釀久矣。

據此前報道,2020年1月25日,ETC Cooperative執行董事Bob Summerwill近期宣佈擴展對ECIP-0001提案的支持,提案中一些變化包括,剔除Rust開發者Wei Tang。

Bob Summerwill指控稱,Wei Tang作爲ECIP編輯者和ECIP-1000作者,多次濫用職權,威脅要軟分叉或是離開ETC生態系統。

此外,由於在ECIP-1000的編輯器列表中使用soc1c的真實姓名代替了soc1c,ETC社區中還有聲音指責稱Wei Tang對社區另一位ECIP編輯soc1c人肉搜索。

對此,Wei Tang於博 客中解釋事件緣由,並回應稱,對於所涉及的提案要求作出更改等是出於避免ETC過於集中化的考慮。不過後期爭議實際轉移到了自己身上。同時Wei Tang表示並沒有所謂的人肉soc1c事實。因爲此前合併編輯者列表時,soc1c本人已同意,且soc1c真實姓名在社區中廣爲人知,且其本人也經常使用自己的真實姓名。

據悉,該爭議事件起於ECBP-1076提案。由於覺得首次在ETC會議上提出並一次性接受ECBP-1076提案,以及ECIP編輯將ECBP-1065提案狀態更改爲“活動”的做法不謹慎,因此Wei Tang要求進行更多討論,但遭soc1c拒絕(soc1c執行了撤銷審查),此後soc1c提交請求要求將Wei Tang從ECIP流程中剔除。此後,Aztlan硬叉過程中,又出現ECIP-1061和ECIP-1072的爭議(該爭議中也出現了“撤銷”操作)。Wei Tang認爲,提案過程中soc1c的“撤銷”操作實際上是很大的集中化風險,並創建了新請求,認爲“撤銷”操作違反流程,不應被當做規範。

對於ETC Aztlán硬分叉時間推遲一事Wei Tang與社區也有不同觀點,他認爲此前已經由於Aztlán規範的錯誤導致Mordor和Kotti測試網已產生無法消除的損害,現在只希望損害不會波及到主網。Wei Tang稱“不負責任地硬分叉會破壞網絡安全,每天高喊代碼就是法律是沒用的。”

Bob Summerwill回應稱,分叉時間推遲是因爲不可預測的區塊時間因素導致,而非社區更改了此前選定的硬分叉的區塊號。而區塊時間預測出現誤差是常有的事情。針對社區不健康的指責,Bob Summerwill回應ETC社區非常健康。

交鋒反反覆覆,而不能確認統一。

6月14日,Wei Tang就宣佈了,其個人將停止支持ETC,原因爲在Phoenix硬分叉後,ETC網絡打破了以太坊一致性的邏輯,特別是在不變性方面。

一個月後,ETC兩大客戶端OpenEthereum和MultiGeth宣佈停止支持ETC。而由於這兩個客戶端仍然共享ETC網絡節點總數的70%,這是一個要求ETC用戶採取適當行動的公共服務公告。而根據Wei Tang此後公佈的文章,兩大客戶端停止支持ETC的原因和Wei Tang停止支持ETC的原因一樣。

這就是攻擊開始的源頭,當一個網絡節點客戶端佔據超過了一半,而突然要停止其服務,在後期算力遷移的過程中,網絡一定是危險的。

對於OpenEthereum和MultiGeth宣佈停止支持ETC的消息,ETC亞太社區經理 Christian表示,OpenEthereum的維護者Gnosis已作出正式申明,停止支持ETC是爲了將其有限的精力投入到以太坊主網開發中,而不是Wei Tang所說的原因。

Phoenix之後MultiGeth的實際開發者只有Wei Tang本人,由於某些分歧,Wei Tang選擇了將MultiGeth停止ETC支持。

從去年以來,ETC先後完成了三次硬分叉升級,使ETC網絡目前與ETH完全一致。其中,ETC Core團隊功不可沒。早在上半年,ETC Core團隊即開發了一款更加安全的Go語言客戶端CoreGeth,CoreGeth完美地支持了Phoenix硬分叉,並且至今保持完好運行。從對Gnosis的回帖中大家也可以看到,OpenEthereum和MultiGeth退出後,CoreGeth作爲ETC Core官方維護的客戶端完全值得大家信賴,繼續服務於ETC網絡。

隨後Wei Tang回應,事實是,OpenEthereum和MultiGeth是兩個支持ETC時間最長的客戶端。其中,OpenEthereum是4年,MultiGeth爲2年。其他客戶端支持ETC的時間都沒有超過一年。其中,Hyperledger Besu從去年9月開始支持ETC,CoreGeth在今年春天開始從MultiGeth分離出來支持ETC,OpenETC則是剛剛開始支持ETC。

在唐威看來,除了ETC網絡放棄了不變性原則,暫停支持ETC,也是一個合理必要的回應,因爲過去6個月來,看到ETC社區很糟糕的一面。

這是對ETC來說最激烈的評論了。面對客戶端問題,社區不和以及突如其來的攻擊。

最終帶來的是一個客戶端的再次結束,今日,Wei Tang發推稱,OpenEthereum的一個名爲OpenETC的分支,可能是有史以來最爲短促的分支之一。兩週前很多ETC社區成員還在推廣OpenETC,但他們最終放棄了。

目前,OpenETC的主要開發者已刪除他的賬戶。

唐威認爲,OpenETC是對所有人的一個警告,我們應該更加小心我們所信任的東西。

一個加密貨幣社區,尤其是以pow共識建立的,算力是保護所有人資產的最大武器,而當社區不和,也就意味着擁有算力的人都可能成爲潛在的衝突者或者引發攻擊的原因。

相關文章