Gas-Limit

Gas 退款是否適用於備份功能?不匹配的函式標識符的限制是什麼?

  • November 14, 2020

我知道使用 a 呼叫的備份函式的.transfer氣體限制為 2300。如果備份函式刪除了備份函式中的一些儲存變數會怎樣?回退功能是否能夠使用超過 2300 的氣體限制,因為一些氣體正在被退還?假設它設置了一個變數為0,即返還的gas為10000。那麼回退函式的gas limit會是12300嗎?即能夠設置 2 個變數,每個動作的成本為 5000 氣體?

另外,我已經讀過.transfer.send將有 2300 個氣體的限制,call.value並將從交易中轉移氣體。但是不匹配的函式呢?根據文件,不匹配的函式標識符將觸發回退函式。那麼如果有人用 呼叫我的合約會發生什麼"thisMethodDoesntExist()",回退的限制是 2300 嗎?

回退功能是否能夠使用超過 2300 的氣體限制,因為一些氣體正在被退還?

首先,返還的gas量最多是使用gas的一半,所以fallback函式的理論gas上限最多為2300+1150=3450gas。

其次,gas退款本身只在交易結束時提供,這意味著正在執行的功能不能使用自己的gas退款。

這意味著即使是額外的 1150 gas 也不能用於回退功能,因此它的 gas 限制仍然是 2300 gas。

引用自:https://ethereum.stackexchange.com/questions/90135