文章目录

  1. 摘要
  2. 动机
  3. 详述
    方法

      totalSupply
      name
      symbol
      decimals
      balanceOf
      transfer

    事件

      transfer
  4. 实现

摘要

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...


NEO技术饭
24 声望5 粉丝

NEO是一个非盈利的社区化的区块链项目。它是利用区块链技术和数字身份进行资产数字化,利用智能合约对数字资产进行自动化管理,实现“智能经济”的一种分布式网络。