forge
和 cast
是 Ethereum 开发工具套件 Foundry 中的两个核心组件,它们分工明确但紧密协作。以下是详细解释:
forge
- 智能合约开发框架定位:智能合约的全生命周期管理工具
核心功能:
graph LR
A[Forge] --> B[编译合约]
A --> C[运行测试]
A --> D[部署合约]
A --> E[本地链开发]
A --> F[代码格式化]
A --> G[Gas优化分析]
典型工作流:
forge init my_project # 初始化项目
forge build # 编译合约
forge test # 运行测试(支持模糊测试)
forge script Deploy # 部署脚本执行
forge fmt # 代码格式化
cast
- 以太坊交互瑞士军刀定位:区块链操作的命令行接口
核心能力:
graph TB
C[Cast] --> D[发送交易]
C --> E[查询链数据]
C --> F[ABI编解码]
C --> G[数据格式转换]
C --> H[签名/验证]
常用场景:
cast send <合约> "函数" 参数 # 发送交易
cast call <合约> "视图函数" # 查询状态
cast block latest # 获取最新区块
cast --to-base 0x1 hex # 数据格式转换
cast sig "transfer(address)" # 计算函数选择器
| 维度 | forge
| cast
|
|————–|————————————|————————————|
| 核心目标 | 合约开发与测试 | 链上交互与调试 |
| 使用场景 | 开发环境 | 生产环境/测试网 |
| 数据流向 | 生成合约ABI/字节码 → | 使用ABI与链交互 ← |
| 典型协作 | 用forge
部署 → 用cast
调用 | 用cast
发现错误 → 用forge
修复 |
场景:调试合约错误
sequenceDiagram
participant Dev as 开发者
participant Cast
participant Forge
participant Blockchain as 区块链
Dev->>Cast: cast send 触发错误(获得错误数据0xe450d38c...)
Cast->>Blockchain: 发送交易
Blockchain-->>Cast: 返回错误
Dev->>Cast: cast 4byte 0xe450d38c
Cast-->>Dev: 返回错误签名ERC20InsufficientBalance
Dev->>Forge: forge test 本地重现错误
Forge->>Dev: 显示详细堆栈跟踪
Dev->>Forge: 修复代码并通过测试
Dev->>Cast: cast send 重新验证
| 工具 | 设计思想 | 类比工具 | |——-|———————————-|———————-| | forge | “Make development easy” | Hardhat + Truffle | | cast | “Make chain interaction simple” | web3.js CLI + curl |
forge
当您需要:
cast
当您需要:
两者共同构成了 Foundry 的完整开发生态,覆盖从编码到生产交互的全流程。