原文標題:《 London Mainnet Announcement 》
原文作者:Tim Beiko
原文編譯:ETH 中文站
譯者按:除了倫敦主網升級的公告外,ECN 還翻譯了 Geth 客戶端 v1.10.5 裏關於此次倫敦升級,不同相關行動者需要注意的代碼變更。
倫敦升級的測試網成功部署後,現在已經準備好在以太坊主網上激活了。它將在區塊高度 12 965 000 激活,時間大概在 2021 年 8 月 3-5 日。
爲了與倫敦升級兼容,節點運營者將需要升級其運行的客戶端版本。下面列出的每個客戶端版本支持以太坊主網的倫敦升級。
注意:下列版本不同於《倫敦測試網公告》中所列出的客戶端版本,測試網的客戶端版本並不支持主網倫敦升級的客戶端版本。

注意:OpenEthereum 客戶端將倫敦升級後棄用。OE 團隊正在與 Erigon 合作,爲用戶提供一個平穩的過渡路徑。更多信息點擊這裏查看。
礦工請注意:倫敦升級將改變在網絡如何處理 gas limit 目標的方式。請參閱下文中「作爲一名礦工,我需要做什麼?」的部分了解詳情。
下列 EIPs 是倫敦升級的內容:
1. EIP-1559:ETH 1.0 費用市場變更
2. EIP-3198:BASEFEE 操作碼
3. EIP-3529:減少 gas 返還
4. EIP-3541:拒絕以 0xEF 字節開頭的新地址
5. EIP-3554:難度炸彈延遲至 2021 年 12 月
Ethereum Cat Herders 發佈了一篇博客文章,討論了這些 EIPs 的細節。
值得注意的是,雖然 EIP-1559 可以與當前的交易格式向後兼容,但是它引入了對區塊頭的更改,添加了新的交易類型,提供了新的 JSON RPC 端點,並在幾個方面改變了客戶端的行爲 (挖礦、交易池等等)。強烈建議各個項目熟悉這個 EIP。與 EIP-1559 相關的更廣泛的資料列表可以點擊此處查閱。
爲了讓更多人關注即將到來的倫敦升級,所有與倫敦升級相關的 bug 的獎金都會翻倍,直到升級開始。可以領取雙倍賞金的例子有以下這些客戶端之間的跨客戶端共識問題:Geth、Besu、Nethermind、OpenEthereum 和 Erigon。有關 bug 賞金範圍和限制完整詳細信息,請參閱:https://bounty.ethereum.org/#rules。
如果你使用交易平臺 (比如 Coinbase、Kraken 或 Binance)、網頁錢包服務 (比如 Metamask、MyCrypto、或 MyEtherWallet),移動端的錢包服務 (比如 Coinbase Wallet、Status.im、或 Trust Wallet)、或硬件錢包 (比如 Ledger, Trezor, or KeepKey),你不需做任何事情,除非你的交易平臺或錢包服務商通知你採取額外步驟。如果你運行自己的以太坊節點,你需要升級你的節點。請看下文「作爲一個非挖礦節點,我需要做什麼?」部分。
下載以太坊客戶端的最新版本,已在上文表格中列出。
首先,下載你的以太坊客戶端最新版本。然後,你需要手動把 gas limit 目標設爲現在的兩倍。這是因爲一旦倫敦升級部署了,區塊大小會變成現在的兩倍,而 EIP-1559 會保持區塊容量大約 50% 滿。這可以在所有提供與主網兼容挖礦的客戶端上通過 JSON-RPC 來實現,無須重啓你的節點。
例如,如果倫敦升級以前你把區塊大小設爲 15m gas,你將需要把 gas limit 設爲 30m,以維持平均每個區塊的交易數量一致。如果你不在區塊 12 965 000 修改 gas limit 目標,你便會開始在網絡裏降低你的區塊大小。下表提供了每個客戶端的特定 API,你需要用它們來更新你的 gas limit 目標。

