本站域名已变更为https://blog.67v.cn,全新首页即将发布,尽情期待!!!

第五天:开发框架选型——从 Truffle 到 Foundry

第一天的清单里写的是 Truffle + ganache-cli,那是 2022 年的主流。今天先补一个交代:Truffle 团队 2023 年宣布停止维护,ganache 也被官方劝退,现在社区的默认答案是 Foundry(Hardhat 依然流行,但本课程选 Foundry,理由下面讲)。第三天的 Remix 是体验语言的游乐场,从今天开始进入正式工程。

为什么是 Foundry

  • 测试用 Solidity 写:不用为写测试再学一套 JS 测试框架,合约怎么调用测试就怎么写;
  • 快:Rust 实现,编译缓存和测试速度远超 Node 系框架;
  • fuzz 内置:模糊测试开箱即用,写安全篇时会用到;
  • anvil/cast:本地链和命令行客户端第一天已经用过了,工具链是一体的。

初始化工程,把第三天的合约搬进来

code
forge init eth-course
cd eth-course
# forge init 会自动带上 forge-std(测试辅助库);OpenZeppelin 按需手动装:
forge install OpenZeppelin/openzeppelin-contracts --no-commit

Foundry 工程结构非常简单:src/ 放合约、test/ 放测试、script/ 放部署脚本。把 Greeter.sol 复制进 src/,跑一次编译:

code
forge build

首次编译会下载 solc 编译器,完成后输出 ABI 和字节码路径。remappings.txt 可以把 @openzeppelin/contracts 映射到 lib/openzeppelin-contracts/contracts,这样 import 语句和线上一致:

code
@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/

Hardhat 要不要学

值得知道但不作为主线:很多老项目还跑在 Hardhat 上,工作时会遇到;它的优势是 JS 生态和插件,如果你的团队前端背景浓、需要定制复杂脚本,Hardhat 更顺手。本课程的目标是个人开发者和写教程,Foundry 的”一切皆 Solidity”更省心。两者核心概念(编译、测试、部署脚本、网络配置)一一对应,学会一个再迁移只要半天。

今天的作业:init 工程、装 OpenZeppelin、把 Greeter 和第四天的投票合约都放进 src 并 forge build 通过。明天给它们写正经的测试。

读完了点一下,作者能得积分

赞赏

如果这篇内容帮到了你,不妨请作者喝杯咖啡

分享 微博 QQ

发表评论

发表评论