關於Remix的使用

區塊鏈阿特拉斯發表於2018-09-15

介紹

Remix使用文件

Remix是一個開源的 用於 Solidity 智慧合約開發的Web端IDE,提供基本的編譯、部署至本地或測試網路、執行合約等功能。Solidity 是 Ethereum 官方設計和支援的程式語言,專門用於編寫智慧合約。

可以本地部署Remix,也可以直接使用官方部署好的,地址是:remix.ethereum.org。介面如下圖:

螢幕快照 2018-09-15 上午10.19.26.png | center | 400x229

建立代幣合約

solidity官網上有一個最簡單的建立代幣合約Subcurrency Example

pragma solidity >0.4.24;

contract Coin {
    // The keyword "public" makes those variables
    // easily readable from outside.
    address public minter;
    mapping (address => uint) public balances;

    // Events allow light clients to react to
    // changes efficiently.
    event Sent(address from, address to, uint amount);

    // This is the constructor whose code is
    // run only when the contract is created.
    // 合約的建構函式,建立合約的時候合約建立者即為鑄幣人
    constructor() public {
        minter = msg.sender;
    }
    
    //鑄幣,只有合約建立人才能鑄幣
    function mint(address receiver, uint amount) public {
        require(msg.sender == minter);
        require(amount < 1e60);
        balances[receiver] += amount;
    }
     
    //傳送代幣
    function send(address receiver, uint amount) public {
        require(amount <= balances[msg.sender], "Insufficient balance.");
        balances[msg.sender] -= amount;
        balances[receiver] += amount;
        emit Sent(msg.sender, receiver, amount);
    }
}
複製程式碼

這是一個最簡單的代幣生成合約,主要就做了以下幾件事:

  1. 建立合約:約定建立者即為鑄幣者
  2. 生成代幣:合約建立者隨時可以呼叫mint方法建立指定數量的代幣
  3. 傳送代幣:只要自己擁有代幣,就可以給指定地址傳送代幣

編譯合約

  1. 建立.sol格式的合約檔案
  2. 編寫合約程式碼
  3. 開始編譯
  4. 編譯成功

螢幕快照 2018-09-15 上午10.49.50.png | center | 500x183

編譯合約生成的Details

合約編譯成功之後,點選Details按鈕,就能看到編譯之後的一些資訊,如下圖所示(內容比較多,沒有全部截圖):

螢幕快照 2018-09-15 下午12.38.47.png | center | 350x394
螢幕快照 2018-09-15 下午12.47.28.png | center | 350x400

  1. NAME:合約名
  2. METADATA:一些編譯相關的資訊,比如版本、所用的語言、設定等
  3. BYTECODE:寫入區塊的位元組碼
  4. ABI:此智慧合約對應的 ABI ,也就是我們合約裡面定義的一些介面
  5. WEB3DEPLOY:智慧合約編譯之後的釋出命令,這個就是比較重要的,之後的web3就是呼叫這段命令來部署合約的
  6. METADATAHASH:上面2後設資料的一個雜湊值
  7. SWARMLOCATION:Swarm網路的一個地址(到底什麼是Swarm
  8. FUNCTIONHASHES:合約定義的方法的hash,其實我們執行合約的時候就是通過這個hash去找到對應的方法進行執行的
  9. GASESTIMATES:關於礦工費的一個預算,在ETH上進行合約的部署,執行等都是需要礦工費的。一般合約程式碼越多礦工費越高。

本地部署合約

  1. 點選右上角的Run
  2. 選中部署的環境為本地(也就是合約不會部署到公共的區塊鏈網路,只是部署到一個本地的測試區塊鏈網路)
  3. 選中部署的賬戶(本地環境預設會建立好幾個賬戶,每個賬戶預設有100個eth)
  4. 選擇要部署的合約
  5. 點選Deploy之後就會部署到本地了
  6. 部署完成之後的合約地址

螢幕快照 2018-09-15 上午11.03.45.png | center | 500x625

或者在At Address填寫已經部署好的合約地址,6中就會出現對應地址的合約。

測試網路部署合約

首先要安裝MetaMask外掛,到Chrome商店去下載。這是一個Chrome上的以太坊錢包外掛。具體的使用在這裡不做說明。

我這裡使用的測試網路是Rinkeby,在Rinkeby上賬戶的eth代幣需要到www.rinkeby.io/#faucet獲取。

螢幕快照 2018-09-15 上午11.14.48.png | center | 300x503

我們在測試網路上環境選擇Injected Web3Remix會自動連結 MetaMask。我們能看到賬號也變成了我們MetaMask上面的賬號。

螢幕快照 2018-09-15 上午11.26.01.png | center | 400x268

最後點選Deploy部署,MetaMask會彈出介面讓你進行一個確認,因為部署合約是需要一個礦工費的,這裡主要就是確認礦工費,確認之後就會發起廣播,礦工收取礦工費,合約部署到區塊上。

螢幕快照 2018-09-15 上午11.26.19.png | center | 400x682

呼叫合約

合約部署完成之後,下面就會出現我們部署好的合約,或者我們直接在At Address裡填入之前已經部署過的合約地址也可以。

展開合約,我們就能看到之前合約程式碼裡我們定義的一些方法和變數。這裡mintsend執行時是需要支付礦工費的。

  1. mint生成代幣:填入賬戶地址(需要是合約建立者的地址)和生成代幣的數量,點選transact執行合約程式碼。
  2. send傳送代幣:展開之後一樣填入接受者的賬戶地址和接收數量
  3. 檢視對應地址裡的代幣餘額
  4. 檢視鑄幣者(即合約建立者)

螢幕快照 2018-09-15 上午11.36.03.png | center | 400x809

終端輸出器

檢視交易詳情

在合約部署、執行的過程中終端輸出器會輸出相應的內容資訊。如下圖,是一個合約部署的輸出內容(標有轉賬的雜湊,合約建立者,gas費用,輸入內容等):

螢幕快照 2018-09-15 下午12.25.04.png | center | 500x297

Debug除錯

除錯需要在本地環境進行除錯,即合約部署時選擇JavaScript VM,然後在我們上圖所示的終端輸出中點選對應交易右邊的Debug按鈕,即可顯示如下圖所示的除錯介面:

螢幕快照 2018-09-15 下午12.33.21.png | center | 500x991

PS:按道理這裡不是本地環境也可以,直接輸入Block numberTxHash即可檢視呼叫棧,但是我輸入之後發現是empty,不知道什麼原因。

螢幕快照 2018-09-15 下午12.34.58.png | center | 400x527

相關文章