比特幣價格 比特幣價格
Ctrl+D 比特幣價格
ads
首頁 > 中幣 > Info

PEN:OpenEthereum 客戶端 “柏林” 升級出錯始末_SpacePenguin

Author:

Time:1900/1/1 0:00:00

AlexStokes@ralexstokes:

你可能已經聽說了,@OpenEthereum客戶端的一個錯誤導致了一些支撐以太坊網絡的重要服務宕機。

我們來琢磨一下那筆造成事故的交易。

首先,我想感謝所有快速反應到事故并解決了問題的工程師:

https://twitter.com/OpenEthereumOrg/status/1382719444833726470?s=20…

另外,我沒有自己跟蹤所有的細節,下文中的重要事實都由用戶eb在EthR&Ddiscord服務器里提出。

先從那筆觸發了錯誤的交易開始:

https://etherscan.io/tx/0x7006f38fa2e6654fae1a781aefc5885fe0cb8f778b1add10636eaf7e34279247

OpenAI正為ChatGPT添加插件支持,允許使用第三方服務:3月24日消息,OpenAI 宣布正在為 ChatGPT 添加對插件支持,插件是專門為以安全為核心原則的語言模型設計的工具,可幫助 ChatGPT 聯網訪問最新信息、運行計算或使用第三方服務。

OpenAI 已開放第一批 ChatGPT 插件名單,這批插件由 Expedia、FiscalNote、Instacart、KAYAK、Klarna、Milo、OpenTable、Shopify、Slack、Speak、Wolfram 和 Zapier 創建。OpenAI 表示,將開始把插件 Alpha 訪問權限擴展到候補名單中的用戶和開發人員。

檢索插件允許ChatGPT搜索內容矢量數據庫,并將最佳結果添加到 ChatGPT 會話中。這意味著它沒有任何外部影響,主要風險是數據授權和隱私。[2023/3/24 13:23:50]

這是一筆合約調用交易,從KuCoin交易所發出,向許多地址分發ETH。對該筆交易的calldata的ABI編碼錯誤,最終導致了鏈分裂。你可以在Etherscan上看看這筆交易的“InputData”。

數據:X2Y2過去30天交易額超越OpenSea:金色財經報道,據Cryptomonday.de發布的分析數據顯示,X2Y2在過去30天內處理了5.6億美元的交易量,而Opensea同期處理了4.4897億美元的交易量。X2Y2一直是OpenSea的強勁競爭對手,此前向其NFT市場的用戶免費贈送X2Y2 Token。另據Dune Analytics數據顯示,當前X2Y2總交易額為284,518 ETH,總用戶量達到152,321。(investorideas)[2022/9/13 13:25:02]

在合約中調用sendEths時,需要提供兩個參數:一個是關于目標地址的不定長數組;一個是關于轉賬數額的不定長數組;兩者相搭配才知道要轉移多少錢給哪個地址。

我們可以解析calldata來看看到底哪里出了錯:第一行表示地址列表從字節64開始。第二行表示轉移數額的列表從字節416開始。

涉嫌內幕交易的OpenSea高管已離職:金色財經報道,涉嫌內幕交易的OpenSea高管Nate Chastain的推特個人簡介已變更為“前OpenSea”,這意味著其已從OpenSea離職。Nate Chastain此前為OpenSea產品負責人。近日,此人因疑似利用職務之便進行老鼠倉操作而備受爭議。[2021/9/17 23:31:02]

?因此,大體上,我們是希望成對成對地、從上往下、向某個地址發送一定數量的ETH——看起來很直接嘛。

然而,當我們開始遍歷這個列表,我們先跳轉到calldata的正確字節,而SolidityABI聲明了數據的第一個字是整個不定長數組的長度。

這就是最終bug的根源:因為calldada中的值是“0x10”,但是calldata只給出了10個?地址-數值對。對這個calldata的正確ABI編碼應該是“0xA”——不是“0x10”!

“迪爾伯特”藝術家斯科特·亞當斯在OpenSea上發行NFT漫畫:迪爾伯特(Dilbert)的創作者斯科特·亞當斯(Scott Adams)正在OpenSea上出售其著名漫畫的NFT版本。

注:迪爾伯特是由斯科特·亞當斯撰寫和說明的以虛構人物和主角著稱的美國漫畫,最早于1989年4月16日出版。以諷刺性的辦公室幽默而著稱。(decrypt)[2021/4/16 20:25:18]

你可能已經猜到了那時候會發生什么事,我們可以通過執行情況跟蹤器來看看:

https://etherscan.io/vmtrace?txhash=0x7006f38fa2e6654fae1a781aefc5885fe0cb8f778b1add10636eaf7e34279247&type=parity

合約成功地遍歷了前10個地址。本來合約應該在此時停止執行,但根據calldata的聲明,還有很多個地址!那就繼續執行吧。

但是,根據calldata的結構,“第11個地址”是用于編碼列表長度的0x10,所以合約就嘗試發送0ETH到地址0x10。

此外,似乎,當合約嘗試讀取并不存在的calldata時,會返回0ETH——你可以想象成合約在這里跑出了一個錯誤,但它卻繼續發送0ETH到它從calldata中讀取的另外6個“地址”。

