AlexStokes@ralexstokes:
你可能已經聽說了,@OpenEthereum客戶端的一個錯誤導致了一些支撐以太坊網絡的重要服務宕機。
我們來琢磨一下那筆造成事故的交易。
首先,我想感謝所有快速反應到事故并解決了問題的工程師:
https://twitter.com/OpenEthereumOrg/status/1382719444833726470?s=20…
另外,我沒有自己跟蹤所有的細節,下文中的重要事實都由用戶eb在EthR&Ddiscord服務器里提出。
先從那筆觸發了錯誤的交易開始:
https://etherscan.io/tx/0x7006f38fa2e6654fae1a781aefc5885fe0cb8f778b1add10636eaf7e34279247
Slope:發現漏洞后已刪除服務器端日志記錄,1444個被盜錢包或可追溯到該漏洞:8月4日消息,Solana生態錢包Slope表示,在發現中心化Sentry服務器引發的漏洞后已刪除服務器端日志記錄。目前,受影響的9223個錢包中有1444個(15%)可能被追溯到此漏洞。Slope正在與審計合作伙伴和Solana基金會合作,以發現任何潛在的額外攻擊媒介,并且已通知相關執法機構,以便對攻擊者進行刑事調查。
區塊鏈安全機構OtterSec此前在社交媒體上發文表示,在過去兩天內,超過400萬美元資產從Solana錢包中被盜,已經確認Slope移動應用通過TLS將助記符發送到其中心化Sentry服務器,然后這些助記符以明文形式存儲,這意味著任何有權訪問Sentry的人都可以訪問用戶私鑰。在本次攻擊中這些地址中的約1400個地址存在于Sentry中,不過這并非所有被盜地址。我們仍在調查可能的其他媒介。另外,在Sentry實例中發現了超5300個未包含在此次漏洞攻擊的私鑰,其中2358個地址中有Token,建議Slope用戶盡快轉移資金。[2022/8/4 12:01:44]
這是一筆合約調用交易,從KuCoin交易所發出,向許多地址分發ETH。對該筆交易的calldata的ABI編碼錯誤,最終導致了鏈分裂。你可以在Etherscan上看看這筆交易的“InputData”。
OpenSea谷歌搜索量創新高:金色財經報道,谷歌趨勢搜索數據顯示,NFT市場“OpenSea”的谷歌搜索量創歷史新高,達到峰值100,其中,排名前五的地區為:夏威夷搜索量為100,加利福利亞州95,內華達83,紐約州77,康涅狄格州72。[2022/1/12 8:44:51]
在合約中調用sendEths時,需要提供兩個參數:一個是關于目標地址的不定長數組;一個是關于轉賬數額的不定長數組;兩者相搭配才知道要轉移多少錢給哪個地址。
我們可以解析calldata來看看到底哪里出了錯:第一行表示地址列表從字節64開始。第二行表示轉移數額的列表從字節416開始。
?因此,大體上,我們是希望成對成對地、從上往下、向某個地址發送一定數量的ETH——看起來很直接嘛。
然而,當我們開始遍歷這個列表,我們先跳轉到calldata的正確字節,而SolidityABI聲明了數據的第一個字是整個不定長數組的長度。
Solana NFT游戲Genopets將上線Raydium去中心化公募平臺AcceleRaytor:11月3日消息,基于Solana的鏈上訂單簿AMM Raydium Protocol宣布,Solana生態“Move-to-Earn”NFT游戲Genopets將在其去中心化募資平臺AcceleRaytor啟動。
據此前報道,Genopets完成830萬美元種子輪融資,Konvoy Ventures和Pantera Capital領投。[2021/11/3 6:29:14]
這就是最終bug的根源:因為calldada中的值是“0x10”,但是calldata只給出了10個?地址-數值對。對這個calldata的正確ABI編碼應該是“0xA”——不是“0x10”!
你可能已經猜到了那時候會發生什么事,我們可以通過執行情況跟蹤器來看看:
OpenOcean 宣布已集成波場 DEX 生態且是波場上首個聚合器:據最新消息,鏈上聚合協議 OpenOcean 宣布已聚合波場TRON鏈上的去中心化交易所(DEX)生態,支持 TronLink 波寶錢包。團隊表示他們是波場上第一個聚合器。經典版和專業 Beta 版目前聚合了波場TRON上主要 DEX 生態 JustSwap 和 USWAP,幫助用戶在波場TRON生態尋找并執行最優交易價格。
據悉,波場 TRON 以推動互聯網去中心化為己任,致力于為去中心化互聯網搭建基礎設施。旗下的 TRON 協議是全球最大的基于區塊鏈的去中心化應用操作系統協議之一,為協議上的去中心化應用運行提供高吞吐,高擴展,高可靠性的底層公鏈支持。波場 TRON 還通過創新的可插拔智能合約平臺為以太坊智能合約提供更好的兼容性。[2021/2/20 17:33:50]
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:ETHHERPENOPENethm幣會歸零嗎男生ethereal代表什么意義OpenStream WorldOpen Platform
目錄 NFT現有格局 什么是元宇宙 區塊鏈與元宇宙 元宇宙的新經濟形態 區塊鏈元宇宙VS傳統元宇宙SocialMoney的到來SocialMoney+NFT=SocialEcommerceNFT.
1900/1/1 0:00:004月18日,一條推特表示美國財政部將指控多家金融機構使用數字貨幣洗錢,監管陰影的重現引發了市場對監管的恐慌,比特幣短時間內一度跌至5.2萬美元/枚,跌幅超過17%.
1900/1/1 0:00:00NFT領域依舊延續著幾個月來的熱度,絲毫未減。4月21日,科技巨頭IBM宣布進軍NFT領域,表示將與知識產權運營機構IPwe合作把專利轉換為NFT.
1900/1/1 0:00:00DeFi數據 1.DeFi總市值:1179.07億美元 市值前十幣種排名數據來源DeFiboxDeFi總市值數據來源:Coingecko2.過去24小時去中心化交易所的交易量:44.
1900/1/1 0:00:00博鰲亞洲論壇2021年年會“數字支付與數字貨幣”分論壇4月18日晚舉行。分論壇對于數字人民幣的定位與試點、加密貨幣監管、跨境支付等話題進行討論,金色財經為您匯集相關內容.
1900/1/1 0:00:00Coinbase的成功上市是加密貨幣行業的一個里程碑,這標志著第一家完全受監管的加密貨幣公司成為美國上市公司.
1900/1/1 0:00:00