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