設計模式
合約分爲兩類
- 控制器合約
- 數據合約
控制器合約
控制器合約通過訪問數據合約獲得數據,並對數據做邏輯處理,然後寫回數據合約。它專注於對數據的邏輯處理和對外提供服務。根據處理邏輯的不同,常見的有命名空間控制器合約、代理控制器合約、業務控制器合約、工廠控制器合約等。一般情況下,控制器合約不需要存儲任何數據,它完全依賴外部的輸入來決定對數據合約的訪問。特殊情況下,控制器合約可以存儲某個固定的數據合約的地址或者命名空間(通過命名空間在運行時獲得合約地址)。
數據合約
數據合約專注於數據結構定義與所存儲數據的讀寫裸接口。爲了達到數據統一訪問管理和數據訪問權限控制的目的,最好是將數據讀寫接口只暴露給對應的控制器合約。禁止其他方式的讀寫訪問。
升級方法
- 控制器合約升級,數據合約不升級
- 控制器合約不升級,數據合約升級
數據遷移
- 硬編碼遷移法
- 硬拷貝遷移法
- 默克爾樹遷移法