跳转至主要内容

智能合约安全清单

智能合约安全性solidity
中级
✍️Trailofbits
📚构建安全的合约(opens in a new tab)
📆 2020年9月7日
⏱️4 分钟阅读 minute read

智能合约开发清单

这是一个高级别的过程,我们建议在您编写智能合约时遵循。

检查已知的安全问题:

  • 使用 Slither(opens in a new tab) 审核您的合约。 该程序有 40 多个内置检测器,可以应对常见的脆弱性。 在每次签入时使用新代码运行它,确保它获得一个干净的报告(或使用分类模式来消除某些问题)。
  • 使用 Crytic(opens in a new tab) 审核您的合约。 它可以检查 Slither 未涉及的 50 个问题。 Crytic 还可以帮助您的团队成员保持联系,通过在 GitHub 上的拉取请求轻松显示安全问题。

考虑您的智能合约的特殊功能:

目视检查代码的关键安全功能。

记录关键安全属性,并使用自动化测试生成器对其进行评估:

  • 学习 记录代码的安全属性。 一开始是艰难的,但它是实现良好结果的最重要的活动。 这也是使用本教程中任何高级技术的先决条件。
  • 在 Solidity 中定义安全属性,用于 Echidna(opens in a new tab)Manticore(opens in a new tab)。 重点是您的状态机、访问控制、算术运算、外部交互和标准一致性。
  • 使用 Slither 的 Python API 定义安全属性。 重点是继承、变量依赖项、访问控制和其他结构问题。
  • 在每次提交时,使用 Crytic(opens in a new tab) 运行您的属性测试。 Crytic 可以使用和评估安全属性测试,因此团队中的每个人都可以轻松地看到他们通过 GitHub。 测试失败会阻止提交。

最后,请注意自动化工具无法轻易找到的问题:

  • 缺乏隐私:当您的事务在池中排队时,其他所有人都可以看到您的事务
  • 抢先提前交易
  • 加密操作
  • 与外部 DeFi 组件的风险互动

寻求帮助

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

加入我们的 Slack: Empire Hacking(opens in a new tab)。 如果您有任何问题,可以随时在 #crytic 和 #ethereum 频道上联系我们。

上次修改时间: @tyevlag(opens in a new tab), Invalid DateTime

本教程对你有帮助吗?