新聞加密貨幣以太坊延後 Hoodi 測試網 Glamsterdam 啟用,點出已部署合約面臨風險

以太坊延後 Hoodi 測試網 Glamsterdam 啟用,點出已部署合約面臨風險

作者: Coindoo·

重點速覽

  • •以太坊開發者暫停了 Glamsterdam 原定 10 月 26 日在 Hoodi 測試網的啟用,同時移除 Amsterdam 執行層與 Gloas 共識層分岔,以及原定提高至 2 億的燃氣上限。
  • •EIP-8037 為減緩狀態成長,將新儲存槽的狀態成本從 20,000 提高至 97,920 燃氣,新帳戶從 25,000 提高至 183,600;其作者估計在 2 億燃氣上限下,狀態一年內可能超過 650 GiB。
  • •ChainSecurity 的 10 月 13 日分析警告新規則可能引發燃氣不足攻擊,因儲備池或回填燃氣可讓失敗處理器永久記錄失敗呼叫,且儲備池為空時冷儲存寫入的執行燃氣可能約為九倍。
  • •Hoodi 營運者必須在 10 月 26 日前以發行說明明確確認移除舊啟用的版本更新執行層與共識層用戶端,而以太坊基金會表示主網用戶與 ETH 持有者無需行動。
  • •尚未設定替代的 Hoodi 日期或主網啟用日期,EIP-8037 的 Last Call 審查(提案定案前的最後窗口)將於 11 月 1 日截止。
以太坊延後 Hoodi 測試網 Glamsterdam 啟用,點出已部署合約面臨風險

以太坊開發者已暫停 Glamsterdam 升級在 Hoodi 測試網的啟用,原因在於對已部署智慧型合約在新燃氣定價規則下表現的疑慮。以太坊基金會在其 10 月 22 日的公告中表示,此決定是在 All Core Devs Execution 第 248 次會議上作出的。

此決定的重點:

  • 新儲存槽的狀態成本從 20,000 提高至 97,920 燃氣。
  • Hoodi 原定提高至 2 億燃氣上限的計畫也被取消。
  • 尚未設定 Glamsterdam 主網啟用日期。
  • EIP-8037 的 Last Call 審查將於 11 月 1 日結束。

主網前的最後一個測試網步驟暫停

Glamsterdam 原定於 10 月 26 日 17:42:48 UTC 在 Hoodi 啟用。此次延後移除了 Amsterdam 執行層與 Gloas 共識層兩項啟用——即升級的兩個部分——同時也取消了原定同步將 Hoodi 燃氣上限提高至 2 億的計畫。此舉改變了測試網的未來設定但不回溯其歷史,且尚未設定替代日期。

根據 The Block,在前一次升級 Fusaka 期間,Hoodi 是主網前第三個也是最後一個完成分岔的測試網,基金會表示主網會在至少 30 天後跟進。在那次部署中,最後一個測試網分岔是主網前的最後個公開檢查點。Glamsterdam 已通過 Sepolia 上的 2 億燃氣演練,當時的修正是更新 Prysm 驗證者預設值——屬於用戶端設定問題。這次的問題則是已部署的合約如何運作。基金會尚未設定 Glamsterdam 主網日期,並表示主網用戶與 ETH 持有者無需採取行動。

提高儲存價格會削減部分寫入操作的執行燃氣

EIP-8037 的目的是減緩以太坊狀態的成長,狀態是每個節點必須儲存的資料。其作者估計該狀態在 2026 年 1 月約為 390 GiB。他們估計,在現行定價下,2 億燃氣上限可能在不到一年內將其推超過 650 GiB——即節點開始變慢的水準。他們的解決方案是對新狀態的每個位元組收取 1,530 燃氣,將新儲存槽的狀態成本從 20,000 燃氣提高至 97,920,新帳戶從 25,000 提高至 183,600。

