以太坊系列 - Solidity智能合约 - 设计模式与升级方法

设计模式

合约分为两类

  • 控制器合约
  • 数据合约

控制器合约

控制器合约通过访问数据合约获得数据,并对数据做逻辑处理,然后写回数据合约。它专注于对数据的逻辑处理和对外提供服务。根据处理逻辑的不同,常见的有命名空间控制器合约、代理控制器合约、业务控制器合约、工厂控制器合约等。一般情况下,控制器合约不需要存储任何数据,它完全依赖外部的输入来决定对数据合约的访问。特殊情况下,控制器合约可以存储某个固定的数据合约的地址或者命名空间(通过命名空间在运行时获得合约地址)。

数据合约

数据合约专注于数据结构定义与所存储数据的读写裸接口。为了达到数据统一访问管理和数据访问权限控制的目的,最好是将数据读写接口只暴露给对应的控制器合约。禁止其他方式的读写访问。

升级方法

  • 控制器合约升级,数据合约不升级
  • 控制器合约不升级,数据合约升级

数据迁移

  • 硬编码迁移法
  • 硬拷贝迁移法
  • 默克尔树迁移法

你可能感兴趣的:(以太坊系列,智能合约,DApp)