以太坊交易所 以太坊交易所
Ctrl+D 以太坊交易所
ads
首頁 > USDC > Info

OpenEthereum 客戶端 “柏林” 升級出錯始末_PEN:ETHER

Author:

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

Alex:

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

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

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

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

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

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

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

Serum因無法升級處理安全風險現已不可使用,官方建議社區轉向Openbook等分叉版本:11月29日消息,基于Solana的DeFi項目Serum在推特上表示:“隨著Alameda和FTX的崩潰,主網上的Serum程序已經失效。由于FTX擁有升級權限,安全處于危險之中,導致Jupiter Aggregator和Raydium等協議從Serum中移除,然而,還是有希望的。在Mango Max的帶領下,整個社區都在努力分叉Serum。”官方稱SRM代幣的未來是不確定的,由于FTX/Alameda的曝光率,社區部分成員建議仍將其用于折扣,也有一些成員建議完全不再使用該代幣。

Serum稱:“由社區主導的Serum V3程序的分叉版本OpenBook目前在Solana主網上線,正在進一步努力擴大該項目及其流動性。這意味著隨著Openbook的存在,Serum的交易量和流動性已降至接近于零。在發現舊Serum代碼的安全風險后,用戶和協議可以安全地使用替代分叉版本,例如Openbook。”

據悉,FTX前首席執行官Sam Bankman-Fried是Serum的聯合創始人。[2022/11/29 21:09:34]

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

OpenSea Seaport交易額突破18億美元,交易量超600萬筆:金色財經消息,據Dune Analytics最新數據顯示,基于開源NFT協議Seaport的OpenSea總交易額已突破18 億美元,本文撰寫時為1,801,388,995美元,其中以太坊鏈上交易額為1,790,462,045美元,Polygon鏈上交易額為10,926,950美元。此外,當前基于Seaport協議的OpenSea鏈上交易總量已超600萬筆(6,182,637筆),其中以太坊鏈上交易總量達到5,806,467筆,Polygon鏈上交易量為376,170筆;獨立用戶量超過96萬,其中以太坊鏈上獨立用戶量為878,526個,Polygon鏈上獨立用戶量為81,662個。[2022/10/18 17:30:33]

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

OpenSea宣布支持Optimism:金色財經報道,OpenSea宣布支持以太坊Layer 2 Optimism,這意味著基于Optimism構建的項目也屬于OpenSea的產品范圍,這是該頭部NFT市場支持的第六個區塊鏈,其他5個區塊鏈分別是:以太坊、Solana、Polygon、Klatyn和Arbitrum。據悉,截至目前OpenSea 已經在其市場上列出了 100 多個 Optimism 原生 NFT 集合。 在宣布與 Optimism 建立合作伙伴關系時,OpenSea 特別強調了受 Optimism 支持的熱門項目的加入,包括 Apetimism、Bored Town、MotorHeadz 和 OptiChads。 (decrypt)[2022/9/28 22:35:49]

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

區塊鏈預測平臺OpenPredict與Polygon達成合作:區塊鏈預測平臺OpenPredict宣布與Polygon(原Matic Network)達成合作,利用Polygon的L2擴容解決方案提高OpenPredict平臺的可擴展性,降低交易成本,改善整體用戶體驗。

OpenPredict是Polygon生態系統基金的資助獲得者,由DAO Maker孵化,最近宣布即將推出其首個產品OpenMarket,旨在讓任何人能對幾乎任何東西進行預測。通過使用OpenMarket,任何人都可以創建一個主題,也稱為流動性主題(liquidity thread),以促進討論和社會共享。主題創建者可以通過啟動一個市場來分享自己對未來結果的看法。對該話題感興趣的用戶可以通過采取相同或相反的方式參與預測。[2021/3/6 18:21:42]

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

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

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

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

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:OPENPENETHETHEROpenAI ERCOpen LinkVETH2bitethereum

USDC
期權市場:利好兌現 | Blofin_比特幣:BTC

2021年4月14日,Coinbase在美國納斯達克公開上市,Coinbase每股參考價為250美元,上市當日開盤價格即為381美元,漲幅超過50%.

1900/1/1 0:00:00
金色趨勢丨BTC牛市結束了嗎?_加密貨幣:綠洲幣是加密貨幣嗎

美國《時代周刊》雜志與數字貨幣平臺Crypto.com合作,目前在其18個月的數字訂閱中接受加密支付。使用加密貨幣支付的選項目前僅在美國和加拿大可用,計劃于2021年7月在全球推出.

1900/1/1 0:00:00
覓新 | “狗狗幣殺手”?柴犬幣SHIB來了_ORN:yooshi幣最新消息

因其可愛形象和馬斯克代言,近段時間最耀眼的加密貨幣非狗狗幣莫屬。或許是受到狗狗幣啟發,柴犬幣SHIB近兩天被創造出來,并在加密貨幣社區蔓延開來.

1900/1/1 0:00:00
Diem協會計劃在2021年推出單一穩定幣試點_FACE:face幣最新消息

本文來自?CNBC,原文作者:RyanBrowneOdaily星球日報譯者|余順遂據一位知情人士透露,Diem協會的目標是在2021年推出一項與美元掛鉤的單一穩定幣試點.

1900/1/1 0:00:00
幣安創新區上市FC Barcelona Fan Token(BAR),引入Launchpad投入模式,投入BNB以7折購買BAR!_TPS:SHIBARAMEN

親愛的用戶:幣安創新區將上市FCBarcelonaFanToken,本次新幣上市將引入Launchpad投入模式.

1900/1/1 0:00:00
老李解幣:4.20日行情持續震蕩回調,多頭趨勢是否已經不在_AVA:NFT

每個人所見所遇到的都早有安排,一切都是緣。緣起緣滅,緣聚緣散,一切都是天意。如果你們長期混跡在幣圈里,卻一無所獲,甚至虧損累累!沒關系,金融市場有的是機會,就怕你彷如驚弓之鳥,卻依然自欺欺人,另.

1900/1/1 0:00:00
ads