launchkit

您已加入 🚀

你还不知道的ERC-20代币关键秘密
Web3 词汇
你还不知道的ERC-20代币关键秘密
ERC-20 是以太坊上可替代代币的技术标准。了解 ERC-20 代币的工作原理、其重要性,以及 USDC 和 UNI 等例子。

什么是 ERC-20 代币——改变一切的标准

如今在以太坊上存在成千上万种不同的代币——如 USDC 这样的稳定币,UNI 这样的 DeFi 代币、收益资产、治理代币。你的 MetaMask 钱包可以无缝展示它们,Uniswap 可以让你即时在任意交易对之间切换。借贷协议可以接受它们作为抵押品,而无需自定义集成。这一切都因每个在以太坊上的可替代代币遵循相同的规则。

这一标准就是 ERC-20——加密货币领域的电源插座。枯燥的基础设施成就了一切有趣的事。没有它,每个代币都需要自定义钱包支持、专门的交易所集成和独特的 DeFi 实施。这一生态系统可能在开始之前就已分裂。

什么是 ERC-20 实际上是

ERC-20 代表 2015 年 11 月由开发者 Fabian Vogelsteller 提出,并于 2017 年 9 月最终确定的 "以太坊请求注释" 第 20 号。它是定义可替代代币在以太坊上如何运作的技术标准——代币中每个单位是相同且可互换的,如美元而非独特的收藏品。

该标准规定了所有合规代币必须实现的通用接口。共有六个强制性功能和两个必要事件。你的钱包只需支持这一接口一次,就可以自动与数千种代币兼容。在交易所中列出一个 ERC-20 代币,即表示已具备列出所有代币的基础设施。

这便是标准化所带来的巨大网络效应。越多代币采用 ERC-20,标准就越有价值,从而形成了一个自我加强的循环,使其几乎成为通用。

为什么标准很重要

在 ERC-20 出现之前,每个以太坊上的代币都需要独特的功能和自定义接口。构建一个钱包意味着为每个代币编写独立的代码。交易所需要为每个上市项目进行自定义集成。DeFi 协议在没有巨大工程努力的情况下无法处理任意代币。

整个生态系统需要一个标准,以便所有人可以就代币的工作方式达成一致。ERC-20 提供了这种共同语言,使整个基础设施可组合。

运行一切的六个功能

让我用 USDC 来解释 ERC-20 的工作原理,因为它展示了每个功能在实际应用中的情况。

totalSupply 返回当前有多少 USDC 代币存在——通常为数百亿美元。balanceOf 函数接收一个以太坊地址并返回该地址所拥有的 USDC 数量,如同检查你的银行余额。

transfer 函数处理直接发送。当你转账 100 USDC 给某人时,你的钱包调用此函数指定接收者和金额。合约验证你是否有足够余额,从你的账户扣除 100,添加到对方账户,并发出一个 Transfer 事件。

剩下的三个函数——approvetransferFromallowance——共同启用委托转账,这对 DeFi 来说尤为重要。以下是其实际操作方式。

假设你想用 1000 USDC 交换以太币(ETH)在 Uniswap 上。你不会直接把 USDC 发送给 Uniswap,而是调用 USDC 的 approve 函数,授予 Uniswap 代表你花费 1000 USDC 的权限。这个授权不会立即移动代币;它只是授予权限并在合约中记录下来。

当你执行交换时,Uniswap 的智能合约调用 USDC 的 transferFrom 函数,实际将 1000 USDC 从你的地址移动到 Uniswap 的流动池。USDC 合约确认 Uniswap 有权花费该金额,确认你依然有余额,执行转账,并更新授权显示该权限已经使用。

allowance 函数让你或者任何人能够查看剩余的花费权限。在 Uniswap 花费你 1000 USDC 后,调用你地址上的 allowance 对 Uniswap 返回零。

大多数代币包含三个可选元素:一个名称如 "USD Coin",一个符号如 "USDC",以及一个表示可分割性的 decimals 值。大多数使用与 ETH 配对的 18 个小数位,而 USDC 使用 6 个。

代币余额的实际工作方式

代币不是存在于你的钱包中。USDC 智能合约维护一个分类账——一个巨大的电子表格,将每个以太坊地址与其拥有多少代币进行映射。你的钱包持有识别为拥有 X 代币的地址的私钥。

当你“转移”代币时,你签署一个交易,告知代币合约更新其内部账本——从一个地址减去,添加到另一个地址。合约执行,更新存储,并发出事件。就这样。

这就是为什么你需要 ETH 来发送 ERC-20 代币。交易需要以太坊验证者提供计算工作,他们获得 ETH 作为报酬。代币合约没有自己的区块链——它是在以太坊上运行的代码。

为什么 ERC-20 启用了 DeFi

ERC-20 的杀手级应用是去中心化金融。因为每个代币都遵循相同的标准,协议就像乐高积木那样建立在彼此之上,而无需自定义集成。

