本文作者:咔咔

erc20 区块链

咔咔 2025-12-02 1 抢沙发
erc20 区块链摘要: ERC20 是什么?(核心定义)ERC20 是一个技术标准(Technical Standard),而不是一个具体的代币,ERC:是 "Ethereum Request for C...

ERC20 是什么?(核心定义)

ERC20 是一个技术标准(Technical Standard),而不是一个具体的代币。

  • ERC:是 "Ethereum Request for Comments" 的缩写,意思是“以太坊意见征求稿”,它就像以太坊社区提出的一个“技术规范说明书”或“蓝图”。
  • 20:是这个规范的编号,ERC20 是第 20 号提案。

核心比喻: 你可以把 ERC20 想象成 “USB 接口标准”

erc20 区块链
(图片来源网络,侵删)
  • 无论是 U 盘、键盘、鼠标还是移动硬盘,只要它们遵循 USB 标准,就可以插到任何电脑的 USB 接口上正常工作。
  • 同样,任何代币,只要遵循 ERC20 标准,就可以在以太坊生态系统的钱包、交易所、DApp(去中心化应用)中无缝使用。

ERC20 的核心作用:为什么需要它?

在 ERC20 标准出现之前,每个开发者创建的代币都有自己的规则,互不兼容,A 代币的转账函数叫 send(),B 代币的叫 transfer(),钱包和交易所需要为每个代币单独编写适配代码,这造成了巨大的混乱和开发成本。

ERC20 标准的诞生就是为了解决这个问题,它规定了一个统一的接口,所有符合这个标准的代币都必须实现以下基本功能,从而确保了互操作性


ERC20 的核心功能(接口规范)

一个 ERC20 代币必须实现以下至少 9 个函数和 2 个事件,你可以把它们看作是“说明书”上必须列出的功能清单。

必须实现的函数

函数名 描述 返回值
name() 返回代币的全称,"USD Coin"。 string
symbol() 返回代币的简称,通常是 2-4 个字母,"USDC"。 string
decimals() 返回代币使用的小数位数,ETH 的 decimals() 是 18,表示最小单位是 1e-18 ETH。 uint8
totalSupply() 返回代币的总供应量。 uint256
balanceOf(address _owner) 查询指定地址 _owner 拥有的代币数量。 uint256
transfer(address _to, uint256 _value) 向地址 _to 转账 _value 数量的代币,调用者(msg.sender)的余额必须足够。 bool (成功返回 true,失败返回 false)
transferFrom(address _from, address _to, uint256 _value) 允许 _from 地址授权第三方(msg.sender)从其账户中转移 _value 数量的代币给 _to,这需要先调用 approve() bool (成功返回 true,失败返回 false)
approve(address _spender, uint256 _value) 授权 _spender 地址,可以从你的账户中最多提取 _value 数量的代币。 bool
allowance(address _owner, address _spender) 查询 _owner 已经授权给 _spender 的代币数量。 uint256

必须触发的事件

事件名 描述
Transfer(address _from, address _to, uint256 _value) 每当发生代币转账时(无论是 transfer 还是 transferFrom),都必须触发此事件。_from 是转出地址,_to 是接收地址,_value 是转账数量。
Approval(address _owner, address _spender, uint256 _value) 每当调用 approve() 函数修改授权额度时,必须触发此事件。_owner 是授权者,_spender 是被授权者,_value 是新的授权额度。

一个简单的例子:USDC (USD Coin)

USDC 是全球最知名的稳定币之一,它就是完全遵循 ERC20 标准创建的。

erc20 区块链
(图片来源网络,侵删)
  • 它是一个代币:你可以把它存入钱包、发送给他人、在交易所交易。
  • 它遵循标准
    • name() 返回 "USD Coin"。
    • symbol() 返回 "USDC"。
    • decimals() 返回 6。
    • 你可以用任何兼容 ERC20 的钱包(如 MetaMask)查看 USDC 余额。
    • 你可以用任何支持 ERC20 的交易所(如 Uniswap, Coinbase)交易 USDC。

正是因为遵循了 ERC20 标准,USDC 才能如此广泛地被集成和使用。


ERC20 的工作流程与关键概念

