首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在契约创建事务的跟踪中看不到CREATE或CREATE2操作码?

为什么在契约创建事务的跟踪中看不到CREATE或CREATE2操作码?
EN

Ethereum用户
提问于 2022-12-13 16:53:25
回答 2查看 76关注 0票数 1

我正在尝试从debug_traceTransaction事务跟踪中的操作码中看到智能契约创建。但是创建契约的事务的痕迹似乎不包括CREATE操作码。

示例:

CryptoKitties的核心合同是:0x06012c8cf97BEaD5deAe237070F9587f8E7A266d

它是用以下事务创建的:0x691f348ef11e9ef95d540a2da2c5f38e36072619aa44db0827e1b8a276f120f4

根据黄纸第37f页( CREATE ),我希望看到在D4CREATE2操作码所指示的事务跟踪中创建合同。我使用的Python代码是:

代码语言:javascript
复制
from web3 import Web3
tx= "0x691f348ef11e9ef95d540a2da2c5f38e36072619aa44db0827e1b8a276f120f4"
web3 = Web3.HTTPProvider("endpoint")
trace = web3.make_request('debug_traceTransaction', [tx])

输出跟踪相当长,但不包括CREATECREATE2

我是使用了错误的事务还是错误的调试跟踪?如何使用CREATECREATE2操作码(例如,对于CryptoKitties的核心合同)找到跟踪?

EN

回答 2

Ethereum用户

回答已采纳

发布于 2022-12-14 00:23:39

为什么在契约创建事务的跟踪中看不到CREATE或CREATE2操作码?

因为该契约不是使用CREATE或CREATE2操作码创建的,所以它是通过在事务的“To”字段中发送nil来创建的。要查看CREATE2操作码签出UniswapV3PoolDeployer合同的示例,它使用CREATE2操作码。

票数 1
EN

Ethereum用户

发布于 2022-12-14 05:53:48

如@Nulik的回答所述,问题中的合同是由EOA创建的。

CREATECREATE2操作码是合同如何创建另一个契约的方法。

EOA通过将事务“发送到”空地址来创建契约,但“输入数据”是创建契约的“初始化EVM代码”。

在黄皮书(目前的柏林版本),这是描述在节7. CONTRACT CREATION。在以太扫描中,您可以通过“单击查看更多”来查看事务的“输入数据”。

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

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

复制
相关文章

相似问题

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