Solidity

10,000 退款是否也適用於布爾值?

  • July 10, 2019

我從這個文章中了解到,將值設置為 0 時,您最多可以退還 10,000 天然氣。

這是否也適用於布爾值?也就是說,從truefalse?

是的,它確實。對 EVM 來說,設置 a booltofalse相當於設置 a uintto 0,因為它清除了一個儲存槽。

您可以使用下面的程式碼進行嘗試。在本契約中,以下交易成本為:

setBool()= 41705

setUint()= 41474

unsetBool()= 13386

unsetUint()= 13204

pragma 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 限制。

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