天天看點

使用Remix編譯和部署以太坊智能合約

使用Remix編譯和部署以太坊智能合約

Remix 是一個開源的 

Solidity

 智能合約開發環境,提供基本的編譯、部署至本地或測試網絡、執行合約等功能。Solidity 是 以太坊Ethereum 官方設計和支援的開發語言,專門用于編寫智能合約。

本文希望将一個很簡單的代币合約(隻能發行和轉賬),部署在本地和測試網絡上,測試下它的功能。

較長的描述使用 Remix 的步驟及使用上可能碰到的問題。

 之前開發過以太坊Ethereum智能合約,但沒有記錄過開發的過程和碰到的問題,覺得挺可惜。這次重新開始,從最基礎開始,一步步學習。

開發環境

不需要安裝,直接在任何浏覽器啟動 

Remix

使用Remix編譯和部署以太坊智能合約

取得代币合約

代币合約的範例很多,

Ethereum 

官網有提供一個最小可執行的代币合約(MINIMUM VIABLE TOKEN):

pragma solidity ^0.4.0;
contract MyToken {
/* This creates an array with all balances */
    mapping (address => uint256) public balanceOf;
    
    /* Initializes contract with initial supply tokens to the creator of the contract */
    function MyToken(uint256 initialSupply) public {
        balanceOf[msg.sender] = initialSupply;              
        // Give the creator all initial tokens
    }
    
    /* Send coins */
    function transfer(address _to, uint256 _value) public {
        require(balanceOf[msg.sender] >= _value);           
        // Check if the sender has enough
        require(balanceOf[_to] + _value >= balanceOf[_to]); 
        // Check for overflows
        balanceOf[msg.sender] -= _value;                    
        // Subtract from the sender
        balanceOf[_to] += _value;                  
        // Add the same to the recipient
    }
}      

這個 MyToken 合約真的很簡單,隻能做兩件事:

  • 建立代币:發起合約時建立指定數量的代币,代币擁有者是發起合約的 Ethereum 帳戶
  • 轉移代币:轉移指定數量的代币到指定的 Ethereum 帳戶

至于一個完整的代币合約,可參考

ERC20 Token使用手冊

使用 Remix 編譯合約

1. 點右上角 + 新增一個合約

名稱任意隻要擴充名是 “.sol”。

使用Remix編譯和部署以太坊智能合約

2. 複制合約內容到該合約并編譯

Remix 預設設定會自動編譯,隻要旁邊沒有蹦出紅色的 error 提示就代表編譯成功。

使用Remix編譯和部署以太坊智能合約

在本地部署合約

1. 設定網絡

點選左上的 run。

使用Remix編譯和部署以太坊智能合約

Environment 選擇 JavaScript VM 代表所有資料都是存在本地(功能類似 testrpc)。它會提供 5 個虛拟賬戶每個有 100 ETH,随便選擇一個賬戶(要記住後面一直要用)。

使用Remix編譯和部署以太坊智能合約

2. 發送交易部署合約

選擇 MyToken。可以看到 create 按鈕。且已根據合約內容顯示必須輸入 

initialSupply

(也就是要發行的代币數量)。輸入一個數目點create,就可以發送交易部署合約。

使用Remix編譯和部署以太坊智能合約

合約部署成功後,可以看到合約的使用界面。Remix 會自動根據合約的內容,産生對應的合約使用界面。可以看到合約有兩個功能:balanceOf(查詢餘額) 和 transfer(轉移代币)。

使用Remix編譯和部署以太坊智能合約

底下可以看到 log(記錄每一次的操作)。實際上部署合約是通過一個 Ethereum 交易完成,點 Details 可以看到這筆交易詳細資料。

使用Remix編譯和部署以太坊智能合約

執行合約 — 查詢餘額

1. 選擇剛剛發起合約的賬戶

使用Remix編譯和部署以太坊智能合約

可以點右邊的按鈕複制

2. 輸入賬戶

注意要用 “” 把賬戶括起來,示例:

"0xca35b7d915458ef540ade6068dfe2f44e8fa733c"      

3. 點選 balanceOf

可以看到執行結果,也就是目前這個賬戶的代币餘額。

使用Remix編譯和部署以太坊智能合約

可能的錯誤情況

說明一點,因為資料傳輸是用 JSON 格式,是以要加上 “”。如果忘了 “” 就會在 log 中看到錯誤提示:

使用Remix編譯和部署以太坊智能合約

執行合約 — 轉移代币

1. 選擇要輸出的賬戶

選擇剛剛發起的合約的賬戶。

使用Remix編譯和部署以太坊智能合約

2. 輸入要轉入的賬戶

選擇並複制另一個賬戶。在合約界面 transfer 後面的輸入位置,輸入轉入賬戶和要轉移的代币數量。賬戶同樣需要用 “” 括起來,示例:

"0x4b0897b0513fdc7c541b6d9d7e929c4e5364d2db", 10      

3. 點選 transfer

點選 transfer,成功後會看到 log 更新。

使用Remix編譯和部署以太坊智能合約

4. 确認餘額更新

這時在查詢轉入賬戶的餘額,就可以看到代币餘額增加啦!

使用Remix編譯和部署以太坊智能合約

錯誤情況

如果選擇要轉出的賬戶代币餘額不足,這個交易就會失敗,會在 log 看到錯誤提示。

使用Remix編譯和部署以太坊智能合約

在測試網絡部署合約

1. 安裝 MetaMask

首先,要連到測試網絡,這就要安裝 

MetaMask

。它是浏覽器端的 Ethereum 錢包,可以連結 Ethereum 公共和測試網絡。安裝後需要建立 Ethereum 賬号,這個這裡就不細講了。

使用Remix編譯和部署以太坊智能合約
使用Remix編譯和部署以太坊智能合約

成功啟動後是這樣的。

使用Remix編譯和部署以太坊智能合約

我們選擇 Ropsten Test Net

2. 選擇測試網絡

回到 Remix,這次 Environment 選擇 Injected Web3,Remix 會自動連接配接 MetaMask。

使用Remix編譯和部署以太坊智能合約

成功連接配接後會看到和 MetaMask 相同賬号和 Ether 餘額

3. 部署合約

接着用同樣的方式,按 create 部署合約,就會看到 MetaMask 的彈出視窗。直接按 submit 發送交易。

使用Remix編譯和部署以太坊智能合約

稍等片刻(需要等交易被确認),部署成功後合約的使用界面就會出來。

使用Remix編譯和部署以太坊智能合約

ok,現在可以用同樣的方式使用合約啦!

總結下

Remix 提供一個 Solidity 智能合約的開發環境,可以友善的編譯、部署、執行甚至找錯,适合程式設計經驗不多的初學者。但無法做到版本控制、測試及和其他開發工具一起使用等,實際上要開發 DApp,使用 Truffle3、Ganache、web3.js 來編譯和部署合約比較友善和專業些更适合開發人員。推薦一個适合區塊鍊新手的以太坊DApp開發教程:

http://xc.hubwiz.com/course/5a952991adb3847553d205d1

如果想加入以太坊技術開發群可以加微信:cuixuebin2,拉你入群。

繼續閱讀