要明白,智能契约地址是从创建者的地址和创建者发送了多少事务确定地计算出来的,因此,每一个新的智能契约部署都会生成一个新的地址--这对于公共ethereum来说非常有意义。
在仲裁中,如果我需要更新已经部署的智能合同(例如,添加/修改新的交易规则/逻辑),是否有办法确保连接到旧智能地址的DApps能够无缝地切换到新的智能协议?也就是说,不需要停机时间将DApp重新连接到新的智能契约地址。
例如,如果不允许停机(关键生产系统),事务将继续发送到旧的智能契约地址,是否有办法迁移此期间发送的所有增量事务?
内森·胡尔(新加坡)
发布于 2018-07-13 09:54:31
不是的。不是以预先实现的方式。
发送事务或从EVM读取是对特定地址进行的操作。创建一个新的智能契约将导致该契约的一个新的空白存储,并且将所有数据从智能契约发送到另一个协议,默认情况下不会在ethereum客户端中实现。
因此,从智能契约迁移到另一个契约将暴露两个问题:
第一个问题,可以手动或先发制人地创建一个离链DNS,比如地址命名系统(或者订阅现有的DNS,它应该已经存在了)。
第二个问题,只能通过先发制人地创建方法来解决,这样就可以从智能契约中提取所有数据,如果你不这样做的话,那就很难了。
所有这些都适用于ethereum
和quorum
。
发布于 2018-07-13 14:00:38
不是本土的..。
然而,有一个简单的解决方案称为代理库。
这样,当您想更新您的逻辑时,您只需部署一个新版本的库,并在契约注册表中设置它的部署地址。
示例:https://github.com/designisdead/blockchain-programmable-incentives/tree/master/contracts
我非常肯定,在我们的项目中,对于可升级的合同,我们有最好的解决方案。
https://ethereum.stackexchange.com/questions/53299
复制相似问题