文章目录
摘要
动机
详述 方法
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/lllwvlvwll…• ICO Template: https://github.com/neo-projec…
原文:https://github.com/neo-projec…