Web3实习残酷共学资源汇总

forgecast 是 Ethereum 开发工具套件 Foundry 中的两个核心组件,它们分工明确但紧密协作。以下是详细解释:


1. 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                 # 代码格式化

2. 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)"   # 计算函数选择器

3. 两者关系:互补协作

| 维度 | forge | cast | |————–|————————————|————————————| | 核心目标 | 合约开发与测试 | 链上交互与调试 | | 使用场景 | 开发环境 | 生产环境/测试网 | | 数据流向 | 生成合约ABI/字节码 → | 使用ABI与链交互 ← | | 典型协作 | 用forge部署 → 用cast调用 | 用cast发现错误 → 用forge修复 |


4. 协同工作示例

场景:调试合约错误

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 重新验证

5. 设计哲学差异

| 工具 | 设计思想 | 类比工具 | |——-|———————————-|———————-| | forge | “Make development easy” | Hardhat + Truffle | | cast | “Make chain interaction simple” | web3.js CLI + curl |


6. 何时使用哪个?

两者共同构成了 Foundry 的完整开发生态,覆盖从编码到生产交互的全流程。