Skip to main content

什么是 ERC-20

注意:本文档是英文原版的自动翻译。

什么是 ERC-20

ERC-20 是 Ethereum 区块链上采用最广泛的代币标准。它定义了一个通用接口——一组函数和事件——智能合约必须实现该接口才能创建一个同质化代币(fungible token)。“同质化”意味着该代币的每一个单位都是相同且可互换的,正如任何一张一美元钞票都等同于任何另一张一美元钞票。

ERC 代表 Ethereum Request for Comments,而 20 是提案编号。该标准于 2015 年提出,并已成为在 Ethereum 和 EVM 兼容链上创建代币的事实蓝图。当一个项目说其代币是“ERC-20”时,意味着该代币合约遵循这一标准接口,从而保证了与 Ethereum 生态系统中钱包、去中心化交易所、投资组合追踪器和其他智能合约的兼容性。

简而言之: ERC-20 是一项技术标准,定义了同质化代币在 Ethereum 上如何运作——确保任何 ERC-20 代币都可以被任何支持该标准的钱包或应用发送、接收和管理。

ERC-20 如何运作

标准接口

在其核心,ERC-20 规定了每一个合规代币合约都必须实现的一组函数。这些函数提供了一种通用语言,外部应用(钱包、交易所、其他合约)可以用它来与代币交互,而无需了解任何关于该代币内部逻辑的信息。

关键函数有:

函数 它的作用
totalSupply() 返回现存代币的总数量
balanceOf(address) 返回某个特定地址持有多少代币
transfer(to, amount) 将代币从调用者的地址发送到另一个地址
approve(spender, amount) 授权另一个地址(一个智能合约或用户)花费至多指定数量的调用者代币
transferFrom(from, to, amount) 允许一个预先批准的花费方代表代币所有者转移代币
allowance(owner, spender) 返回花费方仍被允许代表所有者转移的代币数量

该标准还定义了两个事件——Transfer 和 Approval——当代币移动或花费权限变更时会触发它们。这些事件允许外部系统(区块浏览器、索引器、分析工具)追踪代币活动,而无需直接查询合约。

为什么标准很重要

在 ERC-20 被广泛采用之前,每个代币项目都创建自己的自定义接口。这意味着钱包、交易所和其他应用必须为每一种新代币编写自定义代码。ERC-20 通过创建一个通用合约接口解决了这个问题:任何支持 ERC-20 的应用都自动支持每一种 ERC-20 代币,无论它是昨天创建的还是多年前创建的。

这种可组合性是 Ethereum 生态系统的基石之一。去中心化交易所无需知道某个特定代币代表什么或由谁创建——只要代币实现了 ERC-20 接口,交易所就可以将其上架、交易,并用它结算交易。

部署一个 ERC-20 代币

创建一个 ERC-20 代币涉及将一个实现了所需函数的智能合约部署到 Ethereum 网络(或一条 EVM 兼容链)上。部署者指定代币的名称、符号、小数精度和初始供应量。一旦部署,合约就是不可变的——代币的核心接口无法更改,尽管某些实现通过治理机制包含了额外功能,如铸造、销毁或暂停。

部署 ERC-20 代币的技术门槛较低,这既是一种优势,也是一种风险。它使快速创新和试验成为可能,但也意味着任何人都可以创建一个具有任意名称和任意所述用途的代币。ERC-20 代币的存在并不意味着质量、合法性或价值。

ERC-20 与 EVM 兼容链

虽然 ERC-20 是为 Ethereum 创建的,但该标准可在任何 EVM 兼容区块链上运作。BNB Smart Chain、Polygon、Arbitrum One、Base 和 Avalanche 等链都原生支持 ERC-20 代币,因为它们实现了 Ethereum 虚拟机。在其中一些链上,该标准可能有不同的正式名称(例如 BNB Smart Chain 上的 BEP-20),但其接口在功能上是相同的。

