NEO改進協議提案5(NEP-5)

NEOWest發表於2018-12-12

文章目錄

  • 摘要
  • 動機
  • 詳述
    • 方法
      • 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: github.com/lllwvlvwlll…
• ICO Template: github.com/neo-project…

原文:github.com/neo-project…


相關文章