智能合约安全保障checklist
一、设计阶段
要根据业务,区分出角色、活动阶段。
明确各种角色在各种活动阶段, 有什么样的执行权限
活动的特点,容易在什么阶段、受到什么样的攻击
兜底策略应该有哪些
二、开发阶段
- 注重实施访问权限控制,按照最小特权原则
- 尽量使用现有、社区审核的库
- 多使用modifier修饰符
- 防范类型溢出,比如Number等数值
- 严格参数校验
- 紧急停止机制,比如暂停、冻结提款等
三、测试阶段
- 单元测试覆盖率100%
- 使用主网模拟、测试网做自动化集成测试
- 使用安全测试框架,比如Truffle,做property-checking, fuzzing, and formal verification
四、防范攻击
五、安全审计
- 使用文档生成工具以及高级设计解释来生成实时文档
- 使用安全测试框架,比如Truffle,做property-checking, fuzzing, and formal verification
- SAST工具进行代码分析
- 合约自动化检测工具(如Mythril、Slither等)进行静态分析
- 聘请专业的安全审计团队进行第三方审计
- 赏金计划,给社区发现bug的人提供奖励
五、发布部署
- 发布源码到etherscan,提升透明度
- 合约内要做分阶段,例如,前面阶段只放开什么功能,只允许哪类角色用户执行
- 代理合约(Proxy Contract)和逻辑合约(Logic Contract)的设计模式,可以实现智能合约的灵活升级
六、监控
- 用etherscan查看合约的交易流水、事件日志等