ERC20標準到底講的什麼?
許多人應該都聽過 程式碼即法律(Code Is Law),因為程式寫完了,無論執行多少次都會得到同樣的結果,除非有外界因素的干擾。在多人協作的過程中一定是要按照一個標準來進行分工,這樣才能最快的完成整體任務,不至於出錯。
接觸過數字貨幣的人都應該知道,以太坊是一個分散式的智慧合約平臺,可以分發代幣(Token)。目前以太坊上有24351個代幣的智慧合約,我們可以在以太坊區塊鏈瀏覽器中檢視https://www.etherscan.io
TOKEN.png
如果這麼多代幣的標準不統一,對於其他人來檢視程式碼是相當痛苦的,眾籌的人也就沒有辦法來檢查代幣分發的是否合理,也沒有辦法做到多種錢包的相容。
所以才推出了一種以太坊代幣的標準:ERC20標準。
ERC20標準涵蓋了哪些內容?
我們可以在https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20-token-standard.md檢視ERC20代幣的標準API。
Method
在Method目錄下面我們可以看到一些方法,所有的ERC20代幣都是按照下面這些方法來定義的。下面我們講解一下每個方法的作用。
- name
function name() constant returns (string name)
返回string型別的ERC20代幣的名字,例如:StatusNetwork
- symbol
function symbol() constant returns (string symbol)
返回string型別的ERC20代幣的符號,也就是代幣的簡稱,例如:SNT。
- decimals
function decimals() constant returns (uint8 decimals)
支援幾位小數點後幾位。如果設定為3。也就是支援0.001表示。
- totalSupply
function totalSupply() constant returns (uint256 totalSupply)
發行代幣的總量,可以通過這個函式來獲取。所有智慧合約發行的代幣總量是一定的,totalSupply必須設定初始值。如果不設定初始值,這個代幣發行就說明有問題。
- balanceOf
function balanceOf(address _owner) constant returns (uint256 balance)
輸入地址,可以獲取該地址代幣的餘額。
- transfer
function transfer(address _to, uint256 _value) returns (bool success)
呼叫transfer函式將自己的token轉賬給_to地址,_value為轉賬個數
- approve
function approve(address _spender, uint256 _value) returns (bool success)
批准_spender賬戶從自己的賬戶轉移_value個token。可以分多次轉移。
- transferFrom
function transferFrom(address _from, address _to, uint256 _value) returns (bool success)
與approve搭配使用,approve批准之後,呼叫transferFrom函式來轉移token。
- 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
- Transfer
event Transfer(address indexed _from, address indexed _to, uint256 _value)
當成功轉移token時,一定要觸發Transfer事件
- Approval
event Approval(address indexed _owner, address indexed _spender, uint256 _value)
當呼叫approval函式成功時,一定要觸發Approval事件
總結
如果專案方要在以太坊上發行代幣來進行融資,一定會按照這個標準來實現相應的函式。
相關文章
- 【區塊鏈100問】ERC20代幣那麼火爆, 那麼ERC20到底是什麼?區塊鏈
- ERC20 ERC677 代幣標準
- 一名好程式設計師到底需要什麼樣的標準?程式設計師
- 資料標準和資料規範到底有什麼區別?
- 軟體測試的准入準出是什麼?標準是什麼?
- 標準差excel用什麼函式 excel標準偏差的公式Excel函式公式
- 什麼是通證標準?
- 什麼是特徵標準化特徵
- 精益企業的標準是什麼?
- 什麼是 Dynatrace 的 Speed Index 度量標準Index
- 為什麼要特徵標準化特徵
- Inconel600對應什麼國標標準
- Spring系列第九講 depend-on到底是幹什麼的?Spring
- 什麼是 Dynatrace 裡的 Visually Complete 度量標準
- 豐田為什麼要做標準化
- 什麼是 C 和 C ++ 標準庫?
- 4399上的“童年噩夢”湖邊小屋,到底講了什麼故事?
- 我們在講的 Database Plus,到底能解決什麼樣的問題?Database
- 智慧經營的條件和標準是什麼?
- 為什麼標準庫的模板變數都是inline的變數inline
- meta標籤到底是做什麼的(拿來吧你)
- C語言標頭檔案到底是什麼?C語言
- 《Machine Learning in Action》—— Taoye給你講講決策樹到底是支什麼“鬼”Mac
- 電話機器人效果的核心標準是什麼機器人
- 資料治理:資料標準管理指的是什麼?
- 以就業為目標,Python到底應該學什麼?就業Python
- 六西格瑪諮詢的收費標準是什麼?
- 土建職稱論文發表的格式標準是什麼
- 天行健諮詢:什麼是標準化作業?
- 尋找Python培訓機構標準是什麼Python
- 到底什麼是@RestControllerRESTController
- 到底什麼是BRAS?
- 到底什麼叫智慧?
- 六西格瑪諮詢公司的定價標準是什麼?
- web前端達到什麼水平,才能滿足求職的標準?Web前端求職
- 分析即服務(AaaS)到底是什麼?終於有人講明白了
- 什麼是可靠性標準以及如何保證? -DZone
- Django官方為什麼沒有標準專案結構Django