
先明确研究对象与适用范围
区块链审计研究需要注意哪些问题,首先取决于审计对象。本文讨论以太坊智能合约的代码安全与权限设计,不能直接覆盖整条区块链的共识安全,也不能替代财务审计。研究开始时,应明确合约范围、代码版本、依赖组件及部署配置,使结论对应具体对象。
以太坊开发者安全文档强调开发阶段的安全检查、组合测试与独立评审。其核心启示是:安全需要多层验证,单次审计无法排除全部缺陷。

权限检查要覆盖管理关系
OpenZeppelin访问控制文档区分了单一所有者与角色权限机制,并指出默认管理员角色能够管理其他角色及自身。放弃所有权还会使仅限所有者调用的功能无法继续使用。

因此,研究不能只检查敏感函数是否有限权标记,还应追踪谁能授予、撤销和转移权限。适用角色控制时,要确认角色之间的管理关系;适用单一所有者模式时,要评估账户失陷与权限丢失的影响。多个角色若最终受同一账户控制,仍可能存在集中的管理风险。
把业务要求转化为可验证约束
安全检查需要明确什么状态允许出现、什么操作必须失败。例如,未经授权的调用应被拒绝,输入和状态应满足业务条件,关键数量关系应在操作后保持成立。
require、assert与revert可以表达检查与异常处理,但语句存在并不代表约束完整。审计应研究条件是否准确、所有相关入口是否覆盖,以及异常路径能否留下不符合预期的结果。
组合验证方法并说明证明边界
单元测试适合验证已知场景;静态分析帮助检查代码结构与潜在路径;模糊测试通过变化输入寻找违反安全属性的情况。方法之间可以互补,测试通过仍取决于场景和属性是否覆盖关键风险。
形式化验证的结论受规范、模型和假设约束。它可以证明特定属性在这些条件下成立,但不能据此宣布整个系统不存在任何漏洞。研究报告应交代验证了哪些属性,以及哪些外部行为未被纳入。
常见问题与报告要求
使用成熟权限库是否就足够安全?仍需检查接入方式、角色配置和业务逻辑。采用多签是否消除了管理风险?还需考察签名参与方是否独立,以及门槛设置是否符合管理需求。
可复核的审计报告应记录问题位置、触发前提、潜在影响及验证依据,并区分已修复、待处理和未覆盖事项。修复后需要复核相关路径;代码或配置发生变化时,也应重新判断原有结论是否仍然适用。