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.pswp.cn/news/919906.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/919906.shtml
英文地址,請注明出處:http://en.pswp.cn/news/919906.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python萬里長征6(非教程)pandas篩選數據三基礎、三核心、三高級

文章目錄一、背景二、布爾索引2.1 總結三、進階核心用法(實用高效)3.1 多條件組合3.2 字符串表達式(類似SQL)3.3 針對字符串的正則匹配四、高級方法(依賴基礎)4.1 函數應用(如apply()或lambda&a…

阿里云上部署nuxt開發的項目(SSG和SSR混合渲染)

1.項目說明及配置 // nuxt.config.ts export default defineNuxtConfig({// ... 其他配置// Nitro 引擎讓你可以非常精細地為每個頁面定義渲染策略nitro: {// 預設取決于你的部署平臺,例如 vercel, netlify, static 等,或者node-serverpreset: vercel, // 這里以 Vercel 為例…

RWA加密金融高峰論壇星鏈品牌全球發布 —— 穩定幣與Web3的香港新篇章

隨著全球數字金融不斷演進,穩定幣(Stablecoin)與真實世界資產(RWA)已成為連接傳統金融與Web3世界的核心通道。行業投研報告預計,RWA市場規模將在未來五年突破10萬億美元,而穩定幣正加速進入跨境…

玩轉Vue3高級特性:Teleport、Suspense與自定義渲染

玩轉Vue3高級特性:Teleport、Suspense與自定義渲染 掌握Vue3革命性渲染特性,構建更靈活強大的前端應用 一、高級渲染特性全景概覽 Vue3引入了三大革命性渲染特性,徹底改變了開發體驗: 特性 解決的問題 典型應用場景 Teleport DOM結…

Qt/C++開發監控GB28181系統/錄像文件回放/自動播放下一個錄像文件/倍速回放/錄像文件下載

一、前言說明 之前錄像文件的回放功能已經是好的,后面用戶提出來一個新的合理的需求,那就是播放完上一個錄像文件,希望自動播放下一個文件,之前是播放完成后就關閉了,需要手動雙擊錄像文件才會再次播放,這…

Kali Linux 發布重構版Vagrant鏡像:通過命令行快速部署預配置DebOS虛擬機

Kali Linux團隊宣布對其Vagrant鏡像構建流程進行重大升級,通過改用DebOS系統替代原有的HashiCorp Packer工具,顯著簡化了預配置虛擬機的開發與部署流程。此次更新還附帶實用速查表,幫助安全從業者快速上手。技術架構革新Vagrant box是可通過命…

關于鏈式二叉樹的幾道OJ題目

今天筆者帶領讀者做幾道鏈式二叉樹OJ題目,希望讀者和筆者一起思考! 1.965. 單值二叉樹 - 力扣(LeetCode) 這道題思路不難想,首先知道單值二叉樹的定義:所有結點的值都相同,傳入的是第一個根節…

【ECharts】2. ECharts 性能優化

動態(按需)加載異步子組件 之前說過 ECharts 如何封裝,今天來講一講 ECharts 如何做性能優化。 對于之前 ECharts 的封裝子組件,我們可以使用 component 動態組件的方式進行渲染,并傳參。 并且使用 import 動態導入搭配 defineAsyncCompon…

如何創建自己的 Minecraft 世界

步驟1:準備虛擬服務器運行以下命令來更新系統的軟件包列表并應用所有待處理的升級:sudo apt update sudo apt upgrade -y您的系統已更新完畢,您已準備好進行下一步。第 2 步:安裝依賴項并創建安全用戶LinuxGSM 需要一些軟件才能正…

vue中監聽頁面滾動位置

vue中監聽頁面滾動位置問題描述實現代碼1. 獲取頁面被卷起的高度2. 監聽滾動事件問題描述 頁面滾動到指定位置時,展示側邊欄導航。 實現代碼 1. 獲取頁面被卷起的高度 使用 e.target.scrollTop可以獲取到頁面向上滾動了多少像素,代碼如下:…

docker:compose

docker三劍客:compose、swarm、machinemachine是在不同環境(不同的操作系統平臺上安裝)下部署docker的compose是做容器編排的swarm是做docker集群管理的Compose 簡介口任務( task ) : 一個容器被稱為一個任…

GaussDB 數據庫架構師修煉(十八) SQL引擎-計劃管理-SQL PATCH

1 業務背景GaussDB的優化器生成計劃不優的情況下,對DBA調優過程中不對業務sql修改場景下,提供3種計劃管理,分別為plan hint,sql patch,spm。2 sql patch的使用場景在發現查詢語句的執行計劃、執行方式未達預期的場景下,可以通過創…

函數式編程從入門到精通

1.概述1.1為什么學&#xff1f;* 能夠看懂公司里的代碼 * 大數量下處理集合效率高 * 代碼可讀性高 * 消滅嵌套地獄//查詢未成年作家評分在70分以上的書籍&#xff0c;由于流的影響所以作家和書籍可能會重復出現&#xff0c;所以要去重public void test1() {List<Book> bo…

Overleaf 中文報錯和中文不顯示問題的解決方案

Overleaf是一個很方便的在線latex編輯工具。但在最初使用Overleaf的時候&#xff0c;是不是有很多小伙伴會遇到模板中中文報錯或者中文不顯示的問題呢&#xff1f; 本文將帶你一步步解決這個問題~ 中文報錯 在點擊重新編譯按鈕后&#xff0c;中文報錯問題一般會有如下圖紅框顯示…

前后端聯調場景以及可能會遇到的問題

一、異地和在一起辦公的方式 首先&#xff0c;在一起辦公&#xff08;同局域網&#xff09;的情況&#xff0c;最常用的應該是直接使用后端的局域網 IP 進行聯調&#xff0c;因為同一網絡內設備可以直接通信。步驟方面&#xff0c;需要后端提供 IP 和端口&#xff0c;前端配置…

【T113自制板卡】1 - 原理圖說明

文章目錄1、前言2、板卡資源總覽3、電源3.1、板卡供電3.2、電源方案4、OTG接口5、調試串口6、用戶LED7、FLASH8、按鍵9、BLE MESH10、Wi-Fi11、MIC12、喇叭接口13、MIPI接口1、前言 這幾天跟著小智學長的課程畫了一塊t113的板子。本文將描述該板卡的硬件說明。 2、板卡資源總…

WiFi有網絡但是電腦連不上網是怎么回事?該怎么解決?

有時候&#xff0c;咱們用電腦上網&#xff0c;打開WiFi一看&#xff0c;信號滿格&#xff0c;狀態欄顯示已連接&#xff0c;本來想著可以愉快地看個番、查個資料、玩個游戲了&#xff0c;結果一打開瀏覽器&#xff0c;直接完犢子了&#xff0c;網頁都打不開。這時候再看狀態&a…

【golang】制作linux環境+golang的Dockerfile | 如何下載golang鏡像源

一、關于如何下載docker images 這里需要大家自行科學上網如果沒有話&#xff0c;下面可以使用我自行打包的golang 的docker images 注意科學上網要開啟TUN模式二、golang鏡像源 1、阿里云公開鏡像 如果找不到golang包的小伙伴可以使用我的公開阿里鏡像docker pull registry.cn…

Day58 Java面向對象13 instanceof 和 類型轉換

Day58 Java面向對象13 instanceof 和 類型轉換 1.instanceof關鍵字 instanceof關鍵字的作用是判斷一個對象是否是某個類或其子類的實例,它返回一個布爾值true/false dog1 instanceof Dog; //返回true dog1 instanceof Animals; //返回true dog1 instanceof Object; //返回…

GEO優化案例:如何通過“知識圖譜+權威信號”提升品牌AI信任度

引言&#xff1a; “在AI日益成為用戶信息入口的今天&#xff0c;品牌信息能否被AI賦予‘權威’標簽&#xff0c;直接決定了其在搜索結果中的可見度和用戶采信度。移山科技正是這方面的專家。” 一、行業趨勢概覽&#xff1a;AI時代的品牌信任與GEO的價值 2025年&#xff0c…