概述
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 代碼)接受了它。問題的根源已經找到,相關客戶端已經在新的版本中修復了該問題:
以太坊倫敦升級一周年,年通脹速度下降超53%:8月5日消息,據OKLink多鏈瀏覽器數據顯示,時值以太坊倫敦升級一周年,截止區塊高度15280850(北京時間 2022 年 8 月 5 日15:00),以太坊總銷毀量達2,571,826.68枚,約 42.8億美元。伴隨EIP-1559 實施的一年來,以太坊的通脹速度下降超53%。[2022/8/5 12:04:40]
go-ethereum: v1.10.6, fix PR;
Erigon: v2021.07.04-alpha, fix PR;
Nethermind: v1.10.79, fix PR。
問題區塊的信息
網絡:Ropsten
區塊編號:10679538
哈希值:0x1252a34c4f2b061adc609e909d958c02e1ac39043e2e60c0ec47e565e3f625f1
Skew:一旦倫敦升級完成后,ETH隱含波動率就會急劇下降:Skew發推特表示,一旦倫敦升級完成后,ETH隱含波動率就會急劇下降。[2021/8/6 1:39:53]
OpenEthereum debug 日志
eth_getBlock 輸出 (go-ethereum)
(注:所有時間已轉換成北京時間)。
2021 年 7月 21日
18 : 39:Ropsten 測試網上挖出區塊 10679537。
21 : 53:OpenEthereum 開發者在 Ethereum R&D discord 的 #1559-dev 頻道發帖稱他們的節點卡在了區塊 10679538 處。
21 : 58:@smixx 稱他們的在 Ropsten 節點位于區塊 10680453。
ETH完成倫敦升級后 當前已銷毀35.18個ETH:據ultrasound數據顯示,以太坊倫敦升級完成后,截止區塊#12,965,095,以太坊網絡一共銷毀35.18個ETH。
最近10個區塊每個區塊銷毀ETH數量在0.09-0.9之間。[2021/8/5 1:36:53]
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,提供候選修復方案。
彭博社:以太坊倫敦升級可望通過銷毀代幣推升ETH價格:彭博社報道,以太坊倫敦升級將減少ETH的供應速度,通過銷毀每天發行的1.3萬枚新ETH(支付給礦工的gas費)中作為基礎費用(大約占25-75%)的部分代幣,可望推升ETH的價格。此舉將讓ETH每年的供應量減少約4%。而明年轉向新的交易驗證機制后,供應量還可能進一步下降。投資公司Multicoin Capital聯合創始人Kyle Samani表示:倫敦升級是以太坊歷史上最有趣和最重要的升級之一,通過減少代幣供應量,可增加稀缺性,提高價格。倫敦升級將于8月4日或5日啟動,具體取決于系統何時到達區塊鏈上的預定高度。此外,倫敦升級還包含將在12月部署的「難度炸彈」,屆時,礦工在不升級軟件的情況下將無法開采ETH。(彭博社)[2021/7/30 1:24:22]
23 : 46:Erigon 開啟 pull request,提供候選修復方案。
2021年 7月22 日
以太坊客戶端Erigon發布v2021.07.03版本,配置中添加倫敦升級區塊:官方消息,以太坊客戶端Erigon發布v2021.07.03版本,變更包括在配置中添加倫敦升級區塊、EIP-1559支持eth_call和trace_*API、eth_syncing階段性展示進度等。[2021/7/15 0:54:03]
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 節點收到的區塊頭中的哈希與白名單中的不符,就會與之斷開連接。這就意味著,節點將排斥錯誤的鏈上的對等節點,只與較短(但是正確的)鏈上的對等節點連接。
1.金色觀察丨SBF:傳統風投和 DeFi 能“互搭”嗎?加密交易所FTX的創始人薩姆·班克曼-弗里德(Sam Bankman-Fried,業內被稱為SBF)今年只有29歲.
1900/1/1 0:00:00自2020年起,以太坊網絡被DeFi所統治,DeFi Token讓整個以太坊網絡擁堵不堪。V神在自己創立的以太坊幾乎被DeFi占據了所有注意力的時候,卻向我們推薦了一款以太坊游戲,還是一款RTS.
1900/1/1 0:00:002021 年上半年,加密貨幣領域一共 404 家企業獲得融資,融資總額達 72.71 億美元。其中 9 家加密錢包相關企業獲得了 8.63 億美元融資,遠超行業平均水平.
1900/1/1 0:00:00這篇由 3 部分組成的文章重點介紹互聯網歷史上的最新章程— Web 3 的原因、內容和方式。第 1 部分解釋了當今網絡的缺點以及 Web 3 如何改進;第 2 部分重點介紹 Web 3 的運作模.
1900/1/1 0:00:00數字藝術很高調,互聯網巨頭湊熱鬧,一圖讓你看懂哪些互聯網巨頭在參與NFT數字藝術。金色午報 | 8月13日午間重要動態一覽:7:00-12:00關鍵詞:DeFi項目、Bitfinex、礦工費、L.
1900/1/1 0:00:00編者注:原報告來自Najoua Elommal、Riadh Manita,《創新經濟與管理雜志》,中文版本由鏈集市團隊編譯整理,英文版權歸原作者所有.
1900/1/1 0:00:00