Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Foundry:Solidity 项目的命令行工作流

Foundry 是一套由 Rust 编写的以太坊开发工具,核心命令是 forge(编译、测试、部署)、cast(RPC 和 ABI 交互)和 anvil(本地节点)。官方文档见这里。

创建与编译

forge init my-token
cd my-token
forge build
forge test

项目通常包含 src/ 合约、test/ Solidity 测试、script/ 部署脚本和 lib/ 依赖。用 foundry.toml 固定 Solidity 版本、优化器和源码目录,避免本地环境与 CI 产生不同字节码。

测试的最小结构

function test_InitialSupply() public {
    assertEq(token.totalSupply(), 1_000 ether);
}

function test_RevertWhen_NotOwner() public {
    vm.prank(address(0xBEEF));
    vm.expectRevert();
    token.mint(address(0xBEEF), 1 ether);
}

测试不仅要覆盖成功路径,还应覆盖权限、零地址、边界值、事件和回滚。vm.prank、vm.expectRevert、vm.warp 等 cheatcode 只能用于测试环境,不能写进生产合约。

本地节点与链上交互

anvil
cast call 0xToken "totalSupply()(uint256)" --rpc-url http://127.0.0.1:8545
cast send 0xToken "transfer(address,uint256)" 0xRecipient 1000 \
  --private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"

私钥应来自环境变量或硬件钱包,不能写入脚本。部署脚本应记录 chain ID、合约地址、构造参数和交易哈希,并在部署后验证源码。

相关命令:Foundry 基础、forge clone、forge soldeer。