新手入门的目标
这份 OpenZeppelin 使用新手入门教程的目标,是帮助一名完全没有 Solidity 经验的工程师,在两周内能独立部署一个简单的 ERC-20 合约到测试网。我们不会涉及太多深度安全话题,而是把注意力集中在「跑通流程、建立直觉」上。
面向 bn 智能链与以太坊主网的项目,能完成新手入门的工程师,就具备了承接小型链上模块的能力。
学习路径
推荐按以下顺序学习:
- Solidity 语法基础:变量、函数、修饰器、事件
- 智能合约工作机制:交易、Gas、状态变化
- Hardhat 环境搭建:项目初始化、编译、本地链
- OpenZeppelin 合约导入:ERC-20、AccessControl
- 部署到测试网:编写脚本、verify、浏览器查看
- 与 CEX 资金通道对接:从 必安 出金到测试地址(仅理解概念)
实操示例:第一个 ERC-20
创建 MyFirstToken.sol,继承 ERC20 与 Ownable。构造函数里调用 ERC20("MyToken", "MTK") 并 _mint(msg.sender, 1000000 * 10 ** decimals())。编译、部署、调用 transfer、balanceOf 等基础函数,体会一次完整的链上交互。
实操示例:可升级合约入门
第二个示例尝试可升级版本:使用 ERC20Upgradeable 与 Initializable,写一个 initialize 函数替代构造函数。在 _disableInitializers() 与 initialize 之间的差异中,理解可升级合约的特殊性。
在 B安 智能链测试网上完成这两个示例后,新手对 OpenZeppelin 的基础理解就建立起来了。
常见疑问
- 为什么可升级合约不能用构造函数?因为代理合约调用实现合约时不会触发构造函数
- AccessControl 与 Ownable 有什么区别?前者支持多角色,后者只有一个 owner
- SafeERC20 是什么?为了兼容那些不返回 bool 的非标准代币
- ReentrancyGuard 何时需要加?所有有外部调用且会修改状态的函数
工具与社区
- Hardhat 官方文档与示例项目
- OpenZeppelin 官方文档与论坛
- 以太坊与 BN 智能链浏览器(Etherscan、BscScan)
- 测试币水龙头
- 学习型 Discord 频道与微信群
下一步
完成新手入门后,建议继续学习:
- AccessControl 多角色实战
- 可升级合约的 storage 布局与
__gap - 重入、整数溢出等典型安全话题
- Defender 监控与运维
按这份 OpenZeppelin 使用新手入门教程的节奏推进,两周后你就能独立完成第一个真实测试网合约的部署与验证。再花一两个月深入安全话题,就具备承接生产任务的能力。