- 固定的入口合约(不可升级)
- 固定的事件合约(不可升级)
- 固定的Data合约(不可升级)
- 通过Owner关系、白名单等机制控制业务逻辑合约对以上三个合约的读写权限
- 业务逻辑合约地址注册到Data,业务逻辑合约地址之间的依赖通过Data中转、解耦
- 专用的GenInfo合约,通过数组一次返回多个前端需要的数据,减少请求次数、加快页面响应
- 全局的暂停/重启开关,升级时使用
- 升级后旧合约应该disable掉(非suicide),不再处理相关事务
以上几点带来的好处:
0,业务逻辑合约可升级,且其他逻辑合约感知不到被升级的逻辑合约的升级过程
1, 前端页面调用方便,不受升级影响
2, 所有的业务都通过入口合约转发,方便DappReview等网站收录交易量、用户数等数据
3,事件合约不变,前端展示的数据不受升级影响
4,区块浏览器的ParityTrace功能可以跟踪跨合约调用,逻辑合约读写Data都可以跟踪到,有助于定位问题
工具:
1,冷钱包签名(部署合约、调用合约)
2,parity trace 解析