Ropsten共識問題
概述
2021年7月21日,OpenEthereum團隊注意到他們在Ropsten上的節點卡在了區塊?10679538?處。人們原以為這是OpenEthereum的問題。其實,問題真正出在go-ethereum實現檢查1559交易發送方余額的方式上。一個無效交易被打包進了區塊。由于Ropsten礦工運行的都是go-ethereum,這個區塊隨后又被其它go-ethereum礦工接受,但是被網絡中的其它一些客戶端拒絕了。具體來說,OpenEthereum和Besu拒絕了這個交易/區塊,Nethermind、go-ethereum和Erigon接受了它。問題的根源已經找到,相關客戶端已經在新的版本中修復了該問題:
go-ethereum:?v1.10.6,?fixPR;
以太坊主網已達到倫敦升級區塊高度:據歐科云鏈鏈上大師數據顯示,以太坊主網于今日20時33分達到區塊高度12,965,000,激活倫敦硬分叉網絡升級。本次升級包含5個以太坊改進提案(EIP),分別是EIP-1559(手續費改進方案)、EIP-3198(BaseFee操作碼)、EIP-3529(降低gas退款)、EIP-3541(拒絕0xEF字節開頭的新合約創建,為以太坊對象格式服務)、EIP-3554(推遲難度炸彈到今年12月)。[2021/8/5 1:36:58]
Erigon:?v2021.07.04-alpha,?fixPR;
Nethermind:?v1.10.79,?fixPR。
問題區塊的信息
網絡:Ropsten
區塊編號:10679538
以太坊客戶端Besu發布v21.7.0,添加支持倫敦升級:官方消息,以太坊客戶端Besu發布v21.7.0,添加支持倫敦升級。其它功能包括新的共識協議QBFT,使用Tessera的GoQuorum兼容隱私。[2021/7/20 1:05:12]
哈希值:0x1252a34c4f2b061adc609e909d958c02e1ac39043e2e60c0ec47e565e3f625f1
OpenEthereumdebug日志
eth_getBlock輸出(go-ethereum)
測試網事故的時間線
以太坊客戶端Erigon發布v2021.07.03版本,配置中添加倫敦升級區塊:官方消息,以太坊客戶端Erigon發布v2021.07.03版本,變更包括在配置中添加倫敦升級區塊、EIP-1559支持eth_call和trace_*API、eth_syncing階段性展示進度等。[2021/7/15 0:54:03]
。
2021年7月21日
18:39:Ropsten測試網上挖出區塊10679537。
21:53:OpenEthereum開發者在EthereumR&Ddiscord的#1559-dev頻道發帖稱他們的節點卡在了區塊10679538處。
21:58:@smixx?稱他們的在Ropsten節點位于區塊10680453。
以太坊客戶端OpenEthereum新版本加入主網倫敦升級區塊高度:以太坊客戶端OpenEthereum發布OpenEthereumv3.3.0-rc.4版本,將主網的倫敦硬分叉升級的區塊高度(12965000)寫入,也就是8月4日左右。[2021/7/15 0:53:30]
22:36:Besu確認他們的節點也拒絕了區塊10679538。
22:51:確認挖出區塊10679538的礦工是go-ethereum節點。
22:55:確認go-ethereum礦工仍繼續在區塊10679538上面挖礦。
22:56:確認Nethermind也接受了區塊10679538。
23:08:go-ethereum已確認問題的根本原因。
以太坊客戶端Geth發布倫敦升級版v1.10.5:官方消息,以太坊客戶端Geth發布v1.10.5版本,啟用了以太坊主網的倫敦硬分叉,包含EIP1559用戶體驗。
此前消息,以太坊開發者Tim Beiko表示,其“提議倫敦硬分叉于區塊高度12965000在主網激活”已合并,預計客戶端本周末/下周初發布版本,并在下周初/中發布適當的公告。[2021/7/14 0:51:53]
23:43:go-ethereum開啟?pull?request,提供候選修復方案。
23:46:Erigon開啟pull?request,提供候選修復方案。
2021年7月22日
00:01:更新后的go-ethereum和Besu礦工在Ropsten上重啟。
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。
糾正措施建議
提高規范中斷言的清晰度
該提交新增了關于EIP1559類型交易有效性的斷言。具體來說,在第217行代碼新增了以下斷言:
另外還要注意的是,在前幾行代碼中,sender.balance?被修改成了減去交易量之后的部分。這個參數引發了混亂,因為一些客戶端團隊在檢查第217行定義的斷言時使用的是全部?sender.balance,而非更新后的值。
Go-Ethereum恢復
@holiman?關于go-ethereum恢復的說明:
節點同步時跟隨錯誤的鏈
假設你正在運行?geth,并處于同步中。區塊?X?上發生了分叉。你的節點跟隨了總難度較高的錯誤的鏈。在區塊?Z,你停止了節點并將其更新至修復后版本。
問題描述:節點依然在“錯誤”的鏈上。
解決方案:執行?debug.setHead{X-1)?回到分叉發生之前。這會將節點倒回區塊?X?之前的某個狀態,不一定是區塊?X-1?的狀態,因為?geth?不一定有區塊?X-1?的完整狀態,但是會有其它某個區塊的完整狀態。通常情況下,geth大約每隔1萬個區塊和/或宕機時會將狀態刷到磁盤。如果geth在?gcmode=archive?下運行,就會將每個區塊都刷到磁盤。
當錯誤的鏈總難度較高時進行同步
假設你正在同步一個?geth?節點,區塊?X?上發生了分叉。由于分叉已經發生了,再加上錯誤的鏈總難度更高,你很可能會同步錯誤的鏈,pivot區塊是?X+M。在這種情況下,由于你沒有區塊?X+M?之前的狀態,無法執行?debug.setHead?來解決這個問題。
這種情況需要重新同步。但是,你需要防止geth同步錯誤的那條分叉鏈。這可以通過?whitelist?命令行參數實現。
因此,你需要執行?geth--whitelist123123=0x2342fafa9af9af9af9af9af9。
所謂的白名單,就是一個geth節點在與另一個對等節點連接時會向對方請求區塊?123123?的數據。如果該geth節點收到的區塊頭中的哈希與白名單中的不符,就會與之斷開連接。這就意味著,節點將排斥錯誤的鏈上的對等節點,只與較短鏈上的對等節點連接。
Tags:ETHETHETHEETHERxETH-G幣Ether DataKing Of The Dogetogetherbnb禮物好感度
流動性來源正在分散在以太坊Layer2擴展解決方案和其他Layer1網絡中。聚合器在選擇它們將在哪些L2上運行時必須進行權衡。聚合器將使交易所變得可互換,這個流行的論點仍未得到證實.
1900/1/1 0:00:00想了解韓國幣圈及生態?看這一篇文章就夠了 前言 區塊鏈行業主要由幣圈、鏈圈、和產業圈組成。相比于技術屬性居多的鏈圈和圈外人難以理解的產業圈,幣圈是最“接地氣”的.
1900/1/1 0:00:00在2020年8月,Paradigm的交易員DanRobinson嘗試收回原本質押在?Uniswap?的流動性代幣.
1900/1/1 0:00:00什么是「Play-to-Earn」?Plantoearn是當前停留在區塊鏈游戲世界里的一種火爆的商業模式,與之對應的是現實世界的游戲行業里普遍的F2P模式,后者指的是玩家可以免費游戲.
1900/1/1 0:00:00最近一周的加密市場呈現上漲態勢,漲幅達到30%,多次突破4萬美元。在長達兩個月的震蕩下行跌勢下出現了一輪反彈,截至發文,比特幣現報40001.22美元,24小時漲幅達8.11%,最高達到4055.
1900/1/1 0:00:00原文標題:特斯拉Q2凈收入首超10億美元!暗示上調今年交付指引美東時間7月26日周一美股盤后,全球市值最大的汽車制造商、電動汽車巨頭特斯拉公布了二季報,開啟美股二季度財報季最繁忙的一周.
1900/1/1 0:00:00