為使大型合約部署仍然可行,該提案將燃氣拆分為兩個池。執行燃氣用於計算,狀態燃氣用於新儲存。交易提供的燃氣超過 16,777,216 的部分會進入一個獨立的狀態燃氣儲備池,狀態收費會優先從此池支取。該儲備池會完整傳遞給每個子呼叫,且合約無法透過標準的 gasleft() 讀取看到它。

根據 ChainSecurity 使用 EIP-8037 與 EIP-8038 數據,對新儲存槽進行冷寫入所需的執行燃氣:

  • 現今:22,100
  • Glamsterdam,儲備池支付 97,920 狀態費用:12,100
  • Glamsterdam,儲備池為空:110,020

換言之,在儲備池為空的情況下,同樣的冷寫入所耗費的執行燃氣可能約為儲備池支付狀態費用時的九倍。

燃氣也可能在執行期間回流。清除同一交易中稍早建立的儲存槽會立即回填最多 97,920 燃氣,而回退的子呼叫可以退回其支付的狀態費用。因此,合約可見的燃氣餘額可能會在執行途中上升EIP 本身警告,以兩次燃氣讀數差值來衡量工作量的合約可能得到負值,而已以此設計部署的合約無法修正。

攻擊者如何利用新規則

安全公司 ChainSecurity 在 10 月 13 日的分析中闡述了此風險。合約經常會捕捉失敗的呼叫並記錄結果,這讓惡意呼叫者可以故意提供過少的燃氣,使有效操作失敗,但合約仍有足夠燃氣保存該失敗。這種技術被稱為燃氣不足攻擊,可能永久阻斷重試或移除用戶的請求。

對於依賴失敗處理器本身耗盡燃氣的合約:

  • 步驟 1: 攻擊者以過少的燃氣發送呼叫。
  • 步驟 2: 目標操作耗盡燃氣。
  • 現今: 處理器也耗盡燃氣,一切回退,用戶可以重試。
  • Glamsterdam: 儲備池或回填的燃氣讓處理器完成執行並永久保存該失敗。

在失敗呼叫後檢查剩餘燃氣的合約,可能在回填或回退的中間層將餘額推回其門檻之上時被欺騙。固定的燃氣預算也可能不足,因為 EIP-8038 提高了觸及既有狀態的成本:對既有熱儲存槽的首次修改從 2,900 燃氣提高至 10,100。

並非所有防禦都會失效。ChainSecurity 表示,只要預算在不依賴儲備池的情況下能涵蓋新價格下的所有執行路徑,呼叫前進行的檢查仍能保證所請求的燃氣交付。該公司建議完全不要依賴呼叫後的燃氣檢查。基金會的公告僅提及 EIP-8037,並未引用該公司也涵蓋 EIP-8038 的研究。

營運者與開發者需要做什麼

Hoodi 營運者必須在 10 月 26 日之前更新執行層與共識層用戶端,且所使用的版本其發行說明必須明確確認舊啟用已被移除。原公告中的版本表不算確認。截至 10 月 23 日,基金會已列出兩個用戶端的更新版本,並表示其他用戶端一經確認即會加入。

驗證者必須同時更新信標節點與驗證者用戶端,任何營運外部區塊建構基礎設施者應遵循其供應商的指示。應用程式團隊應停止以原定日期規劃 Hoodi 測試。

對合約開發者而言,ChainSecurity 的檢查清單從每一個允許失敗後繼續執行的呼叫開始。內容包括追蹤完整路徑(包括代理合約);找出在同一交易中設定與清除的儲存槽,以及會回退的中間層;重新檢固定預算;以及強制子呼叫失敗並比較兩套規則下的結果。在可能情況下,失敗的呼叫應回退整個操作。依據該 EIP,錢包與節點軟體也必須針對雙池模型更新燃氣估算。

後續決定掌握在核心開發者手中。EIP-8037 的 Last Call 審查——以太坊流程中提案定案前的最後審查窗口——將於 11 月 1 日截止,調查可能導致規格變更,修訂後的 Hoodi 日期將在未來的會議上設定。

本文僅供資訊參考,不構成財務或投資建議。以太坊升級時程與技術規格在測試期間可能變動。

來源:Coindoo