这意味着一个项目的代币可能被描述为“ERC-20”,即便它部署在 Ethereum 以外的链上。该标准是一个技术接口,而非链特定的称谓。重要的是代币合约是否实现了 ERC-20 函数集,而非它运行在哪个网络上。

ERC-20 与其他代币类型的比较

维度 ERC-20 ERC-721 (NFT) ERC-1155(多代币) 原生代币(ETH、SOL)
同质化 同质化(所有单位相同) 非同质化(每个代币唯一) 既同质化又非同质化 同质化
部署为 智能合约 智能合约 智能合约 内置于协议中
标准接口 transfer、approve、balanceOf ownerOf、safeTransferFrom 批量操作 无标准合约接口
用例 货币、实用型代币、治理代币 数字艺术、独特资产、身份 游戏物品、混合收藏 Gas 费用、质押、基础货币

ERC-20 代币不同于 ETH 等原生代币。ETH 直接内置于 Ethereum 协议中并在没有智能合约的情况下存在,而 ERC-20 代币是通过部署一个遵循该标准的合约创建的。两者都可以被持有和转移,但它们具有不同的技术属性和在网络中的不同角色。

ERC-20 的局限性与扩展

虽然 ERC-20 是使用最广泛的代币标准,但它有一些已知的局限性,这些局限性催生了扩展和改进:

  • 接收时无通知。 当代币被发送到一个智能合约时,接收合约没有自动的方式作出反应。这导致代币被永久锁定在那些不处理 ERC-20 转账的合约中。ERC-223 和 ERC-777 标准被提出以解决这个问题,尽管 ERC-20 仍占主导地位。
  • 两步批准模式。 代表另一个地址转移代币需要两笔交易:先 approve,再 transferFrom。这增加了摩擦和 gas 成本。ERC-2612(Permit)扩展允许通过链下签名进行无需 gas 的批准。
  • 没有内置元数据。 ERC-20 代币有名称和符号,但没有标准化的方式来包含额外的元数据(描述、图标、文档链接)。扩展和链下注册表填补了这一空白。

这些局限性并不减损 ERC-20 的实际效用。对于绝大多数用例而言,该标准的简洁性和普遍支持超过了它在技术上的不完美。

为什么 ERC-20 对加密 AI 项目很重要

大多数在 Ethereum 或 EVM 兼容链上发行代币的加密 AI 项目都使用 ERC-20 标准。该代币可能充当实用型代币(为计算付费、访问 AI 服务)、治理代币(对协议参数投票),或费用机制(为网络使用付费)。无论其预期角色如何,使用 ERC-20 都能确保代币与更广泛的生态系统兼容:用户可以将其存放在标准钱包中、在去中心化交易所上交易,并通过广为人知的接口与之交互。

对于评估某个加密 AI 项目的读者而言,知道一个代币是 ERC-20 告诉你的是其技术格式——而非其效用、必要性或价值。代币标准回答的是“代币在技术上如何运作?”,而非“项目为何需要代币?”或“代币是否真的在 AI 流水线中发挥了作用?”。

它在 DecAIHub 项目卡片中出现的位置

在 DecAIHub 项目卡片中,ERC-20 出现在 Token standard 字段中。当一张卡片显示 Token standard: ERC-20 时,意味着该项目的代币是作为一个 ERC-20 智能合约实现的。

Token standard 字段是纯描述性的:它告诉读者代币的技术格式。它应当与 Token model 字段(描述代币的角色:实用、治理、费用机制)和 Main chain 字段(告诉读者代币部署在哪个网络上)一同阅读。

一个项目可能在多条链上拥有代币——例如,Ethereum 上的一个 ERC-20 代币和 Arbitrum 等 L2 上的一个桥接版本。Token standard 字段通常反映主要的部署。

