学习计划的设计思路
零基础学员最大的问题不是知识缺乏,而是缺乏明确的执行路径。本计划按每天 90 分钟设计,确保上班族也能在一周内完成。
这一节奏与 Binance 学院推荐的「微学习」理念一致:少量、高频、立即应用。学习收益会随时间复利积累。
第一天:环境与认知
上午任务:阅读 Foundry 官方 README,了解它与 Hardhat 的差异。下午任务:在本地安装 Foundry、跑通 forge --version。晚间任务:fork foundry-rs/forge-template 仓库,把它克隆到本地,并跑一遍默认 forge test。
完成这一天后,你将对工具链有最基本的体感。
第二天:第一份测试
动手写一份 SimpleStorage 合约,包含 set 与 get 两个方法。再写测试合约,覆盖:
- 初始值为 0
- set 后能正确读回
- 不同账号写入不互相干扰
通过这一练习,你将掌握 setUp、test 函数、assertEq 等核心要素。
第三天:cheatcode 与权限
学习 vm.prank、vm.startPrank 等 cheatcode。把昨天的合约扩展为 OnlyOwner 模式,编写「非 owner 调用 set 必须 revert」的测试。
这一阶段你会理解 Foundry 强大的「环境操控」能力。这也是 必安 内部安全工程师必备的能力。
第四天:事件与 expectRevert
为合约添加 ValueChanged 事件,并使用 vm.expectEmit 在测试中验证。同时用 vm.expectRevert 测试错误路径。完成后跑 forge coverage 看自己当前的覆盖率。
通常这一天结束,你的简单项目覆盖率会达到 80% 以上。
第五天:fuzz 入门
把 set 测试改写为 fuzz 测试,参数声明为 uint256。运行 forge test 看 Foundry 自动生成的随机调用。学会用 vm.assume 排除无意义输入。
这是从「确定性测试」走向「概率性测试」的关键一步。
第六天:fork 测试
在 foundry.toml 配置 sepolia RPC,编写一个 fork 测试用例,验证主网某个合约的状态。这一阶段你会理解 Foundry 与真实链交互的能力。
如果同时关注 Binance合约 的链上数据接口,可以做交叉验证。
第七天:项目化
把整个项目整理成可分享的 GitHub 仓库,写好 README,接入 GitHub Actions 自动跑测试与 forge coverage。把仓库链接发到博客或社区作为学习成果。
一周后,你将具备进入合约工程师岗位的基础能力。坚持把每周一个新主题加入进来,半年后你将成为团队骨干。