我把打电话的人做交易时交煤气费的规则搞糊涂了。
在进行事务时需要煤气费,而且我知道require()是将所有煤气费返回给调用方的保护函数。
煤气费在所有操作后是否在智能合同中的功能中支付?
然后,如果请求()函数放置在函数的开头,而代码根本不被操作,这是否意味着不需要煤气费?
如果该请求()语句中的值为false条件而事务因此失败怎么办?
煤气费是100%退还给来电者,还是在功能的某些操作生效后,调用者必须支付剩余的煤气费?
打电话的人能退还所有的汽油吗?
function burn(uint256 _value) public returns (bool success) {
require(balances[msg.sender] >= _value);
balances[msg.sender] = balances[msg.sender].sub(_value);
totalSupply = totalSupply.sub(_value);
Burn(msg.sender, _value);
return true;
}如果在代码执行后必须支付煤气费,如果调用方(msg.sender)无法支付煤气费,因为调用方的帐户在require ()条件传递后没有余额,会发生什么情况?
我怀疑我是否正确。
发布于 2018-04-27 02:08:19
天然气必须与签署的交易一起供应。除非提供天然气,否则不能调用合同函数。没有办法透支这个帐户。就像你车里的燃料。你需要一些开始,如果有足够的,你会到达你的目的地。如果没有足够的资源,一切都会停止。
源代码被编译成汇编代码,任何时候发生什么事情,OPCODES都会被使用。气体是为OPCODES充电的,因为它被使用了,所以即使第一行是require(),它是false,它仍然需要很多OPCODES来解压交易数据和评估require() --所以一些气体被燃烧了。
如果气体被归还给签字人,那就是剩余的气体。这就像装满你的油箱,然后中止你的旅行。你可能在引擎运转的时候烧掉了一些,但你仍然拥有大部分。
如果在一切恢复的流产操作之前进行了大量的处理,那么很可能大部分的气体都用完了。
希望能帮上忙。
发布于 2018-04-27 02:03:53
对于EVM执行的每一次操作,它都消耗了一定量的气体。如果任何指令导致事务失败,则执行将停止,并且在此之后不再使用gas。
煤气费是否在所有操作后交纳在智能合同中的功能?
在事务执行的每一步都要消耗气体。
那么,如果请求()函数放置在函数的开头,而代码根本不被操作,那么就不需要汽油费了?
是。如果需要导致执行停止,则不再消耗气体,因此在执行require之后不再使用气体。
如果该值在该需要量()语句条件中无效而事务失败怎么办?
正如第一次声明所述,气体将在每一步使用。并将持续到导致事务失败的指令为止。这就是为什么我们倾向于事先知道交易是否失败。要做到这一点,这些检查是放在开始。
煤气费是否会100%退还给来电者,或来电者在运作后须缴付余下的煤气费?
在某些操作完成后,必须支付剩余的煤气费。
打电话的人可以退还所有煤气费吗?
不是的。require也使用了一些汽油,这是不会退款的。它已经被消耗了。
如果在代码执行后必须支付煤气费,如果调用方(msg.sender)无法支付煤气费,因为调用方的帐户在require ()条件传递后没有余额,会发生什么情况?
gas fee = amount of gas* price of 1 gas所以气体被消耗了。区块链客户端(geth/奇偶/.)将不接受gasPrice*amountOfGas超过帐户余额的交易。因此,我们可以看到,当交易提交给区块链客户时,就会支付天然气价格。
https://ethereum.stackexchange.com/questions/46827
复制相似问题