智能合约部署前审计清单 smart-contract-audit

这是一个用于在区块链智能合约部署到测试网或主网之前,进行系统性安全审计的检查清单。它涵盖了从静态代码分析、访问控制、重入攻击防护、升级安全性、经济模型风险、Gas优化、外部依赖管理到事件与文档的完整审计维度。关键词:智能合约审计、区块链安全、DeFi安全、Solidity、合约部署、安全清单、漏洞检查。

智能合约 0 次安装 0 次浏览 更新于 2/23/2026

name: smart-contract-audit description: 智能合约部署前审计清单。仅限手动调用——在将任何智能合约部署到测试网或主网前使用。涵盖静态分析、访问控制、升级安全性、经济向量、Gas DoS、外部依赖、事件和文档。 disable-model-invocation: true

智能合约审计清单

在任何部署前运行此清单。逐节进行,不要跳过。

1. 静态分析

  • [ ] 运行 forge build —— 零警告
  • [ ] 运行 slither .(如果已安装)—— 审查所有发现
  • [ ] 运行 forge test -vvv —— 所有测试通过
  • [ ] 运行 forge coverage —— 检查关键路径的覆盖率
  • [ ] 没有浮动 pragma(^)—— 固定确切的 Solidity 版本
  • [ ] 没有未使用的导入、变量或函数

2. 访问控制

  • [ ] 所有外部/公共函数都有适当的访问修饰符
  • [ ] 管理员函数使用 onlyOwneronlyRole 或等效方法
  • [ ] 没有 tx.origin 检查(使用 msg.sender
  • [ ] 所有权转移是两步的(Ownable2Step
  • [ ] 关键操作受时间锁或多签保护
  • [ ] 初始化函数只能调用一次(如果是可升级合约)

3. 重入与CEI

  • [ ] 所有外部调用遵循检查-效果-交互模式
  • [ ] 在具有外部调用和状态更改的函数上使用 ReentrancyGuard
  • [ ] 考虑了跨函数重入(共享状态)
  • [ ] 考虑了只读重入(回调期间的视图函数)

4. 升级安全性(如适用)

  • [ ] 存储布局与先前版本保持一致
  • [ ] 没有构造函数逻辑(使用 initializer
  • [ ] 在实现构造函数中使用 _disableInitializers()
  • [ ] 使用 EIP-1967 存储槽存储代理状态
  • [ ] forge inspect 存储布局与先前版本比较
  • [ ] 升级函数受访问控制

5. 经济/DeFi向量

  • [ ] 闪电贷抵抗(无同区块治理/定价)
  • [ ] 交换的滑点保护(最小输出量、截止时间)
  • [ ] 预言机新鲜度检查(Chainlink:updatedAtansweredInRound
  • [ ] 不依赖单一来源的现货价格
  • [ ] 代币批准模式安全(无理由不进行无限批准)
  • [ ] 处理费用转移代币(如果接受任意 ERC-20)
  • [ ] 处理回基代币(如果接受任意 ERC-20)

6. Gas 与 DoS

  • [ ] 没有对用户控制数组的无限制循环
  • [ ] 支付使用拉取而非推送模式
  • [ ] 考虑了外部调用的 Gas 限制
  • [ ] 没有针对迭代的区块 Gas 限制攻击
  • [ ] 回退/接收函数没有复杂逻辑

7. 外部依赖

  • [ ] OpenZeppelin 版本固定且最新
  • [ ] 外部合约地址已验证(未错误地硬编码)
  • [ ] 接口兼容性与实际部署的合约已验证
  • [ ] 关键逻辑不依赖 block.timestamp(15秒差异)
  • [ ] 时序不依赖 block.number(因链而异)

8. 事件与 NatSpec

  • [ ] 所有状态更改都发出事件
  • [ ] 事件的关键字段有索引参数(最多3个)
  • [ ] 所有公共/外部函数都有 NatSpec @notice
  • [ ] 所有参数都有 NatSpec @param
  • [ ] 所有返回值都有 NatSpec @return
  • [ ] NatSpec @dev 用于实现说明

9. 部署验证

  • [ ] 构造函数参数已记录并验证
  • [ ] 部署脚本在本地分叉上测试
  • [ ] 合约在区块浏览器上已验证
  • [ ] 部署后初始状态已验证
  • [ ] 管理员地址正确(主网不是部署者EOA)

严重性分类

严重性 影响 行动
严重 资金损失,访问控制绕过 阻止部署
重大财务风险,DoS 阻止部署
有限影响,边缘情况 主网前修复
最佳实践,Gas 优化 方便时修复
信息 风格,文档 可选

审计后

完成此清单后:

  1. 记录所有发现及其严重性
  2. 修复所有严重和高危问题
  3. 修复后重新运行清单
  4. 对于高价值合约,考虑专业审计