仅凭 ERC-20 本身无法证明什么

  • ERC-20 不能证明代币效用。 任何智能合约都可以实现 ERC-20 接口。该标准定义的是代币的技术行为,而非其经济角色或必要性。一个项目可以拥有一个在其 AI 或应用流水线中毫无用处的 ERC-20 代币。
  • ERC-20 不能证明合法性。 创建和部署一个 ERC-20 代币只需极少的技术工作和成本。代币的存在并非其背后项目真实、可用或值得信任的证据。
  • ERC-20 不能证明项目在 Ethereum 上。 ERC-20 代币存在于许多 EVM 兼容链上。代币标准并不指明代币部署在哪条链上——请查看 Main chain 字段获取该信息。
  • ERC-20 不能证明 AI 能力。 代币的技术标准与项目是否拥有真实的 AI 组件、可运作的推理或可验证的模型毫无关联。
  • ERC-20 不能证明去中心化。 代币合约本身可能包含中心化的控制:用于铸造或销毁的管理员密钥、暂停函数、由单一地址控制的升级代理。该标准定义的是接口,而非治理模型。

请勿混淆

  • 代币标准 —— 总括性概念。ERC-20 是一个特定的代币标准。其他还包括 ERC-721(NFT)、ERC-1155(多代币)、BEP-20(BNB Smart Chain)、SPL(Solana)和原生代币。
  • 原生代币 —— ETH 是 Ethereum 的原生代币,内置于协议本身。ERC-20 代币是通过在协议之上部署智能合约创建的。它们共存,但在技术上不同。
  • 代币模型 —— 代币模型描述代币的角色(实用、治理、费用机制)。代币标准描述技术格式。一个代币可以同时是 ERC-20(标准)和实用型代币(模型)。
  • BEP-20 —— BNB Smart Chain 上的代币标准。BEP-20 在功能上与 ERC-20 完全相同,但它是在另一条链上使用的命名约定。
  • ERC-721 —— Ethereum 上非同质化代币(NFT)的标准。ERC-721 代币是独特的;ERC-20 代币是可互换的。

常见问题

在 ERC-20 的语境下,“同质化”是什么意思?

同质化意味着该代币的每一个单位在价值和功能上都与其他每一个单位相同。如果你持有某个 ERC-20 代币的 100 个单位,其中任何一个单位都可与同种代币的任何其他单位互换。这与使一张一美元钞票等同于任何另一张一美元钞票的原理相同。相比之下,非同质化代币(ERC-721)各自独特——一个 NFT 不可与另一个互换。

ERC-20 代币可以在 Ethereum 以外的链上创建吗?

可以。任何实现了 Ethereum 虚拟机(EVM)的区块链都支持 ERC-20 代币。这包括 Polygon、Arbitrum One、Base、BNB Smart Chain、Avalanche 等许多链。在 BNB Smart Chain 上,等效的标准被称为 BEP-20,但它实现相同的接口。一个遵循 ERC-20 函数集的代币可与任何 EVM 兼容的钱包、交易所或智能合约一起工作,无论具体是哪条链。

ERC-20 和 ETH 等原生代币有什么区别?

ETH 是 Ethereum 的原生代币——它内置于协议本身,并在没有智能合约的情况下存在。ETH 用于支付 gas 费用和参与质押。相比之下,ERC-20 代币是通过在 Ethereum 之上部署智能合约创建的。它们需要 ETH 来为转账和交互支付 gas 费用。两类代币都可以存放在同一个钱包中,但它们的技术实现根本不同。

部署一个 ERC-20 代币需要大量的技术专长吗?

部署一个基本的 ERC-20 代币需要中等的智能合约开发知识。标准库(如 OpenZeppelin)提供了经过审计、即用型的 ERC-20 实现,只需极少的定制即可部署。较低的部署门槛既是一项特性(使快速试验和创新成为可能),也是一种风险(使任何人都能为任何目的创建代币)。一个已部署代币的存在,其本身并非技术能力的证据。

外部参考

另请参阅