首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何防止在使用CREATE2时预先运行salt?

如何防止在使用CREATE2时预先运行salt?
EN

Ethereum用户
提问于 2021-09-03 06:43:34
回答 2查看 459关注 0票数 3

我看了基于克隆工厂的选项性的EIP-1167,并想知道它是否可以移植到使用CREATE2

一个问题是,从理论上讲,第三方可以“预先运行”部署tx,并使用用户的salt部署另一个合同,使用他们自己的构造函数参数初始化它,等等。

我们怎样才能减轻这种情况呢?

我考虑用用户提供的salt对tx.origin进行散列,并将得到的哈希作为salt传递给CREATE2。这样,客户端就可以确定地计算出离链的契约地址,而且部署tx是不可前端运行的,因为不能模拟tx.origin

这就够了吗?

EN

回答 2

Ethereum用户

发布于 2022-10-20 17:02:56

这并不是真正需要考虑的问题,因为CREATE2基于契约创建代码的散列和abi编码的构造函数参数生成部署地址。

因此,特定的salt,再加上契约的创建代码和构造函数参数,总是会产生相同的地址(以及相同的部署契约),而不管是谁部署它,以及何时部署它。

因此,“前端运行”不是一个问题,因为即使有人提前运行,它也会产生完全相同的结果,就像您自己部署合同一样。

如果他们选择不同的构造函数参数,那么他们的契约将被部署到一个完全不同的地址。

有关更多细节,请参见这里的讨论:

https://github.com/ethereum/solidity/issues/13521

票数 2
EN

Ethereum用户

发布于 2022-08-10 23:47:35

这听起来很管用。

然而,CREATE2自然为这个问题提供了一个有趣的建议补救方法:用户可以在契约创建之前初始化它。

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

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

复制
相关文章

相似问题

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