Solidity 完整教程
网上的 Solidity 教程不少,但大多停留在「写一个 ERC-20」就戛然而止。真正的完整教程,应该既覆盖语法细节,又涉及设计模式、安全实践、测试方法与生态协作。本文按照这个标准重新整理,希望成为你随时可以回看的参考手册。哪怕你只是想读懂 Binance 上某个项目的合约源码,也能在其中找到对应章节。
一、语言语法的关键模块
Solidity 的语法分七大模块:源文件结构、类型系统、表达式与控制流、函数与修饰器、合约结构、继承、错误处理。源文件结构包括 pragma、import、license;类型系统区分值类型与引用类型;表达式与控制流和 C++ 类似但更克制;函数和修饰器是行为载体;合约结构与继承定义模块组织;错误处理则有 require、revert、custom error 三种方式。
每一模块都值得花一周时间深挖。例如类型系统里 storage、memory、calldata 的差异,初学者最容易犯错——把 storage 引用赋值给本地变量会持久修改链上状态。掌握这些细节是写出安全合约的前提,也是你将来分析 币安 上代币迁移、升级流程的基本素养。
二、常见设计模式
实战中反复出现的几个模式:可升级代理(Transparent / UUPS)、访问控制(Ownable / AccessControl)、暂停(Pausable)、重入保护(ReentrancyGuard)、计量(Pull Payment)、工厂模式、注册表模式。每个模式都有 OpenZeppelin 的标准实现,强烈建议先读源码再决定自定义实现。