首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无原因的交易失败

无原因的交易失败
EN

Ethereum用户
提问于 2021-10-19 16:58:12
回答 1查看 68关注 0票数 0

https://blockscout.com/etc/mainnet/tx/0x58c0a6880fcf5a04957384768865966a05869d864932ab88b7a5ae3491191db5/internal-transactions,此事务无故失败。

我不认为它用完了汽油,因为计算使用了所提供的天然气的70%。下一次尝试时,除了随机数生成器中不同的块哈希之外,没有任何参数改变。我没发现密码有什么问题。我在Remix里重新运行了十几次,效果很好。

我能看到的唯一原因是,如果状态“滞后”,在事务中没有考虑到4个块之前发生的状态转换(这是通过函数中的检查所必需的)。但如果矿商“人为地”失败,因为他们没有跟踪国家,这一定意味着,大多数矿工同意,否则,该区块将被拒绝。除非大多数矿工腐败,否则这种情况不应发生。

所以我不知道为什么失败了。有谁知道它为什么失败了吗?这里可能不是请求事务调试的地方,但建议在这里这样做:调试失败的事务

EN

回答 1

Ethereum用户

发布于 2021-10-21 04:54:06

它失败的原因有两个。首先,正如Ismael所指出的,这是一个气体输出误差。气体被错误地估计,是因为这个函数有两个不同的气体成本,取决于产生的随机数,一个比另一个更昂贵。估计的气体成本是使用估计时读取的区块哈希,触发了更便宜的功能类型。但是,在实际执行过程中的块链,触发了更昂贵的类型.如果将负燃气费用的退款计入交易结束时(来源),仍然会有足够的天然气,因此在执行过程中,天然气成本超过了供应的天然气。

举例说明了不同的天然气成本,交易失败了。它被给予88k气体,它的价格为81k气体。事务处理表明,对于函数中比较昂贵(81k)类型的计算,gas估计值为98k。而且,价格较低的71k气体,而且有88k的气体估计值可以看到这里

非常感谢伊斯梅尔为我指明了正确的方向。这其实是很复杂的失败原因。

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

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

复制
相关文章

相似问题

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