一、序
根据设计,智能合约是不可变的,每一笔用来转账、部署合约或者和合约交互的交易都被存在一个叫做区块链的公共账本上。一旦交易发生,就再也无法隐藏或者改变。但随之而来的就是智能合约一旦部署之后,就再也无法改变源码。开发中心化应用会为了修复BUG或者引入新的特性而频繁更新产品。但这种方式却不适用以太坊。
二、代理模式
尽管想升级已经部署的智能合约中的代码是不可能的,但是可以通过设计一个代理合约结构,这个结构可以让你可以通过新部署一个合约的方式,来实现升级主要的处理逻辑的目的。
所有消息通过一个代理合约来间接调用最新部署的逻辑合约。如果想要升级的话,只需要部署一个新的合约,然后在代理合约中更新引用新的合约地址就可以了。