1

我想通过 Remix 提供的信息来了解以下代码的交易成本和执行成本:

pragma solidity ^0.4.0;
contract A {
    uint public b;
    function saveB(uint _b) public {
        b = _b;
    }
}

当我调用该函数以获取存储在 b 中的当前值时,尽管我的所有设置仍然相同,但每次都会得到稍微不同的事务和执行成本。我在 Javascript VM 中运行代码。差异不是很大,但我想了解其中的原因。例如,我在几个小时前尝试了以下结果:交易成本:21.688 执行成本:416

然后我在几分钟前试了一下:交易成本:21.678 执行成本:406

谁能解释我这些差异的原因?

4

1 回答 1

1

这是因为区块链上的空间非常宝贵,所以如果您发送数字 0x0100000000000000000000000000000000000000,它将与数字 0x01 具有相同的成本,这是因为在这两种情况下,相同数量的字节具有非零值,在这种情况下 1. 那么发送 0 也会给你一个低得多的价值,因为它是清理空间,即使它已经是 0,你仍然可以获得 gas 退款。

于 2018-07-26T03:10:42.813 回答