Ethereum 以太坊坚固性-是否需要()使用任何气体?
谷歌没有给我一个具体的答案,在Ethereum 以太坊坚固性-是否需要()使用任何气体?,ethereum,solidity,smartcontracts,Ethereum,Solidity,Smartcontracts,谷歌没有给我一个具体的答案,在Solidity中使用require()?即使函数中的语句的计算结果为true?如果语句的计算结果为true,我也不确定您是在询问操作码本身是否消耗gas还是gas被消耗 如果你问的是操作码本身,我同意你的说法,答案不清楚。我没有在(现在非常不推荐)或(附录G)中看到REVERT操作码(这是require()编译到的) 在混音中运行一个测试,看起来它确实消耗了非常少的气体。只需在这个方法的顶部添加一个require(true)调用,气体使用量就增加了23 contr
Solidity
中使用require()?即使函数中的语句的计算结果为true?如果语句的计算结果为true,我也不确定您是在询问操作码本身是否消耗gas还是gas被消耗
如果你问的是操作码本身,我同意你的说法,答案不清楚。我没有在(现在非常不推荐)或(附录G)中看到REVERT
操作码(这是require()
编译到的)
在混音中运行一个测试,看起来它确实消耗了非常少的气体。只需在这个方法的顶部添加一个require(true)
调用,气体使用量就增加了23
contract GasUsage {
uint val;
function someFunc() public returns (bool) {
require(true);
delete val;
}
}
包括在内的执行成本:5230
注释掉时的执行成本:5207
如果您在询问require
语句之前的耗气量,那么答案是肯定的。自发布之日起,在require
语句之前消耗的所有气体都将被消耗,但剩余的气体将被返回。在拜占庭之前,require()
和assert()
是相同的,所有的气体都会被消耗掉
从:
在内部,Solidity执行还原操作(指令0xfd)
用于请求样式异常,并执行无效操作
(指令0xfe)引发断言样式异常。在这两种情况下,
这会导致EVM恢复对状态所做的所有更改…请注意,断言样式异常会消耗所有气体
可用于调用,而require样式异常将不会使用
从大都会排放的任何气体