常见合约更新方案及其对应的数据流(以太坊主链) 2023-02-26

注:

仅作技术交流,禁止商用

如有侵权,请联系删除


1 openzeppelin的透明代理方式

    最流行,但是有一定安全隐患和合约代码编写要求

    1 数据存储在proxy合约上,通过admin接口来升级和更新proxy合约地址

    2 访问到proxy合约的请求,会因为没有对应的方法触发fallback, 在fallback里调用 逻辑合约来完成实际功能。

    对逻辑合约的编写有一定要求,比如不允许在构造函数中初始化,不允许使用delegatecall和selfdestruct, 更新版本时不需要修改变量顺序和类型等。并且还可以优化(ProxyAdmin合约方式)

2 eip1822的uups代理标准(openzeppelin建议使用)

    一句话描述:逻辑合约继承一个接口(upgradeTo), 从而proxy合约可以去掉升级的功能并节省gas,但逻辑合约代码会更臃肿

3 usdt自己实现的更新合约更新策略

    较为简单,但稍显定制化,不通用,方案2参考了一些usdt升级实现

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容