工具调研:https://www.xmind.net/m/GvA82t
很多工具都3年多不再更新,猜测跟solidity升级0.8版本有关,也就是说如果合约基于0.8版本以上,那些很久不更新的工具可能大多都不再适用。
Tips
Solidity Compiler,基本被所有工具依赖
Docs: https://docs.soliditylang.org/en/v0.8.17/installing-solidity.html
# 注意,这里要安装原生版本的solc,有些工具不支持solcjs
sudo add-apt-repository ppa:ethereum/ethereum
sudo apt-get update
sudo apt-get install solc
solc --version
不同合约可能使用不同版本的solidity,可借助solc-select来切换默认的solc版本。
echidna的docker环境已经默认安装,使用Python搭建manticore需要自己安装
pip install solc-select
"
如果安装报错
TypeError: Descriptors cannot not be created directly.
If this call came from a _pb2.py file, your generated code is out of date and must be regenerated with protoc >= 3.19.0.
pip install --upgrade "protobuf<=3.20.1"
"
# 安装被测合约对应的solc版本,存储路径:./solc-select/artifacts
solc-select install 0.5.7
solc-select use 0.5.7 # 切换到编译被测合约所需要使用的solc版本
solc-select versions # 显示已安装版本和当前使用版本
Crytic 是 TrailofBits 的合约安全团队
官方文档包括一些教程推荐使用这个工具包来搭建环境,因为它集成了TrailofBits的几个工具

但那些文档和这个工具包貌似都已经过时了,查看eth-security-toolbox的Dockerfile,显示依赖最新的Etheno镜像,Etheno镜像的Dockerfile显示基础镜像为 ubuntu:Focal ,但最后拉取的eth-security-toolbox却默认是 ubuntu:Bionic ,包括默认Python等一些依赖都已经不符合要求,尝试更改Dockerfile手动build也失败,发现Etheno中已经移除了Solc, Manticore, Echidna等,所以最终放弃使用这个工具包