Back to top
  • 공유 Share
  • 인쇄 Print
  • 글자크기 Font size
URL copied.

重現測試67筆中修正64筆:以太幣(ETH) Gas估算提案仍是草案

AI 生成圖片:智慧型手機畫面顯示交易步驟狀態 / TokenPost.ai

以太坊執行客戶端 Geth 的 Gas 估算可能漏掉一種情況:交易雖顯示成功,智慧合約內部操作卻可能失敗。為降低這類落差,有人提出修正案;錢包設定的 Gas 上限即使足以完成整筆交易,也可能不足以執行使用者要求的內部操作。

Geth 儲存庫於8日以草案形式提出 PR #36084,說明目前的 Gas 估算是以整筆交易是否成功為基準來尋找上限。以太坊執行 API 文件也將 eth_estimateGas 定義為估算完成交易所需 Gas 的方法。這項修正案則進一步納入內部呼叫的執行結果。

智慧合約呼叫另一個合約時,若 Gas 不足,內部呼叫可能失敗。外層合約若捕捉到這項失敗並繼續後續處理,整筆交易仍可能在沒有錯誤的情況下結束。因此,交易顯示成功只代表外層執行完成,不代表使用者預期的每個步驟都已完成。

修正案提高了 Gas 估算的成功條件:若某個 Gas 上限下失敗的內部呼叫或合約建立次數,多於高 Gas 上限基準執行的結果,就不採納該估算值。反過來說,即使提供足夠 Gas 仍總是失敗的呼叫,也不會讓估算值無限制提高。採取類似規則的執行 API 規格 PR #971 也已以草案形式提交。

提案者依照 Amsterdam 規則,透過 EELS 重新執行432筆主網交易。在67筆可能因內部呼叫 Gas 不足而出問題的交易中,修正案修正了64筆,相關 Gas 上限的中位數提高4%。原本估算正常的254筆沒有變動,另有3筆仍未被修正案捕捉。這是提案者重現測試的結果,不代表所有交易或實際錢包都會有相同比例的改善。

這項問題也與 Glamsterdam 升級的 EIP-8037 有關。EIP-8037 提議將建立新狀態的成本以獨立的 Gas 維度計算。修正案作者表示,若採用狀態 Gas 退還規則,內部呼叫失敗後由上層呼叫改用替代處理方式的模式可能更常出現。以太坊基金會先前於6日請智慧合約開發者與稽核人員檢視 Glamsterdam 可能改變的8項 Gas 計費前提。

Gas 上限提高,不代表手續費也會按相同比例增加。Gas 上限是交易可使用的最大 Gas 量;以太坊官方 Gas 文件說明,實際手續費由已使用的 Gas 量乘以每單位價格計算。因此,重現測試中位數上升4%,不能解讀為手續費上升4%。這項提案討論的是交易所需 Gas 量的估算方式,與 ETH 報價無關。

截至9日,Geth 修正案與執行 API 規格提案都仍是草案。Geth PR 頁面沒有該分支的部署紀錄,合併與部署時程也尚未公布。

<Copyright ⓒ TokenPost, unauthorized reproduction and redistribution prohibited>

Most Popular

Other related articles

Comment 0

Comment tips

Great article. Requesting a follow-up. Excellent analysis.

0/1000

Comment tips

Great article. Requesting a follow-up. Excellent analysis.
1