Solidity
10,000 退款是否也適用於布爾值?
我從這個文章中了解到,將值設置為 0 時,您最多可以退還 10,000 天然氣。
這是否也適用於布爾值?也就是說,從
true
到false
?
是的,它確實。對 EVM 來說,設置 a
bool
tofalse
相當於設置 auint
to0
,因為它清除了一個儲存槽。您可以使用下面的程式碼進行嘗試。在本契約中,以下交易成本為:
setBool()
= 41705
setUint()
= 41474
unsetBool()
= 13386
unsetUint()
= 13204pragma solidity ^0.5.10; contract RefundTest { bool public boolGasTest; uint256 public uintGasTest; function unsetBool() public { boolGasTest = false; } function setBool() public { boolGasTest = true; } function unsetUint() public { uintGasTest = 0; } function setUint() public { uintGasTest = 1; } }
注意:gas 退款發生在交易結束時。因此,如果您的交易在退款前花費了超過 800 萬的 gas,您仍然可能會達到塊 gas 限制。