关键词:interface、event、hook、可选扩展、继承结构、ERC165、模块化设计
许多开发者使用 ERC-20、ERC-721 时,都是照抄接口或者用库。然而在合约开发中,只有真正理解 ERC 标准的结构与组成,才能做到定制、安全、可扩展的开发。
想要掌握如何拆解一个 ERC 标准文档?本篇文章就是为此而写。
以 ERC-721 原文 为例,主要结构如下:
| 模块 | 含义 |
|---|---|
| Motivation | 标准提出的背景与目的 |
| Specification | Solidity 接口定义(interface + event) |
| Rationale | 各字段 / 方法的设计动机与行为约束说明 |
| Backwards Compatibility | 与其他标准的兼容性处理 |
| Test Cases | 推荐测试场景 / 方法 |
| Reference Implementation | 官方实现参考 |
✅ 工程落地中,最重要的阅读部分是:Specification + Rationale
ERC 标准通过 Solidity interface 来定义合约必须暴露的接口。
interface IERC20 {
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(address to, uint256 amount) external returns (bool);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(address from, address to, uint256 amount) external returns (bool);
}
每个函数定义都具有行为约束,比如:
transfer 应触发 Transfer 事件approve 不应更改已有授权前提下直接覆盖