Uniswap 自动为任何 ERC-20 代币创建交易对。Aave 接受任何 ERC-20 作为抵押品。Compound 程序化地添加新的借贷市场。你可以将 USDC 存入 Compound 以赚取利息,将获得的 cTokens 作为在 Aave 的抵押,借出 DAI 再换到 Uniswap 上,并在其他地方质押以获得收益——所有这一切都是因为一切都遵循相同的接口。

这种可组合性意味着聚合器如 1inch 在交易对之间进行交易路由。投资组合追踪器自动显示所有持有情况。基础设施对待所有合规代币一视同仁,创造出分散的自定义代币未能实现的流动性。

无人修复的安全问题

approve 函数创造了一个持久的攻击向量。当你为 1000 USDC 授予 Uniswap 授权时,该授权会一直保持激活状态,直到你显式撤销它。如果合约受到攻击或变得恶意,它可以从你的地址消耗所有授权的代币。

只授权你立即需要的确切金额。切勿批准无限制的金额。使用像 Revoke.cash 的服务来审计和撤销不必要的授权。某些较新的实现支持 EIP-2612 的基于临时签名的授权,但普及程度有限。

将代币发送到不处理它们的合约地址通常意味着永久损失。标准不会阻止你将代币转移到没有机制将它们转出的合约。

诈骗代币无处不在。骗子用相似的名称创建假的 USDC 代币,但地址不同。因为它们正确实现了名称和符号功能,你的钱包可能会显示它们。在互动前,请总是从官方来源验证代币合约地址。

蜜罐代币完美实现了 ERC-20,但添加了隐藏代码,阻止你出售。你能买入,但当你尝试出售时,交易失败。在交易前检查 Etherscan 上的合约代码或使用蜜罐检测工具。

创建代币很简单,但赋予价值非常困难

任何人都可以使用 OpenZeppelin 的合约向导在几分钟内创建一个 ERC-20 代币。配置名称、符号和初始供应,支付 20 至 200 美元不等的 gas 费用进行部署,就算完事。技术上你的代币工作得很完美。

但创造一个具备实际价值的代币非常困难。这个领域充满了功能完善但需求为零、没有用户且价值毫无意义的代币。在 2017-2018 的 ICO 繁荣期间,数千项目通过发行 ERC-20 代币筹集了数十亿美元。许多是骗钱的,更多是误导性的,但低门槛也促成了合法的创新。

在创建代币之前,考虑一下它解决了什么问题,并提供了超出投机之外可持续的价值。

为什么 ERC-20 不会消失

ERC-20 将无限期地保持以太坊的主导代币标准。网络效应和现有基础设施带来了巨大的转换成本。每个钱包都支持它,每个交易所都列出 ERC-20 代币,每个 DeFi 协议都与之集成。

标准通过向后兼容的扩展来进化。EIP-2612 添加了基于签名的授权功能。ERC-4626 标准化了收益型金库代币。像 Arbitrum 和 Polygon 这样的二层解决方案直接支持 ERC-20,将这一标准扩展到更快更便宜的环境。

其他标准如 ERC-721 和 ERC-1155 为特定用例提供服务。但对于以太坊上的简单可替代代币而言,ERC-20 是一种工作流产,而成功的工作流往往比理论上更优的替代方案持久得多。

总结

ERC-20 是无趣的底层设施,但它开创了整个生态系统。它民主化了代币创建,使 DeFi 可组合性成为可能,并为数以千计的项目奠定了基础。标准有着真实的局限性和安全问题,但其简单性和普遍接受使其成为加密货币的电源插座。

理解 ERC-20 意味着理解以太坊代币的运作方式——六个功能、授权机制、余额如何追踪以及安全风险。无论你是在以太坊构建,交易代币,还是只是想弄清楚你的钱包,ERC-20 是使这一切成为可能的无形标准。

参考

  1. Ethereum.org - "ERC-20 代币标准" - https://ethereum.org/en/developers/docs/standards/tokens/erc-20/
  2. GitHub - "EIP-20: Token Standard" - https://eips.ethereum.org/EIPS/eip-20
  3. OpenZeppelin - "ERC-20 文档与合约" - https://docs.openzeppelin.com/contracts/erc20
  4. Etherscan - "已验证 ERC-20 代币合约" - https://etherscan.io/tokens
  5. CoinGecko - "ERC-20 代币排名" - https://www.coingecko.com/
  6. ConsenSys - "ERC-20 代币标准安全最佳实践"
  7. Fabian Vogelsteller - 原始 ERC-20 提案 (2015)
  8. Ethereum Improvement Proposals - "代币标准文档" - https://eips.ethereum.org/
  9. OpenZeppelin 向导 - "合约生成器" - https://wizard.openzeppelin.com/
  10. Revoke.cash - "代币授权管理" - https://revoke.cash/

相关术语