欢迎订阅专栏 :10分钟智能合约:进阶实战
Foundry 是一套用 Rust 编写的以太坊智能合约开发工具链,主打速度快、效率高 ,且全面支持 Solidity,能让你在合约、测试、部署等环节都使用 Solidity 编写,无需在多种语言间切换。
它主要由四个核心工具构成:
- Forge:用于构建、测试、调试和部署合约。
- Cast:用于与链交互,发送交易和查询链上数据。
- Anvil:一个本地区块链节点,用于开发和测试,类似于 Ganache。
- Chisel:一个 Solidity 交互式编程环境 (REPL),用于快速验证代码片段。
📦 第一步:环境准备与安装
Foundry 的安装只需几步,通过其自带的 foundryup 安装工具即可完成。
-
安装
foundryup: 在终端中运行以下命令来安装foundryup:bashcurl -L https://foundry.paradigm.xyz | bash如果提示
foundryup: command not found,需要将 Foundry 的 bin 目录添加到 PATH 中:bashexport PATH="$HOME/.foundry/bin:$PATH"可以将这行命令添加到你的 shell 配置文件(如
~/.bashrc或~/.zshrc)中,以避免每次都要手动设置。 -
安装 Foundry 工具链 : 运行
foundryup命令,它会自动下载并安装最新版本的forge、cast、anvil和chisel。bashfoundryup -
验证安装: 安装完成后,可以通过以下命令检查是否成功:
bashforge --version cast --version anvil --version
🚀 第二步:初始化你的第一个项目
-
创建新项目 : 使用
forge init命令创建一个新的项目模板:bashforge init my-first-foundry-project cd my-first-foundry-project生成的目录结构如下:
bashmy-first-foundry-project/ ├── foundry.toml # 项目配置文件 ├── script/ # 部署脚本 ├── src/ # 智能合约源文件 (.sol) └── test/ # 测试文件 (.sol) -
编译合约 : 使用
forge build编译项目。bashforge build -
运行测试 : 使用
forge test运行测试。bashforge test你会看到类似
[PASS]的输出,表示测试通过。
⚙️ 第三步:核心工作流
1. 本地开发与测试 (Anvil)
anvil 命令会启动一个本地区块链节点,并创建 10 个预置了 10,000 ETH 的测试账户。
bash
anvil
启动后,Anvil 会显示每个账户的地址和私钥,方便你在测试中直接使用。
2. 部署合约 (Forge)
部署合约通常通过编写 Solidity 脚本(在 script/ 目录下)来完成。
-
部署到本地 Anvil 节点:
bashforge script script/Deploy.s.sol --broadcast --rpc-url http://localhost:8545 --private-key <你的私钥>其中
--broadcast表示执行交易,--rpc-url指定节点地址。 -
部署到测试网(如 Sepolia): 安全起见,建议使用加密的 keystore 来管理私钥,而不是直接在命令行中暴露。
bash# 1. 导入私钥到加密的 keystore cast wallet import deployer --interactive # 2. 使用 --account 参数部署 forge script script/Deploy.s.sol --account deployer --broadcast --rpc-url https://sepolia.drpc.org部署成功后,可以在 Etherscan 上验证合约源码:
bashforge verify-contract <合约地址> src/MyContract.sol:MyContract --chain sepolia
3. 与链交互 (Cast)
cast 命令提供了丰富的链上交互功能。
-
查询余额:
bashcast balance <地址> --ether --rpc-url <RPC_URL> -
查询区块号:
bashcast block-number --rpc-url <RPC_URL> -
调用合约的只读方法:
bashcast call <合约地址> "totalSupply()" --rpc-url <RPC_URL> -
发送交易:
bashcast send <接收地址> --value <金额> --private-key <你的私钥>
📝 第四步:配置与故障排查
关键配置 (foundry.toml)
项目根目录下的 foundry.toml 是核心配置文件。常用配置项包括:
- 指定 Solidity 版本 :
solc_version = "0.8.28" - 启用自动版本检测 :
auto_detect_solc = true - 添加依赖映射 :
remappings = ["@openzeppelin/=lib/openzeppelin-contracts/"] - 设置 Gas 限制 :
gas_limit = "18446744073709551615" - 启用主网分叉缓存 :
fork_cache = true
常见问题
- 编译失败,提示找不到依赖 :运行
forge install安装缺失的依赖;或者检查foundry.toml中的remappings配置是否正确。 - 测试失败,提示
EvmError: Revert:使用更高的详细级别(如-vvvv)来查看完整的调用栈,以便定位是哪个require或assert失败了。 - Fork 测试速度慢 :使用
--fork-cache参数启用缓存。 forge命令未找到:确保 Foundry 的 bin 目录已正确添加到 PATH 环境变量中。
📚 延伸学习
- 官方文档 :Foundry Book
- 中文文档 :由社区维护的 Foundry 中文文档
- GitHub 仓库 :foundry-rs/foundry
总的来说,Foundry 是一个功能强大、速度极快的智能合约开发工具。它的全 Solidity 特性让开发体验更统一,值得每一位开发者尝试。