【问题标题】:Why this ethereum contract transaction used less gas?为什么这个以太坊合约交易使用更少的gas?
【发布时间】:2018-12-09 23:35:11
【问题描述】:

请查看以下以太坊交易:

0xe9adbe7e538ccf9f9d4ede8cc4200581dac131976738d3bbf0eb90700cd8a2b6

以太坊交易至少消耗 35,000 GAS 来转移合约上的 ERC20 代币以替换两个账户余额和一个事件。

但是,这笔交易只使用了 21,003 GAS。这怎么可能?

【问题讨论】:

    标签: blockchain ethereum solidity contract erc20


    【解决方案1】:

    一笔以太坊交易消耗至少 35,000 GAS 来转移合约上的 ERC20 代币以替换两个账户余额和一个事件

    这种说法不一定正确。消耗的气体量取决于该帐户之前和/或更新后的余额是否为 0。

    来自Ethereum yellow paper(操作码名称|气体成本|描述):

    Gsset 20000 当存储值从零设置为非零时为 SSTORE 操作付费。

    Gsreset 5000 当存储值的零值保持不变或设置为零时,为 SSTORE 操作支付。

    Rsclear 15000 当存储值从非零设置为零时给予退款(添加到退款计数器中)。

    在您发布的交易中,发件人转移了他们所有的代币,将余额设置为 0,因此获得了 15000 的 gas 退款。

    【讨论】:

      猜你喜欢
      • 2019-01-23
      • 1970-01-01
      • 2019-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-27
      • 1970-01-01
      • 2021-05-27
      相关资源
      最近更新 更多