首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否有可能从事务本身(即没有代理/创建者智能c)创建具有确定性地址(如CREATE2确实)的智能契约?

是否有可能从事务本身(即没有代理/创建者智能c)创建具有确定性地址(如CREATE2确实)的智能契约?
EN

Ethereum用户
提问于 2021-09-28 15:52:52
回答 1查看 717关注 0票数 2

我发现

  1. 来自黄白纸

事务包含字段:

  • 纳塞
  • gasPrice
  • gasLimit
  • 价值
  • v,r,S
  • init (包含应该返回“智能契约运行时代码”的“智能契约创建代码”)或数据(调用智能契约的参数,通常是“稳健函数名称散列”和“函数参数”)

也是

在创建帐户时使用了许多内部参数:.,新帐户地址的salt (ζ) .盐ζ可能不见了(ζ=∅);.如果创建是由CREATE2引起的,那么ζ=∅。

  1. “智能合同初始化代码”应该
  • 将代码复制到内存中
  • 使用返回(start_offset_of_memory,end_offset)返回“运行时代码”

如果我在事务处理中提供"salt“(当然还有"init”和“init”和所有其他字段)字段,那么它将创建具有确定性地址的智能契约(就像CREATE2操作码一样)。

但是没有这样的字段"salt“来处理事务,而且我看到每个人都使用"ProxyFactory智能契约”(OpenZeppelin 1 2 C37这里 the Deployer智能契约)创建具有确定性地址的智能地址。

似乎:

  • 如果EOA从事务中创建智能契约,那么将使用CREATE方法隐式创建智能契约。
  • 如果智能契约创建智能契约,则可以使用CREATE或CREATE2操作码创建智能契约。

问:如果不使用ProxyFactory方法,是否有可能/为什么不能从事务本身创建具有确定性地址的智能契约?

EN

回答 1

Ethereum用户

回答已采纳

发布于 2021-09-29 07:41:32

Tnx致Paul Razvan Berg

这是故意的,这就是我想听到的

所以当人们喜欢这里时,https://ethereum.stackexchange.com/a/761/82396

对于CREATE2创建的合同,其地址将是: keccak256( 0xff ++ senderAddress ++ ++ keccak256(init_code))注意,senderAddress可以是外部拥有的帐户,也可以是合同。

我会知道,不,不可能是EOA,因为senterAddress是工厂的地址。

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

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

复制
相关文章

相似问题

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