編譯代幣合約
接著前面的內容,使用Remix來編譯我們的代幣合約。
- 啟動remix服務
- 在瀏覽器中打開remix IDE
- 然后創(chuàng)建我們的兩個智能合約文件
- 編譯文件(Start Compile)
我這里把自動編譯選項關閉了,需要手動點編譯按鈕,在ERC20.sol為當前頁簽下進行,編譯器會自動找到ERC20Interface.sol文件。因為有繼承關系。
現(xiàn)在看起來是這樣的。

編譯合約
右邊有一些黃色的警告,是編譯器給出的一些語法和格式上的建議,這里我們暫時先不管。
部署代幣合約
在Run -> Create 按鈕是部署合約,這里我們使用默認的JavaScript VM環(huán)境。系統(tǒng)給我們默認生成了5個賬戶,每個賬戶有100(ether)以太幣。這里要分清楚兩個概念,我們發(fā)行的是代幣(token),這個代幣只存在于我們的智能合約中,與以太坊的以太幣是不一樣的。
部署完合約后,我們發(fā)現(xiàn)當前賬戶的以太幣余額變少了,這是因為部署合約是要花費以太幣的。

部署合約
測試代幣合約
我們現(xiàn)在開始測試已部署的代幣合約,淺藍色的按鈕代表是不需要花費以太幣的訪問(在函數(shù)上聲明為view或者pure的),后方有輸入框的是函數(shù)需要給出參數(shù)的。
調用函數(shù)后,會立即給出調用結果,返回結果中包含返回參數(shù)名,參數(shù)類型,返回值。
賬戶(Account)欄顯示的是當前賬戶,后面有一個復制按鈕可以把賬戶復制到剪切板,測試過程中注意當前賬戶,別弄錯了。
下面的測試過程,為了閱讀體驗,我省略了地址中間部分,實際參數(shù)不能省略。
"0xca3...733c"賬戶是合約的發(fā)布賬戶,初始擁有10000代幣。其它賬戶初始余額都為0。
測試case,需要按順序執(zhí)行:
-
decimals,返回3,小數(shù)位為3 -
totalSupply,返回10000,總供給為10000 -
symbol,返回MYT,代幣標識符 -
name,返回MyToken,代幣名稱 -
allowance "0xca3...733c","0x147...160c",查詢帳戶0xca3...733c對賬戶0x147...160c的配額。返回0,正確的,我們還沒做任何配額。 -
balanceOf "0xca3...733c",返回為10000,正確的。因為我們在構造器函數(shù)中,將總供給都分給了合約的發(fā)布賬號。 -
transfer "0x147...160c",1000, 從當前賬戶發(fā)送1000代幣到0x147...160c。 -
balanceOf "0xca3...733c",我們再次查詢合約發(fā)布賬戶的余額,返回9000。 -
balanceOf "0x147...160c",返回1000,剛剛給這個賬戶轉入了1000代幣。 -
approve "0x147...160c",2000,當前賬戶(合約發(fā)布賬戶),給0x147...160c批準2000代幣的配額。 -
allowance "0xca3...733c","0x147...160c",我們再次查詢配額,現(xiàn)在返回值為2000,說明新的配額已經生效。 -
transferFrom "0xca3...733c","0x4b0...d2db",500(注意當前賬戶設置是"0x147...160c"),"0x147...160c"賬戶把0xca3...733c的500代幣發(fā)送到0x4b0...d2db,從配額中扣除。 -
allowance "0xca3...733c","0x147...160c",剩余配額,現(xiàn)在是1500。 -
balanceOf "0xca3...733c",賬戶余額為8500。 -
balanceOf "0x4b0...d2db",賬戶余額為500。 -
balanceOf "0x147...160c",賬戶余額未變,還是1000。
測試完后是這樣的:

測試完成后