首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建操作码:它真正的功能是什么?

创建操作码:它真正的功能是什么?
EN

Ethereum用户
提问于 2019-03-27 19:41:08
回答 1查看 3.6K关注 0票数 7

我看的是文档,但无法真正理解CREATE操作码的功能。我可以看出CREATE确实从内存块创建了一个新的智能契约,将gas值传递给这个新契约,然后返回。但是在返回之前,它是否执行新的合同?

这让我感到困惑,因为查看智能契约字节码的反汇编代码,在创建之后,我看不到任何调用,但我仍然看到对RETURNDATASIZE的调用,我认为只有在调用之后才会调用。没有呼叫,它从哪里得到返回的数据?

有什么启发吗?

EN

回答 1

Ethereum用户

回答已采纳

发布于 2019-03-27 20:13:13

创建,在某种程度上,做一个内置的调用。实际上,传递给call的数据不是契约字节码,而是init字节码。

在执行CREATE操作码时,EVM在新契约的上下文中创建一个调用帧(例如,address(此)是新的契约地址)。这将执行传递给作为代码创建的数据,在更高级别的语言中,代码基本上是构造函数。在这个init文件的末尾,它returns是存储在国家trie中的合同的实际代码。

考虑它的最简单的方法,也是相当准确的,是Solidity编译器获取契约的所有执行代码,将其编译为字节码,并将其添加为构造函数末尾的返回语句。

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

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

复制
相关文章

相似问题

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