在開(kāi)始前應(yīng)該具備以下知識(shí):
- 對(duì)于區(qū)塊鏈的基本知識(shí),建議看下《精通比特幣》
- 了解太坊智能合約語(yǔ)言solidity,官方文檔 https://solidity.readthedocs.io/en/develop/ ,也可以搜索相應(yīng)的中文文檔,不過(guò)中文文檔的版本可能不會(huì)即時(shí)更新。
之后會(huì)逐步完成一個(gè)完整的Dapp(distributed application 分布式應(yīng)用),這里選擇代幣合約為例子。代幣(token)是目前區(qū)塊鏈開(kāi)發(fā)比較活躍的一個(gè)領(lǐng)域,ERC-20是以太坊官方的一個(gè)代幣標(biāo)準(zhǔn)。
方法(Methods)
name
- 返回代幣名稱,例如"MyToken"。
- 可選的(OPTIONAL)
- 建議實(shí)現(xiàn)此方法以提高錢包和交易所的使用體驗(yàn),但是接口或者其它合約不應(yīng)依賴于此方法的存在。
function name() constant returns (string name)
symbol
- 返回代幣名稱的短字符串標(biāo)識(shí),例如"MTK"。
- 3-8個(gè)字符的大寫英文字母,沒(méi)有空白或換行符。
- 可選的(OPTIONAL)
- 建議實(shí)現(xiàn)此方法以提高錢包和交易所的使用體驗(yàn),但是接口或者其它合約不應(yīng)依賴于此方法的存在。
function symbol() constant returns (string symbol)
decimals
- 返回代幣使用的小數(shù)位數(shù)。例如 8,表示代幣數(shù)量除以100000000得到用戶表示。
- 可選的(OPTIONAL)
- 建議實(shí)現(xiàn)此方法以提高錢包和交易所的使用體驗(yàn),但是接口或者其它合約不應(yīng)依賴于此方法的存在。
function decimals() constant returns (uint8 decimals)
totalSupply
- 返回代幣當(dāng)前總量。
- 本方法必須實(shí)現(xiàn)。
function totalSupply() constant returns (uint256 totalSupply)
balanceOf
- 返回指定地址
_owner的賬戶余額。 - 本方法必須實(shí)現(xiàn)。
function balanceOf(address _owner) constant returns (uint256 balance)
transfer
- 返回指定地址
_owner的賬戶余額。 - 本方法必須實(shí)現(xiàn)。
function transfer(address _to, uint256 _value) returns (bool success)
transferFrom
- 將金額為
_value的代幣從地址_from轉(zhuǎn)移到地址_to,并且必須(MUST)觸發(fā)Transfer事件。 -
transferFrom方法的設(shè)計(jì),可以讓合約(contract)代碼實(shí)現(xiàn)代幣轉(zhuǎn)移。 - 注意:0值的代幣轉(zhuǎn)移必須(MUST)被視為正常的轉(zhuǎn)移,并且觸發(fā)
Transfer事件。 - 本方法必須實(shí)現(xiàn)。
function transferFrom(address _from, address _to, uint256 _value) returns (bool success)
approve
- 設(shè)置一個(gè)金額
_value,這個(gè)金額表示允許_spender可支配的自己賬戶的額度,如 果這個(gè)函數(shù)再次調(diào)用,將覆蓋當(dāng)前的額度_value。 - 本方法必須實(shí)現(xiàn)。
function approve(address _spender, uint256 _value) returns (bool success)
allowance
- 返回一個(gè)金額,這個(gè)金額是
_owner授權(quán)_spender允許支配自己賬戶的額度。 - 本方法必須實(shí)現(xiàn)。
function allowance(address _owner, address _spender) constant returns (uint256 remaining)
事件(Events)
Transfer
- 代幣轉(zhuǎn)移之后必須(MUST)被觸發(fā),包括零值的轉(zhuǎn)移。
- 在代幣創(chuàng)建時(shí),應(yīng)該(SHOULD)觸發(fā)一個(gè)
Transfer事件,這個(gè)事件的_from地址設(shè)置為0x0。
event Transfer(address indexed _from, address indexed _to, uint256 _value)
Approval
- 在成功調(diào)用方法
approve(address _spender, uint256 _value)后必須(MUST)被觸發(fā)。
event Approval(address indexed _owner, address indexed _spender, uint256 _value)
標(biāo)準(zhǔn)創(chuàng)建日期:2015-11-19
參考文檔 https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md