ERC20 (同质化代币标准)
- 定义 :ERC20是以太坊上用于创建可互换代币(Fungible Tokens)的标准协议,所有代币完全相同且可互换。
- 同质化:每个代币完全等同
- 可分割:支持小数单位
- 标准化接口:确保钱包和交易所兼容
ERC20 典型应用
- 稳定币 :USDT、USDC、DAI
- 平台代币 :交易所平台币(如BNB)
- 治理代币 :UNI、COMP等DeFi治理代币
- 积分系统 :游戏积分、会员积分
ERC721 (非同质化代币标准)
定义 :ERC721是以太坊上用于创建不可互换代币(Non-Fungible Tokens)的标准协议,每个代币都是独一无二的。
- 非同质化:每个代币具有唯一性
- 不可分割:最小单位为1
- 元数据:可附加独特属性和信息
实例:数字藏品,游戏道具,虚拟地产,元宇宙等
ERC721 典型应用
- 数字艺术品 :CryptoPunks、Bored Ape等NFT收藏品
- 游戏资产 :Axie Infinity的游戏角色和道具
- 虚拟房地产 :Decentraland的土地
- 身份认证 :ENS域名、会员身份NFT
ERC20的核心功能
1 | // 代币基本信息 |
ERC721的核心功能
1 | // 代币元数据 |
ERC20 和 ERC721 的主要区别
| 代币性质 | 同质化(可互换) | 非同质化(不可互换) |
|---|---|---|
| 单位 | 可分割(支持小数) | 不可分割(整数单位) |
| 标识系统 | 无唯一标识 | 每个代币有唯一tokenId |
| 转账方式 | 按数量转账 | 按特定ID转账 |
| 典型应用 | 货币、积分系统 | 收藏品、游戏资产 |
总结及建议
A. 选择标准 :
- 需要可互换资产时选择ERC20
- 需要唯一数字资产时选择ERC721
- 混合场景可考虑ERC1155(半同质化代币标准)
B. 开发建议 :
- ERC20适合需要流动性和互换性的场景
- ERC721适合需要稀缺性和独特性的场景
- 两种标准都有成熟的开发框架和社区支持
C. 未来趋势 :
- ERC20仍是DeFi和支付领域的主流
- ERC721在数字艺术和游戏领域持续创新
- 跨链互操作性成为新发展方向
总结:
ERC-20 → 标准代币,核心是 转账、授权、余额查询
ERC-721 → NFT,不可替代资产,核心是 tokenId 管理 + 授权 + 拥有者查询
ERC-712 → 链下签名协议,核心是 生成哈希、签名验证、防重放机制
| 标准 | 核心方法 | 功能说明 |
|---|---|---|
| ERC-20 | totalSupply() |
获取代币总量 |
balanceOf(address owner) |
查询账户余额 | |
transfer(address to, uint256 value) |
向指定地址转账 | |
approve(address spender, uint256 value) |
授权别人可转额度 | |
transferFrom(address from, address to, uint256 value) |
被授权地址转账 | |
allowance(address owner, address spender) |
查询剩余授权额度 | |
| ERC-721 | balanceOf(address owner) |
查询账户拥有的 NFT 数量 |
ownerOf(uint256 tokenId) |
查询某个 NFT 的拥有者 | |
transferFrom(address from, address to, uint256 tokenId) |
转移某个 NFT | |
approve(address to, uint256 tokenId) |
授权别人操作某个 NFT | |
getApproved(uint256 tokenId) |
查询 NFT 授权地址 | |
setApprovalForAll(address operator, bool approved) |
授权操作所有 NFT | |
isApprovedForAll(address owner, address operator) |
查询是否授权了所有 NFT | |
| ERC-712 (EIP-712) | hashTypedDataV4(structuredData) |
生成签名数据哈希 |
recover(signature, hash) |
验证签名者地址 | |
domain separator |
定义签名域,防跨域重放攻击 | |
type hash |
定义结构化数据类型,保证签名唯一性 |