首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在仲裁中更新智能契约而不更改智能契约地址

在仲裁中更新智能契约而不更改智能契约地址
EN

Ethereum用户
提问于 2018-07-13 09:42:56
回答 2查看 566关注 0票数 2

要明白,智能契约地址是从创建者的地址和创建者发送了多少事务确定地计算出来的,因此,每一个新的智能契约部署都会生成一个新的地址--这对于公共ethereum来说非常有意义。

在仲裁中,如果我需要更新已经部署的智能合同(例如,添加/修改新的交易规则/逻辑),是否有办法确保连接到旧智能地址的DApps能够无缝地切换到新的智能协议?也就是说,不需要停机时间将DApp重新连接到新的智能契约地址。

例如,如果不允许停机(关键生产系统),事务将继续发送到旧的智能契约地址,是否有办法迁移此期间发送的所有增量事务?

内森·胡尔(新加坡)

EN

回答 2

Ethereum用户

发布于 2018-07-13 09:54:31

不是的。不是以预先实现的方式。

发送事务或从EVM读取是对特定地址进行的操作。创建一个新的智能契约将导致该契约的一个新的空白存储,并且将所有数据从智能契约发送到另一个协议,默认情况下不会在ethereum客户端中实现。

因此,从智能契约迁移到另一个契约将暴露两个问题:

  • 在托管的Dapp中将旧地址更改为新地址。
  • 将数据从旧的契约存储迁移到新的。

第一个问题,可以手动或先发制人地创建一个离链DNS,比如地址命名系统(或者订阅现有的DNS,它应该已经存在了)。

第二个问题,只能通过先发制人地创建方法来解决,这样就可以从智能契约中提取所有数据,如果你不这样做的话,那就很难了。

所有这些都适用于ethereumquorum

票数 0
EN

Ethereum用户

发布于 2018-07-13 14:00:38

不是本土的..。

然而,有一个简单的解决方案称为代理库。

  • 您可以编写一个将bytes32标识符绑定到合同地址的合同注册表。
  • 您可以编写一个包含逻辑的库。
  • 您为库编写一个接口。
  • 您创建一个代理并将接口链接到它。
  • 您可以编写包含存储的存储契约,并将调用委托给代理。

这样,当您想更新您的逻辑时,您只需部署一个新版本的库,并在契约注册表中设置它的部署地址。

示例:https://github.com/designisdead/blockchain-programmable-incentives/tree/master/contracts

我非常肯定,在我们的项目中,对于可升级的合同,我们有最好的解决方案。

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

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

复制
相关文章

相似问题

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