打开币安里的代币列表,几百种币里大部分是"ERC20 代币"。ERC20 不是某个币,而是一种代币标准。理解它你就理解了整个 DeFi 的乐高基础。学习时可以在 币安官网 找一个 ERC20 代币看链上详情;下载 币安官方APP 跟踪 ETH 生态币种;iPhone 用户先看 iOS安装教程。
ERC20 是什么
ERC = Ethereum Request for Comments,是以太坊的提案标准。20 是它的编号。这份提案定义了一个代币合约必须实现的接口:
- totalSupply():总供应量
- balanceOf(address):某地址的余额
- transfer(to, amount):转账
- approve(spender, amount):授权某人花你的代币
- transferFrom(from, to, amount):被授权人代为转账
- allowance(owner, spender):查授权额度
只要一个智能合约实现了这些函数,它就是 ERC20 代币。
为什么需要这个标准
如果没有 ERC20,每个代币都自己定义接口,那么:
- 钱包 APP 没法通用支持
- 交易所要为每个币写专门代码
- DEX 没法用统一逻辑做兑换
ERC20 让所有代币长得"一样",钱包、交易所、DEX 都能用同一套代码处理。
类比:USB 接口让所有 U 盘都能插进同一个口,不需要每个厂商单独适配。
主流 ERC20 代币
ERC20 代币太多,举几个有代表性的:
| 代币 | 用途 |
|---|---|
| USDT、USDC、DAI | 稳定币 |
| UNI、AAVE、SUSHI | DeFi 治理币 |
| LINK | 预言机 |
| MATIC | Polygon 代币(在以太坊上是 ERC20) |
| SHIB、PEPE | Memecoin |
| LDO、RPL | 流动性质押 |
整个以太坊上有数十万 ERC20 代币,绝大多数是垃圾,但少数构成了 DeFi 生态的核心。
一个 ERC20 代币长什么样
任何 ERC20 代币的智能合约都包含:
- 一个 mapping 存每个地址的余额
- transfer 函数:扣减发送者,增加接收者
- approve 函数:记录"我允许 spender 花我多少"
- 一系列事件:Transfer、Approval
代码复杂度很低,一份基础 ERC20 合约只要几十行 Solidity。但一份合约可能管理着数十亿美元的资产。
approve / transferFrom 的常见误用
ERC20 里最容易出问题的是 approve 模式。流程:
- 你 approve(Uniswap, 100 USDT)
- Uniswap 合约调 transferFrom(你, 池子, 100)
- 完成兑换
但很多 DApp 让你 approve 一个无限大的额度,这意味着只要这个 DApp 被黑,你的所有 USDT 都可能被盗走。
安全做法:
- 只 approve 实际需要的数量
- 定期用 revoke.cash 撤销不再使用的 approve
- 对小项目极度谨慎
ERC20 vs ETH 本身
ETH 不是 ERC20 代币——它是以太坊的原生币,比 ERC20 更底层。区别:
- ETH 转账消耗的 Gas 较低(21000)
- ERC20 转账消耗多(50000+)
- ETH 用 transfer 函数转,ERC20 调合约方法
但有些场景需要 ETH 也变成 ERC20 形式(方便和其他代币一起操作),所以有 WETH(Wrapped ETH)——一个 1:1 锚定 ETH 的 ERC20 代币。在 Uniswap 上 ETH/USDC 实际是 WETH/USDC。
ERC20 的"小数位"
每个 ERC20 都有一个 decimals 字段(最常见是 18,部分稳定币是 6)。这意味着:
- 1 USDT 在合约里实际表示为 1000000(10^6,因为 decimals=6)
- 1 USDC 同样是 1000000
- 1 ETH 在 WETH 合约里是 1000000000000000000(10^18)
如果你直接看链上数字别忘了考虑 decimals,否则数字会让你以为很大。
ERC20 的诈骗手段
由于发币门槛极低(任何人付几美元 Gas 就能部署一个 ERC20),骗子很多:
- 空投钓鱼:往你钱包发个莫名其妙的代币,引诱你去某网站"领奖"
- 蜜罐合约:你能买不能卖,价格被人为操纵
- 改名仿冒:模仿主流币的名字,差一两个字符
- rug pull:项目方拉高币价后撤走流动性
- 后门 mint:合约预留了"项目方能无限增发"的函数
防御:
- 不要点钱包里来路不明的代币上的"领奖"链接
- 主流币用合约地址核对(在 etherscan 上)
- 看代币的持有人分布,过度集中的危险
- 不参与无审计的小项目
其他链上的"ERC20"
其他链都模仿了 ERC20:
- BSC:BEP-20
- Polygon:ERC-20(也叫 PoS Token)
- Solana:SPL Token
- Tron:TRC-20
接口大同小异,但链不同,代币不互通。USDT 在以太坊(ERC20)和 Tron(TRC20)是两个不同的代币(虽然都是 USDT),转账时选错网络就丢币。
学习者的小练习
去 etherscan:
- 找 USDT 的合约地址(0xdAC17F958D2ee523a2206206994597C13D831ec7)
- 看它的"Read Contract",调 totalSupply、balanceOf
- 看 Holders 分布
- 看最近的 Transfer 交易
练完之后你对 ERC20 就不再是抽象概念。
常见疑问
Q:所有币安上的币都是 ERC20 吗? A:不是。BTC、SOL、TRX 等都是各自独立的链。币安上的 ERC20 子集大约有几百种。
Q:发一个 ERC20 难吗? A:技术上几行代码就能发。难的是有人买、有用、有人接盘。
Q:ERC20 能编程定时锁仓吗? A:可以,需要在合约里加锁仓逻辑。
Q:USDT 是不是有"被增发不通知"的能力? A:是的,发行方 Tether 控制着 USDT 的铸造和销毁。
Q:稳定币算 ERC20 吗? A:以太坊上的稳定币(USDT、USDC、DAI)都是 ERC20。
延伸阅读
- 想看 ERC721(NFT 标准):去看 ETH知识 分类
- 想理解智能合约风险:去看 风险管理 分类
- 想知道选币的方法论:去看 项目分析 分类