文章目錄
- 摘要
- 動機
- 詳述
-
- 方法
-
- 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