[h2]1. 概述[/h2]ERC20是token的标准接口。
[h2]2. 摘要[/h2]以下标准允许在智能合约为token实现标准API。 本标准提供了转移token的基本功能,并允许链上第三方使用token。
[h2]3. 动机[/h2]标准接口可以让以太网上的任何token被其他应用程序重新使用:从钱包到去中心化的交易所。
[h2]4. 详细介绍[/h2][h3]4.1 token[/h3]4.1.1方法注意:调用者必须处理返回false的returns (bool success).调用者绝对不能假设返回false的情况不存在。
name:返回令牌的名字,例如“MyToken”。
可选——这个方法可以提高可用性,但接口和其他合约不能依赖该值的存在。- function name() view returns (string name)
复制代码 symbol:返回令牌的符号,比如HIX。
可选——这个方法可以提高可用性,但接口和其他合约不能依赖该值的存在。- 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:转移数量的token到地址,并且必须触发Transfer事件。 如果_from帐户余额没有足够的token来支出,该方法应该抛出异常。
注意:=0必须被视为正常转移并触发Transfer事件。- function transfer(address _to, uint256 _value) returns (bool success)
复制代码 transferFrom:从地址发送个token到地址,必须触发Transfer事件。
transferFrom方法用于提现流程,允许合约为你转移token。这可以用于允许合约为你转让代币或收取费用。除了帐户通过某种机制授权消息的发送者之外,否则该方法应该抛出异常。
注意:_value=0必须被视为正常转移并触发Transfer事件。- function transferFrom(address _from, address _to, uint256 _value) returns (bool success)
复制代码 approve:允许多次从你的帐户提现,最高数量是。 如果再次调用此函数,它将以覆盖当前的值。
注意:为了防止向量攻击(讨论在这),客户端需要确认以这样的方式创建用户接口,即在为同一个花费者设置另一个值之前,先将它的值设置为0。虽然合约本身不应该强制执行,以前部署的合同允许向后兼容。- function approve(address _spender, uint256 _value) returns (bool success)
复制代码 allowance:返回被允许从_owner提取到_spender余额。- function allowance(address _owner, address _spender) constant returns (uint256 remaining)
复制代码 [h3]4.2.event[/h3]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)
复制代码 [h3]5. 实现[/h3]在以太网上已经部署了大量符合ERC20标准的令牌。从节省gas到提高安全性,不同权衡的团队已经编写了各种不同的合约方案。
合约实例:
在调用之前强制设为0的实现:MiniMeToken
[h2]6. 历史[/h2]本标准的相关历史链接:
[h2]7. 版权[/h2]版权和相关权利通过CC0放弃。
[h2]8.参考资料:[/h2]1.github
2.Wikipedia
|
|