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



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

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

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

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

有人能解释一下造成这些差异的原因吗?

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

最新更新