Crypto

ERC-20

Definition

ERC-20是一个标准规则集,使基于以太坊的代币在钱包、交易所和智能合约之间一致地工作。

什么是ERC-20?

ERC-20是以太坊上的一种代币标准——一个共享的“接口”,定义了可替代代币合约应暴露的基本功能和事件,以便其他应用能够可靠地与之交互。实际上,ERC-20是新以太坊代币通常可以发送、接收、在钱包中显示并集成到DeFi中的原因,而无需每个平台为该特定代币编写自定义代码。ERC-20是如何工作的?ERC-20通过指定一组共同的智能合约方法和日志(事件)来工作,外部软件可以调用或监听这些方法和日志。代币本身是一个智能合约,维护着一个内部账本,将地址映射到余额。当你“持有”ERC-20代币时,你并不是在一个单独的数据库中持有硬币——你的余额是记录在代币合约内部的一个数字,与您的以太坊地址相关联。

从高层次来看,ERC-20代币合约通常支持:

供应和余额:`totalSupply()`报告现存代币的数量,`balanceOf(address)`返回给定地址拥有的代币数量。直接转账:`transfer(to, amount)`将代币从调用者的地址转移到另一个地址。委托转账(授权):

`approve(spender, amount)`设置一个授权,以便另一个地址(通常是dApp)可以在限制内花费,`transferFrom(from, to, amount)`允许该授权的花费者代表所有者转移代币。

  • 用于跟踪的事件:`Transfer`和`Approval`事件被触发,以便钱包、区块浏览器和dApp可以检测活动,而无需不断轮询状态。
  • 一个逐步示例使“授权”模型更清晰:1. 你想在去中心化交易所(DEX)上将代币A兑换为代币B。2. DEX的智能合约需要权限来移动你的代币A。3. 你在代币A上调用`approve(DEX_contract, 100)`,授予DEX合约100个代币的授权。4. 当你执行交换时,DEX合约调用`transferFrom(your_address, pool_address, amount)`来提取已批准的代币A并完成交易。
  • 一个简单的类比:ERC-20就像代币合约的通用插头形状。如果每个设备(代币)使用相同的插头标准,任何插座(钱包、交易所、dApp)都可以支持它,而无需为每个新设备重新接线。ERC-20在实践中ERC-20在以太坊的应用层中被广泛使用,因为它实现了可组合性——协议可以“堆叠”在一起。稳定币如USDC和DAI通常作为ERC-20代币在DeFi中使用,允许它们被存入借贷市场、用作抵押品或在自动化做市商上交易。治理代币是另一个常见的ERC-20用例。许多协议发行ERC-20代币,让持有者对费用水平、抵押品类型或国库支出等参数进行投票。由于代币遵循标准接口,治理系统、投票仪表板和托管解决方案可以更快地集成。
  • ERC-20还支撑资产和头寸的代币化表示。例如,一些协议发行ERC-20“收据代币”,代表对存入资金的索赔或对池的份额。这些收据代币有时可以在DeFi中其他地方使用,扩展了“货币乐高”的概念,其中一个协议的输出成为另一个协议的输入。为什么ERC-20很重要

ERC-20很重要,因为它显著减少了集成摩擦。如果没有共享的代币接口,每个钱包、交易所和dApp都需要为每个新代币提供定制支持——这会减缓创新并增加实施错误的风险。标准化使生态系统更具互操作性:区块浏览器、投资组合追踪器、托管系统和DeFi协议等工具可以支持成千上万的代币,使用一致的调用和事件。

它还改善了流动性和分配。当代币符合ERC-20标准时,更容易在交易所上市、添加到钱包并接入DeFi市场——帮助其接触用户并实现更广泛的实用性。虽然ERC-20并不保证代币是安全或设计良好的,但它提供了一个可预测的基线,其他以太坊基础设施可以围绕其构建。[@portabletext/react] Unknown block type "span", specify a component for it in the `components.types` prop[@portabletext/react] Unknown block type "span", specify a component for it in the `components.types` prop

[@portabletext/react] Unknown block type "span", specify a component for it in the `components.types` prop

[@portabletext/react] Unknown block type "span", specify a component for it in the `components.types` prop

[@portabletext/react] Unknown block type "span", specify a component for it in the `components.types` prop[@portabletext/react] Unknown block type "span", specify a component for it in the `components.types` prop[@portabletext/react] Unknown block type "span", specify a component for it in the `components.types` prop[@portabletext/react] Unknown block type "span", specify a component for it in the `components.types` prop[@portabletext/react] Unknown block type "span", specify a component for it in the `components.types` prop[@portabletext/react] Unknown block type "span", specify a component for it in the `components.types` prop[@portabletext/react] Unknown block type "span", specify a component for it in the `components.types` prop

[@portabletext/react] Unknown block type "span", specify a component for it in the `components.types` prop

[@portabletext/react] Unknown block type "span", specify a component for it in the `components.types` prop

[@portabletext/react] Unknown block type "span", specify a component for it in the `components.types` prop

[@portabletext/react] Unknown block type "span", specify a component for it in the `components.types` prop

[@portabletext/react] Unknown block type "span", specify a component for it in the `components.types` prop

Frequently Asked Questions

ERC-20代表什么?

ERC代表“以太坊评论请求”,而“20”是提案的标识符。它指的是以太坊上可替代代币的标准接口。

ERC-20代币转移是如何工作的?

转移会更新代币智能合约内部的余额,将一定数量的代币从一个地址转移到另一个地址。合约通常会发出一个转移事件,以便钱包和应用程序可以跟踪这一移动。

ERC-20中的transfer和transferFrom有什么区别?

`transfer`直接将代币从调用者发送到接收者。`transferFrom`允许一个被批准的第三方(如dApp)使用通过`approve`设置的额度,从所有者的地址转移代币。

ERC-20代币和ETH是一样的吗?

不一样。ETH是以太坊的原生资产,用于支付燃料费和协议层的价值转移,而ERC-20代币是跟踪以太坊上余额和转移的智能合约。

每个以太坊代币都是ERC-20吗?

不。可替代代币通常使用ERC-20,但NFT通常使用ERC-721或ERC-1155,而一些代币使用更新或专门的标准。代币也可以是非标准的,这可能会限制钱包和dApp的兼容性。

ERC-20含义:以太坊代币标准解析