当前位置: 首页 > web >正文

Slither 审计自己写的智能合约

作为区块链开发者,写完合约之后最重要的一步就是 检查代码有没有漏洞。一旦部署到链上出了问题,不仅修复麻烦,还可能直接造成资金损失。
Slither 是一款非常好用的自动化审计工具,可以帮你快速找出大部分常见风险。这篇文章专门讲 “只审计自己写的合约” 怎么做,流程简单、注意事项清楚,帮你高效定位风险。


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

安装
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 核心工具:

pip3 install slither-analyzer

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

pip3 install solc-select

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


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

1. 准备合约文件

把你写的合约(比如 MyContract.sol)单独放在一个文件夹里,不要和第三方库混在一起,以免干扰结果。
同时确认合约开头的版本声明,比如:

pragma solidity ^0.8.19;

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

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

solc-select install 0.8.19 
solc-select use 0.8.19

3. 运行审计

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

slither MyContract.sol

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

slither ./contracts

4. 查看结果

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

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

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

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


三、审计时的注意事项

1. 排除第三方依赖

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

slither MyContract.sol --exclude-dependencies

2. 业务逻辑要人工复查

Slither 很擅长找基础漏洞,但业务逻辑还是要你自己检查。
例如:Slither 提示函数没有访问控制,就要看看是不是忘了加 onlyOwner。

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

Slither 可能会提示:

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

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

4. 保持工具版本最新

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

pip3 install --upgrade slither-analyzer solc-select update

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

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

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

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

    slither MyContract.sol --export json report.json

总结

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

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

  • slither MyContract.sol 一键跑审计

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

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

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

http://www.xdnf.cn/news/18603.html

相关文章:

  • MySQL InnoDB记录存储结构深度解析
  • 服务发现实例和服务实例是不同的
  • reactive 核心要点
  • Unreal Engine UPrimitiveComponent
  • 数据分析编程第二步: 最简单的数据分析尝试
  • day58 拓扑排序 (kama117. 软件构建) dijkstra(朴素版)(kama47. 参加科学大会)
  • 无人机电机与螺旋桨的匹配原理及方法(一)
  • JavaSSM框架从入门到精通!第三天(MyBatis(二))!
  • Python训练营打卡Day40-简单CNN
  • 【51单片机数码管字符左移】2022-11-11
  • 如何低门槛自制Zigbee 3.0温湿度计?涂鸦上新开发包,开箱即用、完全开源
  • 开源AI编程工具Kilo Code的深度分析:与Cline和Roo Code的全面对比
  • Tiger任务管理系统-13
  • 【jar包启动,每天生成一个日志文件】
  • Unity UnityWebRequest高级操作
  • Ubuntu部署K8S集群
  • Jmeter+Jenkins接口压力测试持续集成
  • 【motion】基于标签重合度的匹配算法1:原理
  • 3D打印小批量低成本打印玩具工艺品模型-中科米堆CASAIM
  • 字节Seed-OSS开源,不卷参数卷脑子
  • 从零开始搭 Linux 环境:VMware 下 CentOS 7 的安装与配置全流程(附图解)
  • 如何修复“DNS服务器未响应”错误
  • AP服务发现PRS_SOMEIPSD_00160的解析
  • 开源版CRM客户关系管理系统源码包+搭建部署教程
  • 深度学习入门详解:从神经网络到实践应用
  • vggt复现
  • 正点原子【第四期】Linux之驱动开发学习笔记-2.1LED灯驱动实验(直接操作寄存器)
  • Mysql InnoDB 底层架构设计、功能、原理、源码系列合集【四、事务引擎核心 - MVCC与锁机制】
  • 【AI应用】向量数据库Milvus详细命令
  • 找不到vcruntime140_1.dll 无法执行的故障要怎么搞?解决方法分享