首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么create2会恢复呢?

为什么create2会恢复呢?
EN

Stack Overflow用户
提问于 2022-10-22 03:04:19
回答 2查看 52关注 0票数 0

我正在多边形上调试一个恢复的事务,这是我所掌握的所有信息:https://mumbai.polygonscan.com/tx/0xfa86dc4957e3a3da9298b7672b11a20ebe921854fa494dc073920c067c1e693f#internal

如果我正确地阅读了它,它似乎是在说CREATE2恢复了。但是CREATE2可以恢复的原因是什么呢?我知道,如果地址上已经存在某种东西,它就会恢复,但是这里不是这样的,从这里可以看到:https://mumbai.polygonscan.com/address/0x6bb03ca906c0372f384b845bd5ce9ca4327ffbe6

EN

回答 2

Stack Overflow用户

发布于 2022-10-22 07:08:21

链接的事务发出消息调用(也称为内部事务),以收缩部署在0x1079b7398b6efd9845c4db079e6fac8d21cf67b3的事务。

然后,这个0x1079b7...契约尝试在address 0x6bb03ca906c0372f384b845bd5ce9ca4327ffbe6上部署一个新的契约,您可以在温柔调试器中看到新契约的字节码。

据我所知,create2可以基于以下三个原因恢复:

  • 没有足够的气体来执行部署
代码语言:javascript
复制
- Not an issue in this case. Acording to the debugger there was ~9M gas units left and the deployment would take only ~1M gas units.
  • 部署契约以解决已部署另一个契约实例的位置。
代码语言:javascript
复制
- Because you can predetermine the contract address with `create2`, this can happen. However not in this case either, the `0x6bb03c...` address is empty, there's no contract deployed.
  • 因此,在执行构造函数时,我们留下了不明确的异常。 pragma稳固性^0.8;契约MyContract {构造函数(){要求(假);} 这样的代码会导致部署失败,并有效地导致create2代码恢复。 不幸的是,如果没有新的契约源代码,很难确定构造函数还原的确切原因是什么。无论是意外长度还是输入参数,都会出现构造函数、逻辑错误、试图调用不存在的契约或其他任何事情。
票数 0
EN

Stack Overflow用户

发布于 2022-10-23 05:39:43

事实证明,我误读了Polygonscan,仅仅因为内部事务旁边有一个红色标记,并不意味着恢复的是内部事务本身,而是意味着整个事务恢复了。不管怎样,使用温柔的调试器帮助我识别了真正的bug。

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

https://stackoverflow.com/questions/74160798

复制
相关文章

相似问题

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