全面理解智能合约升级 2020-12-26

智能合约升级定义

What is a smart contract upgrade?
A smart contract upgrade is an
action that can arbitrarily(任意地) change the code executed(被执行) in an address
while preserving(保存) storage and balance.
智能合约升级是一种在保留存储和余额的同时,而又可以任意更改在地址中执行代码的操作。

参考自登链社区

首先看看智能合约升级的替代方案

(1)合约注册表

	由多个合约组成的系统可能依赖合约注册中心。每当合约 A 需要与 B 进行交互时,它首先会查询注册表以获得 B 的地址。通过对注册表的修改,管理员可以将 B 替换为替代实现 B',从而改变其行为。但是,此机制在切换到 B'时不会保留 B 的状态,如果需要手动迁移,则可能会出现问题。此模式的某些版本**通过在存储合约delegatecall()业务逻辑合约,达到将存储和逻辑解耦来缓解这种情况**:状态保持在不变的存储合约中,并且只能根据需要更改的业务逻辑合约。我们将在本文后面部分深入探讨逻辑和存储合约分离。     
	 [参见我之前写的--链下预言机的代理合约的两种设计模式 2020年10月25日](https://blog.csdn.net/Tesla_Zhou/article/details/109272288)

(2)策略模式

	更改合约中部分特定功能函数的代码。放弃在合约A中实现某特定函数来执行某特定功能,而是采用**在合约A中通过调用未实现某特定功能的接口**,又有其它实现了该接口的特定不同算法的合约B、B`、B``、B```......来处理该任务,通过在合约A中切换合约B、B`、B``、B```......,可以有效地在不同的“策略”之间进行切换。

【合约A中切换接口,例如:function getB (InterfaceB newInterfaceB) { …} ,其中newInterfaceB在函数体中为一个address

Compound 就是一个很好的例子,它具有不同的 RateModel实现计算利率及其

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值