ERC-20, ERC-721, ERC-1155 standards. 区别
TL;DR:
• ERC-20 → 同质化代币标准(Fungible Token,像货币一样,每个单位都等价)。
• ERC-721 → 非同质化代币标准(NFT,每个 Token 独一无二)。
• ERC-1155 → 混合型多资产标准(同时支持同质化和非同质化,并优化批量转账)。
⸻
逐步解析
- ERC-20(同质化代币,Fungible Token)
• 特点:
• 每个 Token 没有差别(1个 USDT = 1个 USDT)。
• 适合货币、积分、治理代币等场景。
• 核心函数:
• totalSupply():总供应量
• balanceOf(address):查询余额
• transfer(to, amount):转账
• approve(spender, amount) + transferFrom(from, to, amount):授权代他人转账
• 应用案例:
• USDT、USDC、DAI、治理币(COMP、UNI)。
⸻
- ERC-721(非同质化代币,NFT)
• 特点:
• 每个 Token 独一无二,用 tokenId 区分。
• 不能互换(CryptoPunk #1 ≠ CryptoPunk #2)。
• 元数据(Metadata)可绑定图片、音乐、游戏道具等。
• 核心函数:
• ownerOf(tokenId):查询 NFT 拥有者
• transferFrom(from, to, tokenId):转移指定的唯一 Token
• tokenURI(tokenId):获取元数据链接
• 应用案例:
• 数字艺术(CryptoPunks、Bored Ape Yacht Club)
• 游戏资产(Decentraland 土地)
• 数字收藏品。
⸻
- ERC-1155(多资产混合标准)
• 特点:
• 既支持同质化代币,又支持非同质化代币。
• 单一合约可以管理多种 Token 类型(比 ERC-20 和 ERC-721 更高效)。
• 批量转账功能(一次交易转多个代币,节省 Gas)。
• 核心函数:
• balanceOf(account, id):查询某个 Token ID 的余额
• safeTransferFrom(from, to, id, amount, data):转移某个 ID 的 Token
• safeBatchTransferFrom(...):批量转移多个 ID 的 Token
• 应用案例:
• 游戏道具:一把剑(NFT)、100个金币(FT),同一个合约内管理。
• 多系列 NFT 项目(艺术家可以在一个合约里发行不同系列)。
• 高效率市场(如 OpenSea 支持 ERC-1155)。
要更通俗理解:
• ERC-20 → 像钞票(每张100元一样)。
• ERC-721 → 像身份证(每张不同)。
• ERC-1155 → 像超市收银系统(既能记录钞票,又能记录身份证,还能一次打包结账)。