1. 程式人生 > >以太坊:什麼是ERC20標準?

以太坊:什麼是ERC20標準?

許多人應該都聽過 程式碼即法律(Code Is Law),因為程式寫完了,無論執行多少次都會得到同樣的結果,除非有外界因素的干擾。在多人協作的過程中一定是要按照一個標準來進行分工,這樣才能最快的完成整體任務,不至於出錯。

接觸過數字貨幣的人都應該知道,以太坊是一個分散式的智慧合約平臺,可以分發代幣(Token)。我們可以在以太坊區塊鏈瀏覽器中檢視https://www.etherscan.io

如果這麼多代幣的標準不統一,對於其他人來檢視程式碼是相當痛苦的,眾籌的人也就沒有辦法來檢查代幣分發的是否合理,也沒有辦法做到多種錢包的相容。

所以才推出了一種以太坊代幣的標準:ERC20標準。

token代表數字資產,具有價值,但是並不是都符合特定的規範。

基於ERC20的貨幣更容易互換,並且能夠在Dapps上相同的工作。

新的標準可以讓token更相容,允許其他功能,包括投票標記化。操作更像一個投票操作

Token的持有人可以完全控制資產,遵守ERC20的token可以跟蹤任何人在任何時間擁有多少token.基於eth合約的子貨幣,所以容易實施。只能自己去轉讓。

ERC20標準涵蓋了哪些內容?

Method

在Method目錄下面我們可以看到一些方法,所有的ERC20代幣都是按照下面這些方法來定義的。下面我們講解一下每個方法的作用。

  1. name
function name() constant returns (string name) 

返回string型別的ERC20代幣的名字,例如:StatusNetwork

  1. symbol
function symbol() constant returns (string symbol)

返回string型別的ERC20代幣的符號,也就是代幣的簡稱,例如:SNT。

  1. decimals
function decimals() constant returns (uint8 decimals)

支援幾位小數點後幾位。如果設定為3。也就是支援0.001表示。

  1. totalSupply
function totalSupply() constant returns (uint256 totalSupply)

發行代幣的總量,可以通過這個函式來獲取。所有智慧合約發行的代幣總量是一定的,totalSupply必須設定初始值。如果不設定初始值,這個代幣發行就說明有問題。

  1. balanceOf
function balanceOf(address _owner) constant returns (uint256 balance)

輸入地址,可以獲取該地址代幣的餘額。

  1. transfer
function transfer(address _to, uint256 _value) returns (bool success)

呼叫transfer函式將自己的token轉賬給_to地址,_value為轉賬個數

  1. approve
function approve(address _spender, uint256 _value) returns (bool success)

批准_spender賬戶從自己的賬戶轉移_value個token。可以分多次轉移。

  1. transferFrom
function transferFrom(address _from, address _to, uint256 _value) returns (bool success)

與approve搭配使用,approve批准之後,呼叫transferFrom函式來轉移token。

  1. allowance
function allowance(address _owner, address _spender) constant returns (uint256 remaining)

返回_spender還能提取token的個數。

approve、transferFrom及allowance解釋: 賬戶A有1000個ETH,想允許B賬戶隨意呼叫100個ETH。A賬戶按照以下形式呼叫approve函式approve(B,100)。當B賬戶想用這100個ETH中的10個ETH給C賬戶時,則呼叫transferFrom(A, C, 10)。這時呼叫allowance(A, B)可以檢視B賬戶還能夠呼叫A賬戶多少個token。

Events

  1. Transfer
event Transfer(address indexed _from, address indexed _to, uint256 _value)

當成功轉移token時,一定要觸發Transfer事件

  1. Approval
event Approval(address indexed _owner, address indexed _spender, uint256 _value)

當呼叫approval函式成功時,一定要觸發Approval事件

總結

如果專案方要在以太坊上發行代幣來進行融資,一定會按照這個標準來實現相應的函式。