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


最新內容會更新在主站深入淺出區塊鏈社區
原文鏈接:搭建智能合約開發環境 Remix IDE 及使用

目前開發智能的IDE, 首推還是Remix, 而Remix官網, 總是由於各種各樣的(網絡)原因無法使用,本文就來介紹一下如何在本地搭建智能合約開發環境remix-ide並介紹Remix的使用。

寫在前面

Remix 是以太坊智能合約編程語言Solidity IDE,閱讀本文前,你應該對以太坊、智能合約有所了解,
如果還不了解,建議先看以太坊是什么

Remix IDE 介紹

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

Remix IDE的功能全面(傳統IDE有的功能這里都有),比如:

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

Remix IDE 安裝

更新: Remix 現在提供了一個APP, 叫Remix APP, 如果是Mac 電腦,可以直接使用其提供的發布包,地址為:https://github.com/horizon-games/remix-app/releases

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

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

nvm 安裝

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

  1. 命令行中輸入:
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
  1. 在當前用戶profile文件,如(~/.bash_profile, ~/.zshrc, ~/.profile, or ~/.bashrc)添加加載nvm的腳本:
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
  1. 重啟下命令行,輸入nvm 試試,應該可以看到 nvm 命令的幫助

使用nvm 安裝node

因為Remix IDE 要求使用node 7.10.1, 命令行輸入一下命令進行安裝:

nvm install 7

安裝完成之后,使用node --version 和 npm --version檢查下版本號,是否和剛剛列出版本要求一致,在版本一值的qing

命令行安裝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一樣,最左邊是文件瀏覽,中間是代碼編輯區域,右邊是功能區域,下邊是日志區域。
在右側的功能區域,常用的是CompileRunDebuger幾個標簽頁(Tab)。

Compile頁,會動態的顯示當前編輯區域合約的編譯信息,如顯示錯誤和警告。編譯的直接碼信息及ABI接口可以通過點擊Details查看到。
這篇文章里 也有截圖說明。
Run頁,可以部署合約,以及調用合約函數等,使用非常簡單,我們前面也有多篇文章講解。
Debuger頁在下面調試一節單獨講解。

Remix ide 加載本地磁盤文件

這是一個非常用的功能,但發現使用的人非常少,通過加載本地磁盤文件,就可以方便代碼管理工具(如 git)管理我們的合約代碼。
我詳細介紹下如何這個功能怎么使用?

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

  1. 在需要的本地合約代碼的目錄下啟動remix-ide, Remix IDE 會自動把當前目錄做為共享目錄。

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

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

調試

在合約編寫過程中,合約調試是必不可少的一部分,為了模擬調試的過程,我故意在代碼中加入一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。

開始調試

在我們每次執行一個交易(不管是方式調用還是函數執行)的時候,在日志都會輸出一條記錄,如圖:

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

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

  • Transactions: 可以查看交易及交易的執行過程,並且提供了7個調試的按鈕,如下圖:

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

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

  • Solidity State: 顯示當前執行合約的狀態變量,如下圖:

在本例中,我們跟蹤運行步驟的時候,可以看到局部變量的值為2,賦值給狀態變量之后,狀態變量的值更改為了3,所以可以判斷運行當前語句的時候出錯了。

  • Step detail: 顯示當前步驟的gas詳情等,如下圖:

設置斷點

這部分為小專欄讀者准備,歡迎訂閱小專欄區塊鏈技術查看。

參考鏈接

  1. remix-ide github
  2. Remix Document

深入淺出區塊鏈 - 系統學習區塊鏈,打造最好的區塊鏈技術博客。
如果你學習區塊鏈中遇到問題,歡迎加入知識星球深入淺出區塊鏈問答社區,作為星友福利,星友可加入我創建的區塊鏈技術群,群內已經聚集了200多位區塊鏈技術牛人和愛好者。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM