NEP-5提案概述了NEO区块链的token标准,该标准将为系统提供token化的智能合约的通用交互机制。其定义了这种机制以及其特征的原因。还提供了模板和示例以支持开发社区。git
随着NEO区块链的发展,智能合约的部署和调用变得愈来愈重要。若是没有一个标准的交互方案,系统须要为每一个合同维护一个惟一的API接口,不管其于其余合约的类似程度。token化合约自身就是这一需求的主要例子,因为其主要操做机制是相同的。与这些token交互的标准方法使得整个生态系统免于为每个部署token的智能合约维护所需基本操做的定义。github
在下面方法定义中,咱们提供合约中所定义的函数方法的定义以及其调用参数函数
public static BigInteger totalSupply()
Returns 部署在系统内该token的总数.区块链
public static string name()
Returns token的名称. e.g. “MyToken”.
该方法每次被调用时必需返回同样的值.token
public static string symbol()
Returns 合约所管理的token的短字符串符号 . e.g. “MYT”. 该符号须要应该比较短小 (建议3-8个字符), 没有空白字符或换行符 ,并限制为大写拉丁字母 (26个英文字符).
该方法每次被调用时必需返回同样的值.接口
public static byte decimals()
Returns token使用的小数位数 - e.g. 8, 意味着把token数量除以100,000,000来得到它的表示值.
该方法每次被调用时必需返回同样的值.事件
public static BigInteger balanceOf(byte[] account)
Returns 帐户的token金额.
参数帐户必需是一个20字节的地址。若是不是,该方法会抛出一个异常。
若是该帐户是个未被使用的地址,该方法会返回0ci
public static bool transfer(byte[] from, byte[] to, BigInteger amount)
从一个帐户转移必定数量的token到另外一个帐户.
参数from和to必需是20字节的地址,不然,该方法会报错。
参数amount必需大于等于0.不然,该方法会报错。
若是帐户没有足够的支付金额,该函数会返回false.
若是方法执行成功,会触发转移事件,并返回true,即便数量为0或者from和to是同一个地址
函数会检查from的地址是否等于调用合约的hash.若是是,则转移会被处理;不然,函数会调用SYSCALL Neo.Runtime.CheckWitness来确认转移
若是to地址是一个部署合约,函数会检查其payable标志位来决定是否把token转移到该合约。
若是转移没有被处理,函数会返回false.开发
public static event transfer(byte[] from, byte[] to, BigInteger amount)
会在token被转移时触发,包括零值转移。
一个建立新token的token合约在建立token时会触发转移事件,并将from的地址设置为null
一个销毁token的token合约在销毁token时会触发转移事件,并将to的地址设置为null字符串
• Woolong: github.com/lllwvlvwlll…
• ICO Template: github.com/neo-project…