1. 程式人生 > >搭建智慧合約開發環境Remix IDE及使用

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

匯新雲】為大家定期更新文章,【匯新雲】IT人的產業鏈平臺

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

寫在前面

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

Remix IDE 介紹

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

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

程式碼提示補全,程式碼高亮

程式碼警告、錯誤提示

執行日誌輸出

程式碼除錯

...

Remix IDE 安裝

如果你有很好的網路環境,可以直接訪問Remix官網

要不能還是還是像我一樣老老實實把Remix IDE安裝在本地,我發現要想成功安裝選擇對應的版本很關鍵,具體的版本要求如下:


nvm 安裝

nvm 是一個node 版本工具,我們可以使用nvm來安裝不同版本的node。

nvm 官方安裝方法如下:

1.命令列中輸入:


2.在當前使用者profile檔案,如(~/.bash_profile, ~/.zshrc, ~/.profile, or ~/.bashrc)新增載入nvm的指令碼:


1.重啟下命令列,輸入nvm 試試,應該可以看到 nvm 命令的幫助

使用nvm 安裝node

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


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

命令列安裝Remix ide

方法1

直接使用npm安裝,這也是我安裝使用的方法。


如果出現錯誤:

Error: EACCES: permission denied, access '/usr/local/lib/node_modules'

可以嘗試用以下方法解決:


如果我們使用的是正確的node 和npm 版本的話,應該都可以安裝成功,安裝成功之後,remix-ide命令用來啟動ide.

方法2

remix-ide的github 上還提供了另一個方法進行安裝,通過clone 程式碼來安裝,方法如下:


Remix ide 使用

Remix IDE 預設是使用8080埠啟動的,啟動之後在瀏覽器開啟:http://localhost:8080/, 如圖:


和大多數IDE一樣,最左邊是檔案瀏覽,中間是程式碼編輯區域,右邊是功能區域,下邊是日誌區域。

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

在Compile頁,會動態的顯示當前編輯區域合約的編譯資訊,如顯示錯誤和警告。編譯的直接碼資訊及ABI介面可以通過點選Details檢視到。

這篇文章裡 也有截圖說明。

在Run頁,可以部署合約,以及呼叫合約函式等,使用非常簡單,我們前面也有多篇文章講解。

Debuger頁在下面除錯一節單獨講解。

Remix ide 載入本地磁碟檔案

這是一個非常用的功能,但發現使用的人非常少,通過載入本地磁碟檔案,就可以方便程式碼管理工具(如 git)管理我們的合約程式碼。

我詳細介紹下如何這個功能怎麼使用?

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

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

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

載入共享目錄,在檔案瀏覽區域上有,有這樣一個圖示,他用來載入本地共享目錄,如圖:


除錯

在合約編寫過程中,合約除錯是必不可少的一部分,為了模擬除錯的過程,我故意在程式碼中加入一ge錯誤的邏輯程式碼如下:


加入了錯誤的邏輯之後,我第2次呼叫set函式,合約狀態變數的值,可能會出錯(如果第一次不是用引數0去呼叫的話)。

注意如果需要除錯合約,在部署合約的環境應該選擇:JavaScript VM。

開始除錯

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


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


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

Transactions: 可以檢視交易及交易的執行過程,並且提供了7個除錯的按鈕,如下圖:


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

後退一步(不進入函式內部)

後退一步(進入函式內部)

前進一步(進入函式內部)

前進一步(不進入函式內部)

跳到上一個斷點

跳出當前呼叫

跳到下一個斷點

Solidity Locals:顯示當前上下文的區域性變數的值, 如圖:


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


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

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


設定斷點

在本例中,我們的程式碼比較簡單,執行的不多,可以不用設定斷點,如果程式碼比較多,這可以設定斷點,利用上面介紹的第7個按鈕快速的調轉到斷點處,設定斷點的方法很簡單,在編輯區域,點選程式碼的行號,就可以在當前行設定一個斷點,如下圖:


上圖在第8行出設定了一個斷點,成功設定斷點會在行號處,加上一個色塊來標示斷點。取消斷點的方式是,再次點選斷點處。

有一點需要注意一下,如果在宣告變數的地方設定斷點,這斷點可能會觸發兩次,第一次是初始化為0,第二次是賦實際的值。

參考連結

學好區塊鏈,擁抱新未來:

區塊鏈產品經理(點選入駐),和圈內人士混個臉熟