天天看點

NEP提案5摘要動機詳述實作

文章目錄

  • 摘要
  • 動機
  • 詳述
    • 方法
      • 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

繼續閱讀