Glamsterdam 將重寫應用成本帳本:新增狀態與執行預算必須分開
以太坊推遲 Glamsterdam 分叉進程。開發者需要重新驗證首次使用成本、代付計費與失敗恢復,不能只調高 gas 上限。

以太坊基金會 11 月 6 日宣布因相容性問題延後 Glamsterdam 硬分叉進程,Hoodi 分叉須等待問題解決。這並非主網升級完成的公告。基金會說明
對產品經理而言,風險同時落在成本和業務正確性上。過去能完成的新使用者操作,可能超過舊預算;過去會整體回滾的失敗操作,可能留下永久失敗紀錄。單純把所有 gas 預算乘上一個係數,既無法準確報價,也無法證明資金或訊息處理流程仍然安全。以下分析依據截至 11 月 7 日讀取的提案與測試說明,具體參數和規範仍可能修改。
使用者付的錢與區塊裝下的工作量
EIP-8037 擬把新增狀態單獨計量,交易仍由使用者為執行 gas 與狀態 gas 的合計買單,但區塊容量及下一塊基礎費的計算看兩個累計維度中較大的一個。它不是為每個維度建立獨立競價市場,也不意味著狀態儲存免費。其目的在於讓長期狀態成長受到約束,同時減少它與執行工作爭用單一計數器的影響。EIP-8037
這個區別會改變營運儀表板的含義。應用收取或補貼的交易費用,與網路還有多少執行空間,不再能用同一個累計數字解釋。若團隊把交易收據的累計 gas 直接當作區塊壅塞程度,可能誤讀容量;提案明確區分收據累計支付量與區塊 gas 指標。由此推導,代付服務應分別追蹤支出、操作成功率和資源使用,而不是僅以「每塊用了多少 gas」決定補貼策略。
新增狀態定價體現的經濟選擇,是把節點長期保留資料的負擔更多歸給建立者。它可能改善擴容的永續性,卻會把一部分成本集中到部署和首次使用環節。能容納更多執行工作,與每個使用者操作更便宜,是兩個需要分別驗證的結果。
首次使用者不能套用舊使用者的報價
在目前草案中,一個原本為零的冷儲存槽寫成非零,狀態部分為 64×1,530,即 97,920 gas;加上 2,100 的存取和 10,000 的寫入部分,總計 110,020。這個數字只是一筆特定寫操作的模型成本,不是整筆轉帳價格,也不是所有應用統一漲價的倍數。EIP-8037、EIP-8038
例如,同一個代幣轉帳入口,給已有餘額地址更新餘額,與給首次持幣地址建立新的餘額槽,可能走不同狀態路徑。分析上,按「成功交易平均成本」提供固定新客補貼會掩蓋這種差異。團隊應把首次領取、首次授權、首次部署錢包與重複操作分組回放,再觀察業務利潤是否足以涵蓋最昂貴的合法路徑。
只避免新增槽也不夠。EIP-8038 同時調整存取和寫入成本,更新既有狀態仍可能更貴。批次處理可攤薄部分開銷,但依賴更多外部帳戶、代理或失敗重試時,實際節省須由完整呼叫路徑證明,不能僅憑交易數量下降下結論。EIP-8038
gasleft() 不再是一張完整帳單
EIP-8037 的 reservoir 模型把部分預算留給狀態建立;GAS 操作碼,也就是 Solidity 的 gasleft(),只報告 gas_left,不包含 reservoir。狀態建立被撤銷時還可能發生即時回填。用前後兩次 gasleft() 相減,因而不能穩定代表使用者承擔的全部成本,讀數也不能被簡單視為始終遞減。EIP-8037
這直接關係到中繼商、代付方與鏈上收費合約。若收費邏輯把這個差值當作支出憑證,可能少算狀態成本,或在讀數回升時觸發算術問題。更穩妥的工程方向是把經使用者同意的收費規則、可驗證的執行結果和鏈下對帳分開設計;封頂可以限制損失,但無法把錯誤計量變成正確計量。官方稽核清單已把基於 gasleft() 差值收費列為檢查重點。不變量清單
最昂貴的錯誤可能發生在失敗之後
更隱蔽的問題是,目標呼叫失敗後,外層合約還能做什麼。根據 EIP-8037 的回填規則,我們推導出一個需要測試的假設情境:狀態 gas 回填或 reservoir 可能使某些失敗處理程序繼續完成。假設一個流程曾靠「剩餘 gas 不夠寫失敗紀錄」而整體回滾,升級後可能變成目標沒有執行、任務卻被標記永久完成。這裡需要證明的是重試權仍在,而非僅僅證明函式沒有報錯。安全分析
因此,發布前的關鍵測試應從業務結局倒推:故意壓低子呼叫預算,再檢查領取權、訊息狀態、nonce 和重試入口。對於必須捕獲失敗的批次處理,恢復路徑應明確存在;不能僅從剩餘 gas 或空的回滾資料推斷失敗原因。上述分析並不聲稱所有捕獲失敗的合約都有漏洞,風險取決於完整路徑與狀態。
臨時鎖也值得單獨審視。僅在一筆交易內使用的標誌,可評估 EIP-1153 的 transient storage;它在交易結束後丟棄,適合部分跨呼叫臨時狀態。但遷移仍要核對代理上下文、回滾行為和重入保護,不應把持久餘額或跨交易權限搬過去。EIP-1153
把驗收條件從費用改成結果
可執行的準備工作,是固定一個測試規範版本,分別涵蓋新舊帳戶、新舊儲存槽、充足與不足的狀態預算、成功與回滾路徑,並同時檢查合約、機器人和 RPC 周邊元件。官方資料明確提醒鏈下部分也可能受影響;只重跑合約單元測試並不充分。官方稽核倉庫
產品端則需要把可調整的預算、代付上限和異常恢復責任寫清楚。預算留餘量是防止正常使用者卡住的措施,業務狀態可恢復才是防止錯誤永久化的保障。Glamsterdam 延期給團隊留下的實際窗口,是把「歷史上花過多少 gas」的經驗值,改造成對成本和失敗結果都可驗證的約束。是否通過這些測試,應先於任何對更低費用或更高吞吐的承諾。
內容僅供參考,不構成投資、法律、稅務或財務建議。