文章目录
摘要
动机
详述
方法
totalSupply
name
symbol
decimals
balanceOf
transfer
事件
transfer
实现
摘要
NEP-5提案概述了NEO区块链的token标准,该标准将为系统提供token化的智能合约的通用交互机制。其定义了这种机制以及其特征的缘由。还提供了模板和示例以支持开发社区。
动机
随着NEO区块链的发展,智能合约的部署和调用变得越来越重要。如果没有一个标准的交互方案,系统需要为每个合同维护一个唯一的API接口,无论其于其他合约的相似程度。token化合约自身就是这一需求的主要例子,由于其主要操作机制是相同的。与这些token交互的标准方法使得整个生态系统免于为每一个部署token的智能合约维护所需基本操作的定义。
详述
在下面方法定义中,我们提供合约中所定义的函数方法的定义以及其调用参数
方法
totalSupply
public static BigInteger totalSupply()
Returns
部署在系统内该token的总数.
name
public static string name()
Returns token
的名称. e.g. “MyToken”.
该方法每次被调用时必需返回一样的值.
symbol
public static string symbol()
Returns
合约所管理的token的短字符串符号 . e.g. “MYT”. 该符号需要应该比较短小 (建议3-8个字符), 没有空白字符或换行符,并限制为大写拉丁字母 (26个英文字符).
该方法每次被调用时必需返回一样的值.
decimals
public static byte decimals()
Returns token
使用的小数位数 – e.g. 8, 意味着把token数量除以100,000,000来获得它的表示值.
该方法每次被调用时必需返回一样的值.
balanceOf
public static BigInteger balanceOf(byte[]account)
Returns
账户的token金额.
参数账户必需是一个20字节的地址。如果不是,该方法会抛出一个异常。如果该账户是个未被使用的地址,该方法会返回0
transfer
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.
事件
transfer
public static event transfer(byte[] from,byte[] to, BigInteger amount)
会在token被转移时触发,包括零值转移。一个创建新token的token合约在创建token时会触发转移事件,并将from的地址设置为null
一个销毁token的token合约在销毁token时会触发转移事件,并将to的地址设置为null
实现
• Woolong:https://github.com/lllwvlvwlll/Woolong
• ICO Template:https://github.com/neo-project/examples/tree/master/ICO_Template
原文:https://github.com/neo-project/proposals/blob/master/nep-5.mediawiki
网友评论