Slither 审计自己写的智能合约

作为区块链开发者,写完合约之后最重要的一步就是 检查代码有没有漏洞 。一旦部署到链上出了问题,不仅修复麻烦,还可能直接造成资金损失。

Slither 是一款非常好用的自动化审计工具,可以帮你快速找出大部分常见风险。这篇文章专门讲 "只审计自己写的合约" 怎么做,流程简单、注意事项清楚,帮你高效定位风险。


****** Slither 使用速查表 ******

bash 复制代码
安装
pip3 install slither-analyzer
pip3 install solc-select   # 可选

切换 Solidity 版本
solc-select install 0.8.19
solc-select use 0.8.19

运行审计
slither MyContract.sol          # 单个合约
slither ./contracts             # 文件夹下所有合约
slither MyContract.sol --exclude-dependencies   # 排除第三方依赖

导出报告
slither MyContract.sol --export json report.json

一、Slither 怎么安装?

Slither 基于 Python,所以需要先确认你电脑已经有 Python 3.8+pip。之后两步搞定:

  1. 安装 Slither 核心工具:
bash 复制代码
pip3 install slither-analyzer

2.(可选)安装 Solidity 版本切换工具:

bash 复制代码
pip3 install solc-select

用来切换不同的 Solidity 编译器版本,避免版本不兼容导致分析失败。


二、审计自己写的合约,操作流程

1. 准备合约文件

把你写的合约(比如 MyContract.sol)单独放在一个文件夹里,不要和第三方库混在一起 ,以免干扰结果。

同时确认合约开头的版本声明,比如:

bash 复制代码
pragma solidity ^0.8.19;

2. (可选)切换到匹配的 Solidity 版本

如果你的合约用了特定版本,最好用 solc-select 切换一下,避免兼容性问题:

bash 复制代码
solc-select install 0.8.19 
solc-select use 0.8.19

3. 运行审计

进入存放合约的目录,运行:

bash 复制代码
slither MyContract.sol

如果有多个合约,就把它们放进一个文件夹(比如 contracts/),再运行:

bash 复制代码
slither ./contracts

4. 查看结果

Slither 会在终端里输出漏洞清单,包括:

  • 严重等级:Critical(致命)、High(高危)、Medium(中危)、Low(低危)

  • 漏洞类型:比如 重入攻击、权限缺失、算术溢出等

  • 定位行号:直接指向代码里的问题位置


三、审计时的注意事项

1. 排除第三方依赖

我们只关心自己写的逻辑。如果用了 OpenZeppelin 等库,可以这样排除:

bash 复制代码
slither MyContract.sol --exclude-dependencies

2. 业务逻辑要人工复查

Slither 很擅长找基础漏洞,但业务逻辑还是要你自己检查。

例如:Slither 提示函数没有访问控制,就要看看是不是忘了加 onlyOwner。

3. 不要把"优化建议"当漏洞

Slither 可能会提示:

  • 未使用的变量
  • 条件语句可简化
  • Gas 优化空间

这些只是建议,如果是你设计上的考虑,可以忽略,重点盯住 Critica 和 High。

4. 保持工具版本最新

新 Solidity 语法(如 immutable 的改动)旧版 Slither 可能不支持,所以要定期更新:

bash 复制代码
pip3 install --upgrade slither-analyzer solc-select update

四、审计结果出来后怎么办?

  1. 优先修复 致命和高危漏洞(比如重入、权限绕过),修复后一定要再跑一遍 Slither。

  2. 中危、低危问题,看需求决定要不要改。

  3. 保存审计报告,方便以后对比:

    bash 复制代码
    slither MyContract.sol --export json report.json

总结

  • 安装 Slither +(可选)solc-select

  • 合约单独放目录,必要时切换编译器版本

  • slither MyContract.sol 一键跑审计

  • 重点关注:Critical / High 级别漏洞

  • 结合业务逻辑,自己再核查

Slither 不能替代人工审计,但它能帮你在 最短时间发现最关键的问题,是开发者自检的必备工具。