最近想看ERC20规范原文档觉得英文太多,想看国内的相关博客、文章,又怕作者理解的有偏差,所以这篇文章来系统翻译、整理下官方的ERC20规范文档。原文链接:https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md
1.简单总结
Token的标准接口。
2.摘要
以下标准允许在智能合约为token实现标准API。 本标准提供了转移token的基本功能,并允许链上第三方使用token。
3.动机
标准接口可以让以太网上的任何token被其他应用程序重新使用:从钱包到去中心化的交易所。
4.详细介绍
4.1Token
4.11方法
注意:调用者必须处理返回false的returns (bool success).调用者绝对不能假设返回false的情况不存在。
name:返回令牌的名字,例如“MyToken”。
可选——这个方法可以提高可用性,但接口和其他合约不能依赖该值的存在。
function name() view returns (string name)
symbol:返回令牌的符号,比如¥。
可选——这个方法可以提高可用性,但接口和其他合约不能依赖该值的存在。
function symbol() constant returns (string symbol)
decimals:返回token使用的小数点后几位, 比如 8,表示将1个token数量分为100000000份。
可选——这个方法可以提高可用性,但接口和其他合约不能依赖该值的存在。
function decimals() view returns (uint8 decimals)
totalSupply:返回token的总供应量。
function totalSupply() constant returns (uint256 totalSupply)
balanceOf:返回地址_owner的账户余额。
function balanceOf(address _owner) constant returns (uint256 balance)
transfer:转移_value数量的token到地址_to,并且必须触发Transfer事件。 如果_from帐户余额没有足够的token来支出,该方法应该抛出异常。
注意:_value=0必须被视为正常转移并触发Transfer事件。
function transfer(address _to, uint256 _value) returns (bool success)
transferFrom:从地址_from发送_value个token到地址_to,必须触发Transfer事件。
transferFrom方法用于提现流程,允许合约为你转移token。这可以用于允许合约为你转让代币或收取费用。除了_from帐户通过某种机制授权消息的发送者之外,否则该方法应该抛出异常。
注意:_value=0须被视为正常转移并触发Transfer事件。
function transferFrom(address _from, address _to, uint256 _value) returns (bool success)
approve:允许_spender多次从你的帐户提现,最高数量是_value。 如果再次调用此函数,它将以_value覆盖当前的值。
注意:为了防止向量攻击,客户端需要确认以这样的方式创建用户接口,即在为同一个花费者设置另一个值之前,先将它的值设置为0。虽然合约本身不应该强制执行,以前部署的合同允许向后兼容。
function approve(address _spender, uint256 _value) returns (bool success)
allowance:返回被允许从_owner提取到_spender余额。
function allowance(address _owner, address _spender) constant returns (uint256 remaining)
Transfer:当token被转移(即使是0值)时必须被触发。
event Transfer(address indexed _from, address indexed _to, uint256 _value)
Approval:当成功调用approve(address _spender, uint256 _value)后必须被触发。
event Approval(address indexed _owner, address indexed _spender, uint256 _value)
合约实例:
StandardToken
EIP20
在调用approve 之前强制设为0的实现:MiniMeToken
转载自简书
原文链接:https://www.jianshu.com/p/81f6f7519ceb