(四) ERC20 && ERC721 简介

vvEcho 2025-11-29 19:33:22
Categories: Tags:

ERC20 (同质化代币标准)

  1. 定义 :ERC20是以太坊上用于创建可互换代币(Fungible Tokens)的标准协议,所有代币完全相同且可互换。

ERC20 典型应用

  1. 稳定币 :USDT、USDC、DAI
  2. 平台代币 :交易所平台币(如BNB)
  3. 治理代币 :UNI、COMP等DeFi治理代币
  4. 积分系统 :游戏积分、会员积分

ERC721 (非同质化代币标准)

定义 :ERC721是以太坊上用于创建不可互换代币(Non-Fungible Tokens)的标准协议,每个代币都是独一无二的。

ERC721 典型应用

  1. 数字艺术品 :CryptoPunks、Bored Ape等NFT收藏品
  2. 游戏资产 :Axie Infinity的游戏角色和道具
  3. 虚拟房地产 :Decentraland的土地
  4. 身份认证 :ENS域名、会员身份NFT

ERC20的核心功能

1
2
3
4
5
6
7
8
9
10
11
12
// 代币基本信息
function name() public view returns (string)
function symbol() public view returns (string)
function decimals() public view returns (uint8)

// 转账相关
function transferFrom(address from, address to, uint256 value) returns (bool)
function allowance(address owner, address spender) returns (uint256)

// 事件日志
event Transfer(address indexed from, address indexed to, uint256 value)
event Approval(address indexed owner, address indexed spender, uint256 value)

ERC721的核心功能

1
2
3
4
5
6
7
8
9
10
11
12
13
// 代币元数据
function name() public view returns (string)
function symbol() public view returns (string)
function tokenURI(uint256 tokenId) public view returns (string)

// 所有权管理
function safeTransferFrom(address from, address to, uint256 tokenId, bytes data)
function getApproved(uint256 tokenId) public view returns (address)
function setApprovalForAll(address operator, bool approved)

// 事件日志
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)

ERC20 和 ERC721 的主要区别

代币性质 同质化(可互换) 非同质化(不可互换)
单位 可分割(支持小数) 不可分割(整数单位)
标识系统 无唯一标识 每个代币有唯一tokenId
转账方式 按数量转账 按特定ID转账
典型应用 货币、积分系统 收藏品、游戏资产

总结及建议

A. 选择标准 :

B. 开发建议 :

C. 未来趋势 :

总结:
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 定义结构化数据类型,保证签名唯一性