? ? Slither是一個專門用來對智能合約進行Bug分析的工具,使用Slither可以方便的檢測合約里的缺陷和漏洞,但是該工具有漏報現象,比如對for回圈里的資料溢位檢測就不是很靈敏,需要人工審計代碼,
1、本地方式安裝Slither
a) 先安裝Python3
? ? 安裝Python3的方法,請看這篇文章的第9章節,
b)再安裝Slither
? ? 打開一個黑框框終端,依次輸入如下命令:
python3 -m pip install --upgrade pip
pip3 install slither-analyzer
2、使用Slither
2.1 docker方式安裝slither
? ? a) 先安裝docker
? ? 在Mac上安裝docker,請看這篇文章
? ? b) 在docker里拉取slither鏡像
docker pull trailofbits/eth-security-toolbox
2.2 創建合約
? ? 創建contracts/DoubleWrite.sol合約
mkdir -p /Users/apple/Documents/myProject/docSafe/unit01/check03/contracts
touch DoubleWrite.sol
? ? DoubleWrite.sol的內容如下:
? ? //DoubleWrite.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.6.0;
contract Buggy {
function doWrite() pure external {
uint a = 300;
uint b = 500;
a = b;
uint c = 800;
a = 1000;
b = c;
}
}
2.3 測驗合約
? ? 打開一個黑框框終端,啟動輸入如下命令:
docker run -it -v /Users/apple/Documents/myProject/docSafe/unit01/check03/contracts:/contract trailofbits/eth-security-toolbox
? ? 上述命令的含義:啟動一個eth-security-toolbox容器,將本地PC地址:/Users/apple/Documents/myProject/docSafe/unit01/check03/contracts ,映射到docker里/contract地址
? ? 使用slither檢查DoubleWrite合約
## 進入docker的/contract檔案夾
cd /contract
## 檢查合約
slither DoubleWrite.sol --solc /usr/bin/solc-v0.6.11
? ? 如圖(1)所示,slither已經檢查出uint a被賦值了2次,即發生了重寫(多余的賦值),可以將多余的賦值陳述句去掉即可,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/323112.html
標籤:區塊鏈
