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;
Skew:一旦倫敦升級完成后,ETH隱含波動率就會急劇下降:Skew發推特表示,一旦倫敦升級完成后,ETH隱含波動率就會急劇下降。[2021/8/6 1:39:53]
Erigon:?v2021.07.04-alpha,?fixPR;
Nethermind:?v1.10.79,?fixPR。
問題區塊的信息
網絡:Ropsten
區塊編號:10679538
哈希值:0x1252a34c4f2b061adc609e909d958c02e1ac39043e2e60c0ec47e565e3f625f1
OpenEthereumdebug日志
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。
以太坊客戶端Erigon發布v2021.07.03版本,配置中添加倫敦升級區塊:官方消息,以太坊客戶端Erigon發布v2021.07.03版本,變更包括在配置中添加倫敦升級區塊、EIP-1559支持eth_call和trace_*API、eth_syncing階段性展示進度等。[2021/7/15 0:54:03]
21:53:OpenEthereum開發者在EthereumR&Ddiscord的#1559-dev頻道發帖稱他們的節點卡在了區塊10679538處。
21:58:@smixx?稱他們的在Ropsten節點位于區塊10680453。
22:36:Besu確認他們的節點也拒絕了區塊10679538。
22:51:確認挖出區塊10679538的礦工是go-ethereum節點。
以太坊倫敦升級在測試網上啟動 一天內在Eth2上質押了10萬以太坊:根據EIP-1559跟蹤網站WatchtheBurn,自倫敦部署以來的一天內,Ropsten上已經燒毀了大約88,500個測試網ETH,名義價值1.776億美元。加密數據聚合器CryptoQuant發現,大約在Eth2推出的同時,100,000以太幣已存入Eth2的Staking合約,價值約2億美元。CryptoQuant還指出,目前超過5%的ETH供應被鎖定在價值約117.5億美元的質押中。[2021/6/25 0:05:41]
22:55:確認go-ethereum礦工仍繼續在區塊10679538上面挖礦。
22:56:確認Nethermind也接受了區塊10679538。
23:08:go-ethereum已確認問題的根本原因。
以太坊Ropsten測試網將首先激活倫敦升級:金色財經報道,以太坊開發者Tim Beiko今日發文宣布,以太坊倫敦升級現已準備好在測試網上部署。升級將首先在Ropsten測試網的區塊10499401激活,預計將于2021年6月24日左右進行;Goerli測試網將在區塊5062605激活升級,預計時間為6月30日;Rinkeby測試網將在區塊8897988激活,預計時間為7月7日。Kovan測試網將在稍后升級,預計在主網區塊通過之后。Tim Beiko還表示,截止目前,只有測試網(Ropsten、Goerli、Rinkeby)已安排了倫敦升級。在這些網絡上成功激活升級后,將為以太坊主網設置一個升級區塊。[2021/6/19 23:48:59]
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:ETHTHEETHEETHERETHWThe Philosophers Stonetogetherbnb破解版togetherbnb更新到哪里了
最近,人們討論了礦工采用假定被修改的以太坊客戶端的可能性,該客戶端允許他們接受賄賂,并在選定的區塊中對交易進行排列。。在這篇文章中,我們將解釋為什么這種攻擊模式在以太坊2.0合并后將更難執行.
1900/1/1 0:00:00以太坊基金會于7月15日公布了倫敦升級最新進展,本次升級將在主網達到12965000區塊高度時被激活,具體時間預計在8月3日至5日之間.
1900/1/1 0:00:00AxieInfinity最近很火。在過去七天里,這款基于NFT的游戲創造了超過3900萬美元的收益,這幾乎超過了比特幣和以太坊的總和。原因是什么?嗯......首先,這是一個有趣的游戲.
1900/1/1 0:00:00DeFi借貸協議Aave的創始人告訴Decrypt,Aave今年將推出一款基于以太坊的Twitter替代方案.
1900/1/1 0:00:00具有可編程特性的CBDC或將徹底改變商業模式、加速經濟發展,并引領世界走向一個更加數字化的未來。這一切都能夠以安全的方式實現,無需觸及貨幣本身,屬于數字貨幣之上的分層功能.
1900/1/1 0:00:00風險投資的性質正在發生變化。雖然風險投資行業的起源可以追溯到19世紀,但在20世紀60年代半導體初創公司FairchildSemiconductor獲得成功支持后,這一概念迅速發展.
1900/1/1 0:00:00