概述
2021年 7 月 21 日,OpenEthereum 團隊注意到他們在 Ropsten 上的節點卡在了區塊 10679538 處。人們原以為這是 OpenEthereum 的問題。其實,問題真正出在 go-ethereum 實現檢查 1559 交易發送方余額的方式上。一個無效交易(發送方余額只夠支付交易實際使用的 gas,而非交易指定的 maxFeePerGas 總額)被打包進了區塊。由于 Ropsten 礦工運行的都是 go-ethereum,這個區塊隨后又被其它 go-ethereum 礦工接受,但是被網絡中的其它一些客戶端拒絕了。具體來說,OpenEthereum 和 Besu 拒絕了這個交易/區塊,Nethermind、go-ethereum 和 Erigon(這些客戶端實現的部分代碼來自 go-ethereum 代碼)接受了它。問題的根源已經找到,相關客戶端已經在新的版本中修復了該問題:
以太坊客戶端Geth發布1.10.8版本以修復倫敦升級之前的漏洞:8月24日消息,以太坊客戶端Geth發布修補EVM漏洞的v1.10.8版本,具體的漏洞細節將晚些時候公開,從而給節點方和相關項目方時間來更新它們的節點和軟件以避免攻擊。同時由于此漏洞在倫敦升級之前即已存在,因此所有支持倫敦硬分叉的Geth版本都易受到攻擊 ,應該馬上更新。
該漏洞由在Sentnl工作的荷蘭開發者Guido Vranken于審計智能合約平臺Telos的Telos EVM時發現,并提交了報告。[2021/8/24 22:34:12]
go-ethereum: v1.10.6, fix PR;
Erigon: v2021.07.04-alpha, fix PR;
Nethermind: v1.10.79, fix PR。
問題區塊的信息
數據:自以太坊倫敦升級以來,72%的非MEV交易費用被銷毀:以太坊首席開發人員Tim Beiko在推特上表示:“watchtheburn.com數據顯示,自以太坊倫敦升級以來,似乎有72%的非MEV交易費用被銷毀。目前還不清楚這是否包括MEV。我認為對于Flashbots來說是這樣的,如果bundles是通過tips以ETH支付的話。”[2021/8/23 22:30:13]
網絡:Ropsten
區塊編號:10679538
哈希值:0x1252a34c4f2b061adc609e909d958c02e1ac39043e2e60c0ec47e565e3f625f1
OpenEthereum debug 日志
eth_getBlock 輸出 (go-ethereum)
以太坊JavaScript庫Web3.js發布v1.5.0-rc.0,添加支持倫敦升級和EIP-1559支持:以太坊JavaScript庫Web3.js發布v1.5.0-rc.0,添加支持倫敦升級和EIP-1559支持。
據悉,以太坊兩個最常用JavaScript庫是Ethers.js和Web3.js。
此前消息,以太坊JavaScript庫Ethers.js發布v5.4.0,添加EIP-1559支持。[2021/7/22 1:09:41]
(注:所有時間已轉換成北京時間)。
2021 年 7月 21日
18 : 39:Ropsten 測試網上挖出區塊 10679537。
21 : 53:OpenEthereum 開發者在 Ethereum R&D discord 的 #1559-dev 頻道發帖稱他們的節點卡在了區塊 10679538 處。
火幣研究院首席研究員William:以太坊倫敦升級利于用戶 不利礦工:金色財經報道,在7月13日舉辦的《金色百家談 | 以太坊倫敦硬分叉倒計時!EIP-1559帶來了什么?》直播節目中,針對實施EIP-1559對用戶及礦工的影響,火幣研究院首席研究員William表示,EIP-1559對以太坊用戶來說是十分有利的,主要體現有:
(1)降低交易費用。EIP-1559通過將交易費用的估算策略遷移到協議內部,為交易者提供一個可預測的交易報價,降低信息的不對稱性,由此解決“贏者的詛咒”,降低了用戶的交易費用;
(2)通過Base Fee銷毀機制,降低ETH的通脹率,并由此提高ETH的價格,這利好于持有ETH的用戶;
(3)降低不必要的延遲。當前由于每個區塊的Gas Limit限制加上交易量的自然波動,交易通常需要等待幾個區塊才能被包含在內,這無疑是低效的;而EIP-1559引入了松弛機制,允許一些區塊變大,而另一些區塊則可以變小,由此降低延遲。
對于礦工來說,EIP-1559相當不友好,它相當于把礦工的交易手續費中大頭部分拿掉(EIP-1559將費用拆成Base Fee和Tip兩部分,其中Base Fee會被直接銷毀),直接減少了礦工的收入,因此引起了礦工的抗議。[2021/7/13 0:48:21]
21 : 58:@smixx 稱他們的在 Ropsten 節點位于區塊 10680453。
以太坊核心開發者會議進展:倫敦升級仍然會實施EIP-1559,輔助EIP仍在決策中:以太坊核心開發者于3月19日召開會議,討論了與倫敦升級相關的EIP。以太坊牧貓人項目管理人員、以太坊生態系統貢獻者Edson Ayllon更新會議討論結果表示,7月份的倫敦升級仍然會實施EIP-1559,輔助EIP仍在決策中。[2021/3/21 19:04:47]
22 : 36:Besu 確認他們的節點也拒絕了區塊 10679538。
22 : 51:確認挖出區塊 10679538 的礦工是 go-ethereum節點。
22 : 55:確認 go-ethereum 礦工仍繼續在區塊 10679538 上面挖礦。
22: 56:確認 Nethermind 也接受了區塊10679538。
23 : 08:go-ethereum 已確認問題的根本原因。
23 : 43:go-ethereum 開啟 pull request,提供候選修復方案。
23 : 46:Erigon 開啟 pull request,提供候選修復方案。
2021年 7月22 日
00 : 01:更新后的 go-ethereum 和 Besu 礦工在 Ropsten 上重啟(此時,錯誤的鏈已經挖到了區塊 10680803)。
00 : 43:EthereumJS 確認與 go-ethereum、Erigon 和 Nethermind 存在同樣的問題。
01 : 57:Nethermind 開啟 pull request,提供候選修復方案。
10 : 22:修復后的版本挖出了區塊 10680804。
22 : 54:go-ethereum 發布了修復后版本 v1.10.6。
~23 : 00:Nethermind 發布了修復后版本 v1.10.79。
2021 年 7 月 23日
~00 : 00:Erigon 發布了修復后版本 v2021.07.04-alpha。
提高規范中斷言(assertion)的清晰度
該提交新增了關于 EIP 1559 類型交易有效性的斷言。具體來說,在第 217 行代碼新增了以下斷言:
另外還要注意的是,在前幾行代碼(第 207 行)中,sender.balance 被修改成了減去交易量之后的部分(sender.balance -= transaction.amount)。這個參數引發了混亂,因為一些客戶端團隊在檢查第 217 行定義的斷言時使用的是全部 sender.balance(即,沒有減去transactiion.amount 的發送者地址余額),而非更新后的值。
@holiman 關于 go-ethereum 恢復的說明:
節點同步時跟隨錯誤的鏈
假設你正在運行 geth,并處于同步中。區塊 X 上發生了分叉。你的節點跟隨了總難度較高的錯誤的鏈。在區塊 Z,你停止了節點并將其更新至修復后版本。
問題描述:節點依然在 “錯誤” 的鏈上。
解決方案:執行 debug.setHead{X-1) 回到分叉發生之前。這會將節點倒回區塊 X 之前的某個狀態,不一定是區塊 X-1 的狀態,因為 geth 不一定有區塊 X-1 的完整狀態,但是會有其它某個區塊的完整狀態。通常情況下,geth 大約每隔 1 萬個區塊(1 小時)和/或宕機時會將狀態刷到磁盤。如果 geth 在 gcmode=archive 下運行,就會將每個區塊都刷到磁盤。
當錯誤的鏈總難度較高時進行同步
假設你正在同步一個 geth 節點,區塊 X 上發生了分叉。由于分叉已經發生了,再加上錯誤的鏈總難度更高,你很可能會同步錯誤的鏈,pivot 區塊是 X+M。在這種情況下,由于你沒有區塊 X+M 之前的狀態,無法執行 debug.setHead 來解決這個問題。
這種情況需要重新同步。但是,你需要防止 geth 同步錯誤的那條分叉鏈。這可以通過 whitelist 命令行參數實現。
因此,你需要執行 geth --whitelist 123123=0x2342fafa9af9af9af9af9af9。
所謂的白名單,就是一個 geth 節點在與另一個對等節點連接時會向對方請求區塊 123123 的數據。如果該 geth 節點收到的區塊頭中的哈希與白名單中的不符,就會與之斷開連接。這就意味著,節點將排斥錯誤的鏈上的對等節點,只與較短(但是正確的)鏈上的對等節點連接。
8月3日,新華社發表評論文章《新華社:“精神鴉片”竟長成數千億產業》,直指未成年人沉迷網絡游戲,將對健康成長造成不可低估的影響.
1900/1/1 0:00:00對于DeFi的用戶和評論者來說,一個清晰的未來正在浮現——DeFi衍生品將消費并取代任何可以提供預言機價格的市場.
1900/1/1 0:00:00你買過JGP圖片嗎?幾萬美金一張那種。今年6月10日,在蘇富比舉行的 NFT 藝術品展覽及在線拍賣活動中,CryptoPunk #7523以1175.4萬美元成交.
1900/1/1 0:00:00在 2020 年 8 月,Paradigm 的交易員 Dan Robinson 嘗試收回原本質押在 Uniswap 的流動性代幣.
1900/1/1 0:00:008月3日,去中心化衍生品交易協議 dYdX 宣布推出治理代幣 DYDX,并對此前在平臺上交互過的地址進行空投.
1900/1/1 0:00:00近期,區塊鏈游戲成為行業的焦點,鏈游火爆市場。根據金色財經追蹤的數據,Axie Infinity在7月的總收入超過2億美元,7月29日單日收入超過4000萬美元,超過全球收入最高的手游《王者榮耀.
1900/1/1 0:00:00