此時,你可能會注意到,0x10有可能是我們所謂的“特殊地址”之一,它完全在EVM預編譯合約的范圍內。

而我們也并不期望預編譯合約0x10能夠返回ETH。如此,它就成了一個ETH黑洞。但是,這也并不必然造成任何問題。到底是什么導致了整個客戶端崩潰?

原因在于,0x10實際上是一個由EIP-2537斷言的預編譯合約,是為BLS配對密碼學程序而設的,但這個EIP還未部署到主網上。所以雖然你能夠跟這個地址互動,但主網上的這個地址里沒有任何合約,不會有任何進一步的動作。

此外,我們還需要一個事實來解釋這次分裂,你可能也猜到了,就是“柏林”硬分叉:它改變了EVM中Gas消耗量的計量方法。

在EIP-2929實施后,如果你在一筆交易中對同一個存儲槽多次執行狀態存儲操作,第一次執行會消耗更多Gas,后續執行的消耗會更少。這種重定價理論上能更準確地反映當前的客戶端訪問存儲項的成本……

而且,要知道,在所有客戶端的執行中,這些數據通常都換存在更便宜的硬件層中。

現在我們終于找到了OpenEthereum在區塊#12244294處發生的Bug:該客戶端包含了所有已實現的預編譯,作為EIP-2929訪問清單的一部分。

因為EIP-2537在大部分客戶端中都已經實現就緒了,OpenEthereum對所有訪問了0x10的交易都給了gas折扣。

但網絡的絕大部分活躍客戶端都不是這樣實現EIP-2929的,它們只會給訪問了已激活預編譯合約的交易提供gas折扣——而EIP-2537屬于還未激活的預編譯合約!所以,OpenEthereum客戶端對該交易消耗了多少Gas的計算與網絡中其他客戶端發生了分歧。

所幸,@mhswende很快找出了該bug,而@sorpaas出力修復了該bug:https://github.com/openethereum/openethereum/pull/364

還有很多東西可說,我也預期會有比我更能觀察到全貌人來撰寫更好的時候報告。

我能說的只是,這個bug彰顯了硬分叉的內在風險,以及持續致力于建設更有彈性的基礎設施的重要性。

依賴于OpenEthereum客戶端的單客戶端系統在今天停機了一段時間,因為客戶端無法在問題區塊出現后與網絡保持同步。Etherscan自身也因此停機。

慶幸的是,這個bug沒有嚴重到導致重大的鏈分叉,但這樣的可能性并不是不存在。我們可以利用多客戶端實現來提升抗性——多客戶端本身就是我們以太坊生態的一大長處——并推動您的基礎設施提供商也這樣做。

我們已經看到,2021年的普及速度已經前所未有地快,而且前景非常光明。我們要從這個事故中吸取教訓,一起打造更好的以太坊。

Tags:PENOPENETHETHERSpacePenguinOpen Proprietary ProtocolethicaljudgementBETHER

中幣
POOL:4.19午間行情:放量下跌后的價格走勢_BTC

文章系金色財經專欄作者牛七的區塊鏈分析記供稿,發表言論僅代表其個人觀點,僅供學習交流!金色盤面不會主動提供任何交易指導,亦不會收取任何費用指導交易,請讀者仔細甄別,謹防上當.

1900/1/1 0:00:00
比特幣:金融圈在被比特幣啪啪打臉,而我們在被狗狗幣啪啪打臉_doge幣和shib幣哪個更好

作者:五火球教主 來源:白話區塊鏈 這兩天看到一條微博,頗為感慨。內容基本是一科研圈大V,在微博上大罵比特幣,說自己死活想不明白挖比特幣這事兒到底有什么價值,既不創造工作崗位也不創造實體價值,還.

1900/1/1 0:00:00
數字貨幣:國際清算銀行總裁:中央銀行數字貨幣 如何將偉大的理念付諸實踐_數字貨幣騙局最新消息

國際清算銀行任命Raphael Auer為歐元區創新中心負責人:1月7日消息,國際清算銀行(BIS)宣布任命CBDC專家Raphael Auer為其歐元區創新中心負責人.

1900/1/1 0:00:00
ETI:Layer2賽道值得期待項目:Metis_METM

去年下半年隨著DeFi的熱潮開始,以太坊Gas費就居高不下。一筆交易幾十U,甚至幾百U的Gas費用讓許多人望洋興嘆。高昂的Gas費成為了平民的一道欄桿,DeFi已經逐漸淪為大戶的游戲.

1900/1/1 0:00:00
FIL:FIL在上升:Filecoin即將到來的減產改變了代幣經濟模型現狀_OIN

Filecoin突然上升到市值排名前十的加密貨幣,盡管時間很短,但卻指出了它的潛力,因為它是由中國的社區推動的。Filecoin是加密貨幣中存儲領域最突出的幣種之一.

1900/1/1 0:00:00
YFI:Yearn Finance宣布完成回購 YFI大幅拉升后又回到原地_NAN

Yearn.Finance是一個基于以太坊的知名DeFi協議,其在4月18日宣布已回購了價值116.4萬美元的YFI.

1900/1/1 0:00:00
ads