首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果交易失败,煤气费是否已退还?

问如果交易失败,煤气费是否已退还?
EN

Ethereum用户
提问于 2018-04-27 01:42:54
回答 2查看 8.6K关注 0票数 6

我把打电话的人做交易时交煤气费的规则搞糊涂了。

在进行事务时需要煤气费,而且我知道require()是将所有煤气费返回给调用方的保护函数。

煤气费在所有操作后是否在智能合同中的功能中支付?

然后,如果请求()函数放置在函数的开头,而代码根本不被操作,这是否意味着不需要煤气费?

如果该请求()语句中的值为false条件而事务因此失败怎么办?

煤气费是100%退还给来电者,还是在功能的某些操作生效后,调用者必须支付剩余的煤气费?

打电话的人能退还所有的汽油吗?

代码语言:javascript
复制
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 ()条件传递后没有余额,会发生什么情况?

我怀疑我是否正确。

EN

回答 2

Ethereum用户

回答已采纳

发布于 2018-04-27 02:08:19

天然气必须与签署的交易一起供应。除非提供天然气,否则不能调用合同函数。没有办法透支这个帐户。就像你车里的燃料。你需要一些开始,如果有足够的,你会到达你的目的地。如果没有足够的资源,一切都会停止。

源代码被编译成汇编代码,任何时候发生什么事情,OPCODES都会被使用。气体是为OPCODES充电的,因为它被使用了,所以即使第一行是require(),它是false,它仍然需要很多OPCODES来解压交易数据和评估require() --所以一些气体被燃烧了。

如果气体被归还给签字人,那就是剩余的气体。这就像装满你的油箱,然后中止你的旅行。你可能在引擎运转的时候烧掉了一些,但你仍然拥有大部分。

如果在一切恢复的流产操作之前进行了大量的处理,那么很可能大部分的气体都用完了。

希望能帮上忙。

票数 7
EN

Ethereum用户

发布于 2018-04-27 02:03:53

对于EVM执行的每一次操作,它都消耗了一定量的气体。如果任何指令导致事务失败,则执行将停止,并且在此之后不再使用gas。

煤气费是否在所有操作后交纳在智能合同中的功能?

在事务执行的每一步都要消耗气体。

那么,如果请求()函数放置在函数的开头,而代码根本不被操作,那么就不需要汽油费了?

是。如果需要导致执行停止,则不再消耗气体,因此在执行require之后不再使用气体。

如果该值在该需要量()语句条件中无效而事务失败怎么办?

正如第一次声明所述,气体将在每一步使用。并将持续到导致事务失败的指令为止。这就是为什么我们倾向于事先知道交易是否失败。要做到这一点,这些检查是放在开始。

煤气费是否会100%退还给来电者,或来电者在运作后须缴付余下的煤气费?

在某些操作完成后,必须支付剩余的煤气费。

打电话的人可以退还所有煤气费吗?

不是的。require也使用了一些汽油,这是不会退款的。它已经被消耗了。

如果在代码执行后必须支付煤气费,如果调用方(msg.sender)无法支付煤气费,因为调用方的帐户在require ()条件传递后没有余额,会发生什么情况?

代码语言:javascript
复制
gas fee = amount of gas* price of 1 gas

所以气体被消耗了。区块链客户端(geth/奇偶/.)将不接受gasPrice*amountOfGas超过帐户余额的交易。因此,我们可以看到,当交易提交给区块链客户时,就会支付天然气价格。

票数 1
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/46827

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档