注意:Nethermind、Erigon 和 EthereumJS 目前還不支持在以太坊主網上挖礦。
如果你正在使用以太坊客戶端但不升級到(上文所列的)最新版本,升級後你的客戶端同步的是分叉前的區塊鏈數據。你會停滯在一條遵循舊規則的、不兼容的鏈上,且將無法發送 ETH 或在升級後的以太坊網絡上操作。
網絡升級意味着以太坊底層協議的一次變更,創建新規則來完善系統。區塊鏈系統的去中心化本質使得網絡升級變得更難。區塊鏈網絡升級的順利進行需要與社區以及各個以太坊客戶端開發者進行協作和溝通,以使過渡順利進行。
當社區就哪些變更需要被納入到升級上達成共識時,這些對協議的變更會被寫入各個以太坊客戶端,例如 geth、Erigon、Besu 和 Nethermind。協議變更會在一個特定的區塊高度上啓動。任何沒有升級到新規則的節點將在舊鏈上被遺棄,而舊鏈繼續保有之前的規則。
在伊斯坦布爾升級後,我們定下來的網絡升級名字都用完了。有人建議我們用舉辦 Devcon 的城市命名,於是我們就用了。柏林是舉辦 Devcon 0 的城市,下一次升級的名字是舉辦 Devcon 1 的城市——倫敦。
特別感謝參與到倫敦升級的研究、計劃、實現、測試、修復、再測試、部署、壓力測試,以及以其他任何形式幫助倫敦部署的每個人
還有提供封面圖的 Benjamin Davies!
這是一個新興且不斷髮展的高科技領域。如果讀者們選擇實施本文中的建議並繼續參與,請確保您已充分了解您的選擇會帶來什麼影響。讀者們應該瞭解所涉及的風險,包括但不限於出現意外 bug 等風險,請讀者獨自承擔風險。這篇文章及其建議不是任何形式的銷售,也不提供任何形式的保證,包括但不限於與以太坊網絡或此處提及的以太坊客戶端有關的任何東西。
Geth 客戶端關於倫敦升級變更的說明:
1. 此版本包含倫敦硬分叉的主網啓動區塊高度。(#23176)
2. 如之前所有的分叉相關版本,我們添加了一個重載標記,用來設置啓動區塊。這個標誌是暫時的,在主網分叉區塊成功啓動後會被刪除。(#22822, #22972)
3. 爲了配合 EIP-1559 所創造的新費用市場,Geth 客戶端的交易池已經重新設計了。我們的新交易池設計旨在滿足用戶的需求——及時打包交易——根據他們的有效挖礦獎勵實現高效的交易排序。你可以在交易池設計文檔裏瞭解更多新交易池的工作邏輯。(#22898)
EIP-1559 還會改變 gas limit 的投票系統。在倫敦分叉後,可用於交易的區塊 gas 量是基於需求來調整的。區塊容量被稱爲 gas target,EIP-1559 將這個 target 定義爲 gas limit 的一半。
爲了確保可用於交易的 gas 與分叉前一樣,分叉區塊的 gas limit 是加倍的。如果你正在使用 --miner.gaslimit 標記來參與投票,你需要將這個標記的值變成原來的兩倍,以保持投票的值與之前的相同。你可以使用 miner_setGasLimit RPC API 來升級 target 而不需要離線,但要注意,這不會在重啓後繼續有效。之前的 --miner.gastarget 標記在倫敦升級後會被棄用,它的值會被忽略。
舉例:如果你正在使用 --miner.gaslimit 對 gas limit 爲 20M 投票,而實際的區塊 gas limit 是 20M。當倫敦升級啓動了,區塊 gas limit 會調整到 40M,但如果你繼續使用同一個 --miner.gaslimit 設置的話,你還將對 20M 投票。因此在分叉後的某個時間點,你需要將你的 --miner.gaslimit 的值設爲原來的兩倍,以確保 gas limit 保持在 40M gas。
5. 對於錢包提供商:EIP-1559 的交易價格默認計算算法 (eth_maxPriorityFeePerGas) 還是遵循舊機制,把 max priority fee 設爲在網絡上支付的 effective price 減去當前的 base fee;把 max fee 設爲 priority fee + 2x base fee。這確保了在倫敦過渡期後,如果用戶沒有明確反對意見,按每 gas 支付的總價格保持不變。
另外,Geth 發佈了一個新的 eth_feeHistory (blocks, head, percentiles) API 終端,用戶可以用它來詢問關於支付給礦工小費和交易燒燬費用數量的最近數據信息。建議錢包使用這個終端給用戶多個費用選項 (#23033)。
6. JSON-RPC 用戶注意:分叉啓動後,eth_sendTransaction 和 eth_fillTransaction 會默認創建 EIP-1559 式交易。
7. Go/Java/ObjC 合約綁定的用戶注意:分叉啓動後,accounts/abi/bind 會自動創建 1559 式交易。要在 Go 語言寫的應用裏用 EIP-1559,請記得在你應用的 go.mod 文件中把 go-ethereum 模塊依賴升級到 v1.10.4。(#23038)
8. ethclient 用戶注意:如果你用 ethclient 包發送交易並想用 EIP-1559 帶來的的新費用模式,你必須修改你的代碼,用 types.NewTx(&types.DynamicFeeTx{...}) 來創建交易。爲了瞭解分叉是否已經啓動和新交易類型是否可用,只需檢查最新區塊頭的 BaseFee 字段是否非零。
原文鏈接
歡迎加入律動 BlockBeats 官方社群:
Telegram 訂閱群:https://t.me/theblockbeats
Telegram 交流群:https://t.me/BlockBeats_App
Twitter 官方帳號:https://twitter.com/BlockBeatsAsia