← 返回知识中心

智能合约上线前:安全与发布检查清单

源代码审计很重要,但绝不是唯一防线。智能合约安全由明确的状态模型、受限权限、可复现构建、受保护密钥和经过演练的响应流程共同组成。

V
Virtek 网络安全团队基础设施与数据保护

明确资产与禁止状态

记录合约控制的数据、代币、权利或资金限额。对每个函数说明调用者、前置条件、状态变化、外部调用和预期结果,并明确不变量,例如余额不能为负、发行量不能超限、关闭对象不能绕过批准流程重新开启。

威胁模型不仅要考虑匿名攻击者,还要覆盖被盗管理员密钥、错误预言机、不可用依赖、不安全升级,以及合法用户以意外顺序调用合法函数。

限制管理权限

检查铸造、暂停、升级、参数修改和资产转移角色。关键操作不应依赖一个人的单一密钥,应根据风险使用职责分离、多方批准、时间延迟和额度限制。

记录密钥生成、托管、备份、轮换、撤销及泄露恢复的完整生命周期。把服务密钥放在应用环境变量中,不足以保护不可逆的高价值操作。

检查逻辑与交互

验证地址、范围、重复请求、零值和边界状态。任何外部调用都可能失败、消耗异常 gas、改变行为,或在本次操作完成前回调。应先检查条件,再更新内部状态,最后执行外部交互。

预言机属于可信计算基础。必须定义来源、最大数据时效、聚合方式、偏差限制、备用通道和停止更新时的安全行为。数据写上链并不等于数据真实。

建立多层验证

最低要求包括单元与集成测试、负面场景、权限测试和可复现构建。关键逻辑还应加入属性测试、模糊测试、静态分析和不变量检查。形式化验证适合保护高影响的小型核心,但不能替代集成与运行测试。

独立审计应针对冻结版本。修复后需要复查变更区域并执行完整回归。源代码、编译器版本、构建参数和已部署字节码必须可以对应和验证。

准备受控发布

用与生产相同的流水线在测试环境演练部署。检查依赖地址、角色持有者、初始参数、限额和权限移交顺序,保存提交哈希、构建产物、合约地址和审批记录。

升级机制本身就是特权路径。使用代理或状态迁移时,要测试存储兼容性、升级授权和恢复。若合约不可变,则必须在上线前设计替换与迁移流程。

监控与应急模式不可缺少

为关键变化生成事件,监控异常金额、频率、失败、角色变化和管理调用。每个告警都要对应行动:谁决策、如何限制损失、能否暂停操作,以及如何通知参与方。

演练密钥泄露、预言机错误和上线后发现漏洞。若暂停密钥不可用,或团队不知道何时使用,暂停功能就没有实际价值。

最终准入门槛

  • 需求和不变量已由流程负责人批准;
  • 角色和密钥遵循最小权限;
  • 外部调用与预言机能够安全失败;
  • 测试、分析和独立审计对应本次发布版本;
  • 源代码与字节码可验证;
  • 监控、暂停、升级和响应已经演练;
  • 责任人书面接受剩余风险。

任何关键项若不能用证据证明,都应停止发布,而不是承诺上线后再检查。

需要适合业务的
技术架构?

我们将分析输入条件、风险和限制,并提出有依据的解决方案。

咨询工程师↗︎