Remix中Solidity中调用函数的不同成本

时间:2018-07-25 10:52:03

标签: transactions blockchain ethereum solidity remix

我想通过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

有人可以解释这些差异的原因吗?

1 个答案:

答案 0 :(得分:1)

这是因为区块链上的空间非常宝贵,因此,例如,如果发送数字0x0100000000000000000000000000000000000000000000,它将与数字0x01具有相同的开销,这是因为在两种情况下,相同数目的字节具有非零值在这种情况下,在这种情况下为1。然后发送0会给您一个低得多的值,因为它正在清理空间,即使它已经是0,您仍然可以获得汽油退款。