跳转到主要内容

智能合约安全检查清单

智能合约
安全
solidity
中级
Trailofbits
2020年9月7日
5 分钟阅读

智能合约开发检查清单

以下是我们建议在编写智能合约时遵循的高级流程。

检查已知的安全问题:

  • 使用 斯莱瑟 (opens in a new tab) 审查你的合约。它内置了 40 多种常见漏洞检测器。在每次签入新代码时运行它,并确保获得干净的报告(或使用分类模式来忽略某些问题)。
  • 使用 Crytic (opens in a new tab) 审查你的合约。它能检查出 50 个斯莱瑟无法发现的问题。Crytic 还可以通过在 GitHub 的拉取请求 (Pull Request) 中轻松显示安全问题,帮助你的团队相互监督。

考虑合约的特殊功能:

直观地检查代码的关键安全特性:

记录关键的安全属性,并使用自动化测试生成器来评估它们:

  • 学习为你的代码记录安全属性。这在开始时可能很困难,但它是取得良好结果最重要的一项活动。这也是使用本教程中任何高级技术的先决条件。
  • 在 Solidity 中定义安全属性,以便与 埃基德纳 (opens in a new tab)曼蒂科尔 (opens in a new tab) 一起使用。重点关注你的状态机、访问控制、算术运算、外部交互以及标准一致性。
  • 使用 斯莱瑟的 Python API 定义安全属性。重点关注继承、变量依赖、访问控制和其他结构性问题。
  • 使用 Crytic (opens in a new tab) 在每次提交时运行你的属性测试。Crytic 可以使用并评估安全属性测试,以便你团队中的每个人都能在 GitHub 上轻松看到它们已通过。未通过的测试可以阻止提交。

最后,请注意自动化工具难以发现的问题:

  • 缺乏隐私:当你的交易在交易池中排队时,其他人都可以看到它们
  • 抢跑交易
  • 密码学操作
  • 与外部去中心化金融 (DeFi) 组件的风险交互

寻求帮助

以太坊办公时间 (opens in a new tab)在每周二下午进行。这些为期 1 小时的一对一会议是一个好机会,你可以向我们提出任何关于安全的问题,使用我们的工具进行故障排除,并从专家那里获得关于你当前方法的反馈。我们将帮助你完成本指南。

加入我们的 Slack:Empire Hacking (opens in a new tab)。如果你有任何问题,我们随时在 #crytic 和 #ethereum 频道为你解答。

页面最后更新: 2026年3月3日