第五天:开发框架选型——从 Truffle 到 Foundry
第一天的清单里写的是 Truffle + ganache-cli,那是 2022 年的主流。今天先补一个交代:Truffle 团队 2023 年宣布停止维护,ganache 也被官方劝退,现在社区的默认答案是 Foundry(Hardhat 依然流行,但本课程选 Foundry,理由下面讲)。第三天的 Remix 是体验语言的游乐场,从今天开始进入正式工程。
为什么是 Foundry
- 测试用 Solidity 写:不用为写测试再学一套 JS 测试框架,合约怎么调用测试就怎么写;
- 快:Rust 实现,编译缓存和测试速度远超 Node 系框架;
- fuzz 内置:模糊测试开箱即用,写安全篇时会用到;
- anvil/cast:本地链和命令行客户端第一天已经用过了,工具链是一体的。
初始化工程,把第三天的合约搬进来
forge init eth-course
cd eth-course
# forge init 会自动带上 forge-std(测试辅助库);OpenZeppelin 按需手动装:
forge install OpenZeppelin/openzeppelin-contracts --no-commitFoundry 工程结构非常简单:src/ 放合约、test/ 放测试、script/ 放部署脚本。把 Greeter.sol 复制进 src/,跑一次编译:
forge build首次编译会下载 solc 编译器,完成后输出 ABI 和字节码路径。remappings.txt 可以把 @openzeppelin/contracts 映射到 lib/openzeppelin-contracts/contracts,这样 import 语句和线上一致:
@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/Hardhat 要不要学
值得知道但不作为主线:很多老项目还跑在 Hardhat 上,工作时会遇到;它的优势是 JS 生态和插件,如果你的团队前端背景浓、需要定制复杂脚本,Hardhat 更顺手。本课程的目标是个人开发者和写教程,Foundry 的”一切皆 Solidity”更省心。两者核心概念(编译、测试、部署脚本、网络配置)一一对应,学会一个再迁移只要半天。
今天的作业:init 工程、装 OpenZeppelin、把 Greeter 和第四天的投票合约都放进 src 并 forge build 通过。明天给它们写正经的测试。
读完了点一下,作者能得积分
赞赏
如果这篇内容帮到了你,不妨请作者喝杯咖啡
赞赏
如果这篇内容帮到了你,不妨请作者喝杯咖啡
选个金额
微信扫码扫一下,金额 ¥6
- 扫码后按所选金额支付即可
- 赞赏完全自愿,与积分、红包互不影响
发表评论