首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >何时使用EIP-2470:单例工厂?

何时使用EIP-2470:单例工厂?
EN

Ethereum用户
提问于 2022-01-04 23:30:55
回答 1查看 396关注 0票数 0

据我所知,部署智能契约的方法有两种:使用Ethereum地址或通过单尔顿工厂智能契约进行正常部署。

何时使用Singleton Factory智能契约来部署智能契约?与正常部署相比,这样做有什么好处?

EN

回答 1

Ethereum用户

回答已采纳

发布于 2022-01-05 00:17:36

不确定这个答案是否有一个正确的答案。

就我个人而言,我开始为安全使用一个单例工厂(有不同的工厂),因为我们希望使每个人都能够将合同部署到相同的地址(例如,在本地网络上)。

但这并不是唯一的优势。通过使用这样的工厂,合同地址本身就是代码的证明(至少在大多数情况下.有很多方法可以绕开)。这样就可以很容易地在网络上验证契约是否相同,因为您只需比较地址。另外,当您的合同是代理合同设置的实现(以前通常称为主副本)契约时,这也提供了额外的安全性层,因为在发生意外自毁的情况下,可以重新部署此契约(请参见奇偶情况)。

在需要更多单个契约实例的情况下,而不是单个实例,我想说的是,使用正常的部署流更有意义。

注意: Singleton Factory依赖于不使用重放保护的预签名事务。不可能在所有网络上使用这一交易,因为有些网络需要重放保护(例如,雪崩和乐观)。

编辑(跟进“有绕过它的方法”):

单例工厂使用create2操作码使部署尽可能具有确定性。在这种情况下,新合同的地址取决于工厂地址、部署代码和salt。

了解部署代码是如何使用的非常重要。通常,部署代码运行构造函数,将“运行时”代码加载到内存中,然后返回“运行时”代码,以便将其存储在块链中(这里有一个不错的博客帖子 )。

但是,构建部署代码的方式可以是从另一个契约加载代码,在该契约中,代码可以存储在可以更改的变量中。因此,相同的部署代码将生成不同的运行时代码。所以地址是一样的,但是代码会不同。

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

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

复制
相关文章

相似问题

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