ERC20 代币标准

ERC20 代币标准

以太坊改进建议:EIP-20: Token Standard

摘要

ERC20 标准允许在智能合约中为代币实施标准 API。该标准提供了转移代币的基本功能,并允许代币获得批准,以便其它链上第三方使用。

方法

name

function name() public view returns (string)
  • 返回代币的名称。
  • 可选 - 此方法可用于提高可用性,但接口和其它合约不得期望这些值存在。

symbol

function symbol() public view returns (string)
  • 返回代币的符号。
  • 可选 - 此方法可用于提高可用性,但接口和其他合约不得期望这些值存在。

decimals

function decimals() public view returns (uint8)
  • 返回代币使用的小数位数,比如 8 表示将代币数量除以 100000000 得到其用户表示。
  • 可选 - 此方法可用于提高可用性,但接口和其他合约不得期望这些值存在。

totalSupply

function totalSupply() public view returns (uint256)
  • 返回代币的总供应量

balanceOf

function balanceOf(address _owner) public view returns (uint256 balance)
  • 返回另一个地址为 _owner 的账户的账户余额

transfer

function transfer(address _to, uint256 _value) public returns (bool success)
  • _value 数量的代币转移到地址 _to,并且必须触发 Transfer 事件。如果消息调用者的账户余额没有足够的代币可以花费,则该函数应当 throw
  • 注意,0 值的 Transfer 必须被视为正常传输并触发 Transfer 事件。

transferFrom

function transferFrom(address _from, address _to, uint256 _value) public returns (bool success)
  • _value 数量的代币从地址 _from 转移到地址 _to,并且必须触发 Transfer 事件。
  • transferFrom 方法用于提款工作流,允许合约代表您转移代币。例如,这可用于允许合约代表您转移代币和/或以子货币收取费用。除非 _from 账户通过某种机制有意授权消息的发送者,否则该函数应当 throw
  • 注意,0 值的 Transfer 必须被视为正常传输并触发 Transfer 事件。

approve

function approve(address _spender, uint256 _value) public returns (bool success)
  • 允许 _spender 从你的账户提款多次,直到 _value 数量的金额。如果该函数再次被调用,它将用 _value 覆盖当前的允许值。
  • 注意:为了防止这里描述讨论的攻击向量,客户端应该确保在创建用户接口时先将允许值设置为 0,然后再为相同的花费者(spender)设置另一个值。尽管合约本身不应该强制执行它,以允许与之前部署的合约向后兼容。

allowance

function allowance(address _owner, address _spender) public view returns (uint256 remaining)
  • 返回仍然允许 _spender_owner 提取的金额。

事件

Transfer

event Transfer(address indexed _from, address indexed _to, uint256 _value)
  • 必须在代币被转移时触发,包括 0 金额转账。
  • 创建新代币的代币合约应当在创建代币时触发一个 _from 地址设为 0x0Transfer 事件。

Approval

event Approval(address indexed _owner, address indexed _spender, uint256 _value)
  • 必须在任何成功调用 approve(address _spender, uint256 _value) 的地方触发。

实现

以太坊网络上已经部署了大量符合 ERC20 的代币。不同的团队编写了不同的实现,并且有着不同的权衡,比如从节省 gas 到安全性:


ERC20 代币标准
https://alphafitz.com/2022/10/22/erc20-token-standard/
作者
alphafitz
发布于
2022年10月22日
许可协议