数字货币的种类纷繁复杂,除了比特币、莱特币、Zcash、bitshares 等众多老牌币种, 都是独自的链,在自己的链上运行着自己特有的币外,另外有一种平台型代币,他们是依托以太坊而创建的,没有自己的链,而是运行在以太坊之上。
市面上,十有八九的数字货币都属于“代币”的类型,通过以太坊平台来发行的,这类数字货币通常是ERC-20代币。
简单地说,任何 ERC-20 代币都能立即兼容以太坊钱包(几乎所有支持以太币的钱包,包括Jaxx、MEW、imToken等,也支持 erc-20的代币),由于交易所已经知道这些代币是如何操作的,它们可以很容易地整合这些代币。这就意味着,在很多情况下,这些代币都是可以立即进行交易的。
先说下,比特币有个BIP的东西,Bitcoin Improvement Proposals, 即比特币更新建议,任何人都可以在Github上提建议,你的建议有可能被采纳,也有可能被拒绝。
比特币的状态都是根据BIP来进行跟踪的。最近讨论的比较热的比特币扩容方案,就是这个github网址里所提出的意见。
https://github.com/bitcoin/bips
以太坊也同样有个叫EIP的,也是一样的意思,征求大家的意见,任何人可以对以太坊的代币提出改进意见。
https://github.com/ethereum/eips
其中代号为20的一项是2015年11月提出的,是对代币定义一个标准的提议,否则不同的代币要定制不同的钱包,使用不同的操作方式,非常麻烦。
https://github.com/ethereum/eips/issues/20
代币标准是由一系列的函数构成的。
代码也很简单。
totalSupply
function totalSupply() constant returns (uint256 totalSupply)
获得代币总供应量。
balanceOf
function balanceOf(address _owner) constant returns (uint256 balance)
获得账户所有者余额
transfer
function transfer(address _to, uint256 _value) returns (bool success)
转移一定数量的代币。
transferFrom
function transferFrom(address _from, address _to, uint256 _value) returns (bool success)
从某地址到另一个地址,通常是一个交易所提币的操作。
approve
function approve(address _spender, uint256 _value) returns (bool success)
批准花费代币。
allowance
function allowance(address _owner, address _spender) constant returns (uint256 remaining)
是一个查询函数,返回交易所上的这个地址可以提多少币的结果。
两个Events
Transfer
event Transfer(address indexed _from, address indexed _to, uint256 _value)
transfer或者transferFrom被调用的话,触发转账的动作。
Approval
event Approval(address indexed _owner, address indexed _spender, uint256 _value)
表示相应的提币的请求被同意,可以正式提币了。
如果你写的Token的智能合约符合以上这些函数的标准,你的Token则被称之为标准的ERC20代币。
以太坊的官网也展示了一个发行Token的案例。
如果在以太坊发行代币,符合ERC20的标准的话,那很多交易所就可以集成,在它们的交易所上实现代币的买卖、交易。
简单地来说,任何ERC-20代币都能立刻兼容以太坊钱包。
有了这套标准,代币的发行变得极其容易。目前越来越多的ICO都倾向于发行符合ERC20的代币了。
我是苏江,长期分享区块链思考,欢迎加我微信与我交流:su466120534