以太坊(Ethereum,ETH)開發者提出兩項修正草案,盼減少 Glamsterdam 升級調整 gas 費率後舊智慧合約呼叫失敗的情況。一項草案讓既有合約沿用原費率,另一項則分開計算合約執行使用的 gas 與使用者支付的費用。
雷歐·格利希奇(Leo Glisic)提出 EIP-8488,朱利歐·雷布福(Giulio Rebuffo)則另提一份「雙重計量」草案。ChainNews ABMedia 報導指出,兩項草案目前都處於提案階段,尚未訂定預計實施日期。
討論背景是 Glamsterdam 升級納入的 EIP-8037 與 EIP-8038。兩項提案調整建立新狀態及存取既有狀態資料所需的 gas 費用,目標是抑制狀態資料增加,並為日後安全提高區塊 gas 上限提供條件。
EIP-8037 規格將建立新帳戶的成本從 25,000 gas 調高至 183,600 gas。部署合約的基本成本也會從 32,000 gas 調至 183,600 gas;儲存與執行程式碼的費用另計。
部分智慧合約會在程式碼中預先設定呼叫其他合約所需的 gas 數量。若新費率下預設數量不足,呼叫可能失敗;已部署的合約也可能難以修改。不過,影響範圍取決於程式碼是否依賴固定的 gas 假設,因此並非所有舊合約都會受影響。
以太坊基金會(Ethereum Foundation)11月6日請開發者與稽核人員檢查 EIP-8037、EIP-8038 涉及的 8 項 gas 處理假設。基金會曾說明,兩項提案會改變部分運算的 gas 成本,以及狀態資料費用的處理方式。
ChainSecurity 於10月提出風險警告後,基金會延後原定10月26日進行的 Hoodi 測試網升級,目前尚未公布新日期。
EIP-8488 將以太坊虛擬機(Ethereum Virtual Machine,EVM)的指令集分為舊版與 V2。升級後新部署的合約將使用 V2 指令並採用 EIP-8037、EIP-8038 的新費率;既有合約則設計為繼續適用原費率。
V2 也會排除 GAS、GASLIMIT 等可讀取合約剩餘 gas 資訊的指令,避免新合約在程式碼中固定依賴舊費率假設。草案指出,採用可升級協定的合約,可透過替換實作合約轉用新規則。
雷布福的草案則會在每筆交易中設置兩個 gas 計量器。舊制計量器計算合約執行期間可查看與分配的 gas;新制計量器則計算使用者實際支付的費用。
若新費率計量器的 gas 不足,整筆交易就會中止,合約內也無法處理這項失敗。草案尚未訂出具體費率表、退款規則與區塊計算方式。
兩項草案採用不同方式處理費率變更:EIP-8488 依合約版本區分費率;雷布福的草案則將合約執行時可見的 gas,與實際收費依據分開。
雷布福的草案目前尚無 EIP 編號,也未完成執行層客戶端實作與共識測試。兩項草案都仍在討論階段,實施時程尚未確定。
較早公布的共識層開發者會議(ACDC)第190次會議摘要提到,Glamsterdam 下一個開發網最快可能於11月16日至20日啟動。這項時程是在兩份草案提出前規劃,並不代表草案的實施日期。
Comment 0