搭建智能合約開發環境Remix IDE及使用

  目前開發智能的IDE, 首推仍是Remix, 而Remix官網, 老是因爲各類各樣的(網絡)緣由沒法使用,本文就來介紹一下如何在本地搭建智能合約開發環境remix-ide並介紹Remix的使用。html

一.寫在前面
  Remix 是以太坊智能合約編程語言Solidity IDE,閱讀本文前,你應該對以太坊、智能合約有所瞭解,若是還不瞭解,建議先看以太坊是什麼node

 

二.Remix IDE 介紹
  Remix IDE 是一款基於瀏覽器的IDE,跟有些開發聊的時候,發現有一些同窗對瀏覽器的IDE,有一些偏見,其實Atom編輯器就是基於web技術開發的一款編輯器(Atom能夠看作一個沒有地址欄的瀏覽器),其實基於瀏覽器的IDE,有一個很大的好處就是不用安裝,打開即用。git

  Remix IDE的功能全面(傳統IDE有的功能這裏都有),好比:github

  1.代碼提示補全,代碼高亮
  2.代碼警告、錯誤提示
  3.運行日誌輸出
  4.代碼調試
  ...web

 

三.Remix IDE 安裝
  Remix 如今提供了一個APP, 叫Remix APP, 若是是Mac 電腦,能夠直接使用其提供的發佈包,地址爲:https://github.com/horizon-games/remix-app/releasesnpm

  若是你有很好的網絡環境,能夠直接訪問Remix官網
  要不能仍是仍是像我同樣老老實實把Remix IDE安裝在本地,我發現要想成功安裝選擇對應的版本很關鍵,具體的版本要求以下:編程

$ node --version
v7.10.1
$ npm --version
4.2.0
$ nvm --version
0.33.11

1.nvm 安裝瀏覽器

  nvm是一個node 版本工具,咱們可使用nvm來安裝不一樣版本的node。
  nvm官方安裝方法以下:bash

  命令行中輸入:網絡

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash

  在當前用戶profile文件,如(~/.bash_profile, ~/.zshrc, ~/.profile, or ~/.bashrc)添加加載nvm的腳本:

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"

  重啓下命令行,輸入nvm 試試,應該能夠看到 nvm 命令的幫助

2.使用nvm安裝node
  由於Remix IDE 要求使用node 7.10.1, 命令行輸入一下命令進行安裝:

nvm install 7

  安裝完成以後,使用node --version 和 npm --version檢查下版本號,是否和剛剛列出版本要求一致。

3.命令行安裝Remix ide
方法1:
  直接使用npm安裝,這也是我安裝使用的方法。

npm install remix-ide -g
remix-ide

  若是出現錯誤:Error: EACCES: permission denied, access '/usr/local/lib/node_modules'

  能夠嘗試用如下方法解決:

sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}

  若是咱們使用的是正確的node 和npm 版本的話,應該均可以安裝成功,安裝成功以後,remix-ide命令用來啓動ide。

方法2:
  remix-ide的github 上還提供了另外一個方法進行安裝,經過clone 代碼來安裝,方法以下:

git clone https://github.com/ethereum/remix-ide.git
cd remix-ide
npm install
npm run setupremix # this will clone https://github.com/ethereum/remix for you and link it to remix-ide
npm start

 

四.Remix ide使用

  Remix IDE 默認是使用8080端口啓動的,啓動以後在瀏覽器打開:http://localhost:8080/, 如圖:

 

  和大多數IDE同樣,最左邊是文件瀏覽,中間是代碼編輯區域,右邊是功能區域,下邊是日誌區域。

  在右側的功能區域,經常使用的是Compile、Run及Debuger幾個標籤頁(Tab)。

  在Compile頁,會動態的顯示當前編輯區域合約的編譯信息,如顯示錯誤和警告。編譯的直接碼信息及ABI接口能夠經過點擊Details查看到。

  點「Details"彈出以下彈出框,在彈出的對話框中可找到WEB3DEPLOY部分。詳見:https://learnblockchain.cn/2017/11/24/init-env/

  在Run頁,能夠部署合約,以及調用合約函數等,使用很是簡單。

  Debuger頁在下面單獨講解。

1.Remix ide 加載本地磁盤文件
  這是一個很是用的功能,但發現使用的人很是少,經過加載本地磁盤文件,就能夠方便代碼管理工具(如 git)管理咱們的合約代碼。
  我詳細介紹下如何這個功能怎麼使用?

  使用在線版本的Remix可使用這個功能, 不過須要安裝一下remixd, 安裝使用命令npm install -g remixd。

  a.在須要的本地合約代碼的目錄下啓動remix-ide, Remix IDE 會自動把當前目錄作爲共享目錄。

  若是是使用在線的Remix,須要使用命令remixd -s shared-folder 來指定共享目錄。

  b.加載共享目錄,在文件瀏覽區域上有,有這樣一個圖標,他用來加載本地共享目錄,如圖:

2.調試

  在合約編寫過程當中,合約調試是必不可少的一部分,爲了模擬調試的過程,我故意在代碼中加入一ge錯誤的邏輯代碼以下:

pragma solidity ^0.4.0;
​
contract SimpleStorage {
    
    uint storedData;
    
    function set(uint x) public {
        storedData += x;    // 錯誤的,多加了一個加號
    }
​
    function get() public constant returns (uint) {
        return storedData;
    }
}

  加入了錯誤的邏輯以後,我第2次調用set函數,合約狀態變量的值,可能會出錯(若是第一次不是用參數0去調用的話)。

  注意若是須要調試合約,在部署合約的環境應該選擇:JavaScript VM。

3.開始調試
  在咱們每次執行一個交易(不論是方式調用仍是函數執行)的時候,在日誌都會輸出一條記錄,如圖:

  點擊上圖中的「Debug」按鈕,在Remix右側的功能區域會切換到調試面板,以下圖:

  調試過程過程當中,有下面幾項須要重點關注:

  a.Transactions: 能夠查看交易及交易的執行過程,而且提供了7個調試的按鈕,以下圖:

  爲了方便介紹,我爲每一個按鈕編了號,每一個按鈕的含義是:

  1後退一步(不進入函數內部)
  2後退一步(進入函數內部)
  3前進一步(進入函數內部)
  4前進一步(不進入函數內部)
  5跳到上一個斷點
  6跳出當前調用
  7跳到下一個斷點
  b.Solidity Locals:顯示當前上下文的局部變量的值, 如圖:

 

  c.Solidity State: 顯示當前執行合約的狀態變量,以下圖:

  在本例中,咱們跟蹤運行步驟的時候,能夠看到局部變量的值爲2,賦值給狀態變量以後,狀態變量的值更改成了3,因此能夠判斷運行當前語句的時候出錯了。

  d.Step detail: 顯示當前步驟的gas詳情等,以下圖:

4.進入調試

   展開Debug按鈕,複製transaction hash值,將其粘貼到右邊Debugger下的Transaction index or hash輸入框,再點擊「Start debugging」按鈕便可進入調試,這時可進行單步調試等操做。

 

參考連接:remix-ide github
Remix Document

相關文章
相關標籤/搜索