1

这是一个简单的合同来证明我的要求:

contract Example {
  uint256 intOne;
  uint256 intTwo;

  function test1()
    public
    payable
  {
    intOne = 300;
  }

  function test2()
    public
    payable
  {
    intOne = 0;
    intTwo = 300;
  }
}

新部署合约后,我第一次打电话test1(),它使用了 41527 gas。

这对我来说是有道理的,因为intOne从零写入非零将使用 20,000 气体,加上基线气体使用量(但这是可行的)。

然后我打电话给test2它,令人惊讶的是只使用了 31453 气体。

不应该intOne从非零变为零成本 5000,然后再花费 20,000intTwo从零变为非零?

还是solidity能够计算交易前后使用的总存储量的差异来确定使用的gas量?

4

1 回答 1

0

在问题中找到答案https://ethereum.stackexchange.com/questions/32419/is-refunded-gas-for-freed-storage-given-to-the-contract-the-allocator-or-t

我不知道因为归零一个字而退还汽油。

于 2018-08-12T00:24:58.250 回答