理解 approvetransferFrom 是理解 ERC20 的关键,这涉及到代币授权机制。

场景: Alice 想让她的朋友 Bob 从她的钱包里,自动提取最多 100 个 USDC 代币,用于支付某个 DApp 的服务费。

  1. 授权 (approve)

    erc20 区块链
    (图片来源网络,侵删)
    • Alice 在她的钱包(如 MetaMask)中,调用 USDC 代币的 approve 函数。
    • 她输入:
      • _spender (被授权者): DApp 的智能合约地址。
      • _value (授权额度): 100 (乘以 decimals 的数量,即 100 * 10^6)。
    • 结果Approval 事件被触发,DApp 的智能合约知道,Alice 授权了它最多可以提取 100 个 USDC。
  2. 转账 (transferFrom)

    • 当 Bob 使用 DApp 的服务时,DApp 的智能合约需要支付 USDC,它会调用 USDC 代币的 transferFrom 函数。
    • 它输入:
      • _from (转出方): Alice 的钱包地址。
      • _to (接收方): 服务提供方的地址。
      • _value (转账数量): 10 (即 10 * 10^6)。
    • 结果
      • USDC 智能合约会检查 Alice 是否授权给 DApp 至少 10 个 USDC,检查通过。
      • Alice 的 USDC 余额减少 10。
      • 服务提供方的 USDC 余额增加 10。
      • DApp 的授权额度从 100 减少到 90。
      • Transfer 事件被触发。

这个机制让 DApp 可以安全地代表用户进行代币操作,而无需用户主动发起每一次转账。


ERC20 的优点与缺点

优点:

  1. 互操作性:最大的优点,所有 ERC20 代币都可以在同一个生态中兼容,极大地降低了开发和使用成本。
  2. 标准化:开发者和用户都有了一个清晰、统一的预期。
  3. 广泛支持:几乎所有以太坊钱包、交易所和 DeFi 协议都原生支持 ERC20 代币。
  4. 可组合性:这是 DeFi 的核心,你可以将不同的 ERC20 代币组合起来,用于提供流动性、借贷、交易等复杂操作,在 Uniswap 上交易 ETH 和 USDC,两者都是 ERC20。

缺点:

  1. 交易费用:在以太坊主网上,每笔 ERC20 代币的转账或授权都需要支付 Gas 费,这有时会变得非常昂贵。
  2. 安全性风险:一旦你授权 (approve) 了一个恶意的 DApp,它就可能窃取你授权的全部代币,历史上发生过很多“授权攻击”事件。
  3. 可扩展性限制:以太坊主网的交易处理速度有限,导致网络拥堵和高 Gas 费问题。

ERC20 的演进与未来

由于 ERC20 存在的一些缺点,社区也发展出了新的代币标准,

  • ERC777:一个更先进的代币标准,提供了更好的用户体验(如发送时附带数据)、更强的安全性(防止意外授权)和更灵活的钩子函数。
  • ERC1155多代币标准,它允许在一个智能合约中管理多种代币(就像游戏里的一个背包可以装装备、材料、货币等),极大地提高了效率,特别适用于游戏和 NFT 领域。

尽管有这些新标准,ERC20 依然是使用最广泛、最重要的代币标准,是理解区块链代币经济的基础。


特性 描述
本质 一个以太坊代币的技术标准/接口规范。
作用 确保所有代币都具有统一的转账、查询、授权等功能,实现互操作性。
核心功能 name, symbol, decimals, totalSupply, balanceOf, transfer, transferFrom, approve, allowance
关键机制 通过 approve 授权,再由 transferFrom 执行代币转移,实现第三方支付。
优点 生态兼容、标准化、可组合性强。
缺点 Gas 费高、存在授权安全风险。
地位 以太坊生态的基石,是迄今为止最重要和最广泛使用的代币标准。
文章版权及转载声明

作者:咔咔本文地址:https://jits.cn/content/19419.html发布于 2025-12-02
文章转载或复制请以超链接形式并注明出处杰思科技・AI 股讯

阅读
分享

发表评论

快捷回复:

评论列表 (暂无评论,1人围观)参与讨论

还没有评论,来说两句吧...