为DeFiHackLabs配置运行环境
TODO: 我也是初学者,这里的东西主要是我以一个初学者的视角折腾相关东西的记录,大抵是充满错误的。等我再努力努力应该能返回来修正。仅供参考。
https://github.com/SunWeb3Sec/DeFiHackLabs
很遗憾,看起来这个仓库维护的一般,主要体现在:
- 一些
/past/xx中的shell没办法运行 - 环境的配置不够清晰
当然,也有可能是随着时间更新,各种依赖出现了breaking change导致的。
无论如何,以下是在2025/10/27把DeFiHackLabs跑起来的步骤,供大家参考。
对应的DeFiHackLabs版本是commit dd6934。
正确下载DeFiHackLabs
在/libs里面,DeFiHackLabs依赖了一些子模块(forde-std),
所以要么按照原文README的说明,使用git clone git submodule update --init --recursive命令下载;
也可以clone时直接加上--recurse-submodules参数:
1 | git clone --recurse-submodules https://github.com/SunWeb3Sec/DeFiHackLabs.git |
如果直接Download ZIP的话,/libs目录下的内容是空的,会导致后续运行报错,去 https://github.com/foundry-rs/forge-std 手动下载forge-std放到/libs目录下。
配置foundry环境
参考foundry - Ethereum Development Framework下载Foundry。
对于我的电脑(Windows 11),我选择的是直接下载Prebuild Release,而不是getfoundry.sh脚本。
- 前往Foundry Releases页面,下载最新的Prebuilt Release。不一定要用Nightly版本,稳定版也可以。
- 解压下载的压缩包到你想安装Foundry的目录。一般就是4个可执行文件:
forge.exe、cast.exe、anvil.exe和foundryup.exe。小剧场:
我下的是
foundry_v1.4.2_win32_amd64.zip,写文章时一看发现foundry已经更新到v1.4.3了。(超高速版本迭代.jpg) - 添加Path环境变量。
文档有关的一个小问题
If you’re using Windows, you’ll need to install and use Git BASH or WSL as your terminal, since Foundryup currently doesn’t support Powershell or Command Prompt (Cmd).
对于文档中的这个内容,我个人看起来是自带的Windows Terminal(cmd或PowerShell)都可以使用,不一定非要用Git BASH或WSL。如果你要用Windows Terminal,要注意的是:文档中的一些语法,例如export之类,在powershell/cmd中有其它的写法,可以询问LLM。
UPDATE: 眼瞎了,文档说的是Foundryup不支持cmd/powershell,而不是Foundry本身不支持。
开起来一个Private Network
使用anvil命令开起来一个本地的以太坊网络。
1 | anvil |
这tm不比geth好用
开完应该会有类似下面的输出:
1 |
|
记住一个Chain ID(我这里是31337),然后记住RPC地址http://127.0.0.1:8545(这个应该都是一样的)。
支线任务:配Metamask
- 打开Metamask,点击右上角的网络选择下拉菜单,选择“添加网络”。
- 在“添加网络”页面,填写以下信息:
- RPC URL:
http://127.0.0.1:8545 - Chain ID:
31337(根据anvil输出的实际Chain ID填写)
- RPC URL:
- 然后其它东西应该就全帮你填好了,确认一下,然后保存即可。
配置DeFiHackLabs项目
主要是配置foundry.toml文件。
1 | [rpc_endpoints] |
我的理解是,这些RPC endpoints是用来在不同网络上拉取block区块数据的,然后如果DeFiHackLabs跑不起来,多半就是这个RPC endpoints炸了(比如限速/rate limit/被墙了之类的)。
有点幽默的是https://eth.llamarpc.com/我直接在浏览器中访问会rpc-proxy is running fine.,但是DeFiHackLabs跑不起来,提示[FAIL: EVM error; database error: failed to get account for 0x690B9A9E9aa1C9dB991C7721a92d351Db4FaC990: server returned an error response: error code -32603: state at block #19290921 is pruned] 。
我干的是找一个可用的RPC Endpoint,把所有东西都换成它的。
具体的说,我找的是Ankr的High-Performance Blockchain Node Infrastructure: 70+ Web3 APIs & RPCs,免费版提供的额度是:
- 30 reqs/sec Node API
- 30 reqs/min Advanced API
- Limited chains
- Fixed regions
- Community support
不一定要用我这个,可以以”Web3 RPC Provider”/“Web3 API”为关键词在网上找其它的。然后如果不出意外,你找到的应该都会要求注册账号登录(这对吗?)
进入后台,创建一个新的Project,然后就能看到对应的RPC Endpoint URL了。

下面的Chains都可以点击,然后看到对应的HTTPS Endpoints。

基本上都有,有一部分名字可能需要猜一下:
- mainnet <-> Ethereum
- bsc <-> BNB Smart Chain
别的一一对应即可。
开跑
回到DeFiHackLabs的根目录,运行:
1 | forge test --contracts ./src/test/2025-08/SizeCredit_exp.sol -vvv |
其中./src/test/2025-08/SizeCredit_exp.sol是你要跑的测试合约路径,可以根据需要更换。
对于/past/2024里面的一些内容,它测试脚本写的是forge test --match-contract CompoundUni_exp -vvv,我跑的时候发现它似乎会把所有的测试合约都跑一遍,不清楚为什么。对于这种,可以把--match-contract CompoundUni_exp改成--contracts ./src/test/2024-xx/CompoundUni_exp.sol来指定具体的测试合约路径。