Remix是以太坊官方開源的Solidity在線集成開發環境,可以使用Solidity語言在網頁內完成以太坊智能合約的在線開發、在線編譯、在線測試、在線部署、在線調試與在線交互,非常適合Solidity智能合約的學習與原型快速開發。
Solidity IDE中文版Remix由匯智網提供,國內CDN加速,訪問地址:http://remix.hubwiz.com。
如果要快速掌握以太坊智能合約與DApp開發,推薦匯智網的以太坊開發系列教程。
Solidity IDE Remix爲左中右三欄佈局,左面板爲Remix文件管理器,中間爲文件編輯器,
右側爲開發工具面板:
1、Solidity IDE Remix文件管理器
Remix左面板中的文件管理器,用來列出在瀏覽器本地存儲中保存的文件,分爲browser和config兩個目錄,
當你第一次訪問Remix的時候,在browser目錄下有兩個預置的代碼:ballot.sol合約以及對應的單元測試
文件ballot_test.sol,點擊文件名就可以在中間的文件編輯器中查看並編輯代碼:
Remix文件管理器頂部的工具欄提供創建新文件、上傳本地文件、發佈gist等快捷功能,你可以將鼠標移到
相應的圖標處停頓,然後查看功能的浮動提示信息。
爲了後續功能的學習,你可以點擊左上角的+
創建一個新的solidity合約文件,在彈出的對話框中,將
文件命名爲hello.sol:
點擊[ok]按鈕後,你就可以看到在左面板的文件管理其中browser目錄下出現了hello.sol
文件名,
同時在中間區域的文件編輯器中自動打開了這個新創建的文件等待編輯,現在它還是空的,我們將在下面
編寫簡單的Solidity代碼。
2、Solidity IDE Remix編輯器及終端
Solidity IDE Remix中間區域爲上下佈局,分別提供文件編輯功能和終端訪問功能。
2.1 Remix文件編輯器
Solidity IDE Remix中間區域上方的文件編輯器支持同時打開多個文件,當前激活的文件,其文件名以粗體顯示:
Remix文件編輯器頂部左右兩側的箭頭,分別用來切換左右面板的顯示與隱藏;左上角的+
和-
,
分別用來放大或縮小編輯器裏的文本字體大小。
現在我們激活hello.sol
文件,然後輸入簡單的合約代碼:
pragma solidity ^0.5.1;
contract Hello{
function echo(string memory text) public pure returns(string memory) {
return text;
}
}
基本上這是最簡單的以太坊合約了,它只有一個echo()
方法,作用就是把輸入的字符串
再原樣返回。
2.2 Remix終端
Solidity IDE Remix中間區域下方爲終端,可以輸入JavaScript命令與Remix IDE或區塊鏈節點交互:
Remix終端內置了web3.js 1.0.0、ether.js、swarmgy以及當前載入的Solidity編譯器,因此你可以
在終端內使用熟悉的web3 API與當前連接的區塊鏈節點交互。
Remix終端同時也內置了remix對象,可以利用它來腳本化地操作Solidity Remix IDE,例如載入指定
url的gist,或者執行當前顯示的代碼。將終端顯示向上滾動到開始位置,就可以看到remix對象的
常用方法描述。
Remix終端的另一個作用是顯示合約執行或靜態分析的運行結果。例如,當你部署一個合約後或執行
一個合約方法後,就會在終端看到它的執行信息:
點擊信息行右側的下拉圖標,就可以查看該信息的詳情;點擊[debug]按鈕,就會打開右側面板中的
調試頁對合約進行單步或斷點調試。
Remix終端頂部的工具欄提供了切換終端顯示狀態、清理終端輸出等功能,顯示待定交易的量,
選擇監聽交易的範圍,也可以搜索歷史交易。
3、Solidity IDE Remix功能面板
Solidity IDE Remix的右側爲功能面板,以選項頁的方式提供編譯、運行、靜態分析、測試、
調試、設置和技術支持功能。
3.1 編譯選項頁
在編譯選項頁,你可以點擊下拉框切換當前要使用的Solidity編譯器版本:
然後點擊[開始編譯]按鈕,就會編譯Remix文件編輯器中當前選中的代碼文件,比如我們的
hello.sol文件。編譯完成後,如果沒有編譯錯誤,就可以看到合約名字Hello出現在編譯
選項頁的合約下拉框中:
可以點擊[swarm]按鈕將編譯好的合約上傳到Swarm網絡,或者點擊[詳情]按鈕查看編譯
結果詳情,也可以點擊[ABI]或[字節碼]按鈕,分別將合約的ABI與字節碼拷貝到系統剪切板
以便在其他程序中使用。
3.2 運行選項頁
在運行選項頁,可以部署編譯好的合約,也可以執行已部署合約的方法:
節點環境選項提供三種選擇:JS虛擬機、注入Web3對象或使用web3提供器。
- JS虛擬機是一個JS版本的以太坊虛擬機實現,它運行在你的瀏覽器內,因此你不需要考慮
節點配置或者擔心損失以太幣,最適合學習和快速原型驗證。 - 如果你的瀏覽器安裝了Metamask插件,或者使用Mist之類的以太坊兼容瀏覽器,那麼也
可以選擇第二個環境:使用注入的Web3對象。 - 如果你有自己的節點,那麼可以選擇第三個選項使用web3提供器來讓Remix連接
到你的節點上,不過如果要連接的節點是接入以太坊主網的,要注意每一次交易都是
有成本的!
如果之前有編譯好的合約,在運行選項頁就可以看到這個合約的名字,例如我們的Hello。
點擊[部署]按鈕就可以將這個合約部署到我們選定的節點環境了:
現在可以看到,已部署的合約區域,已經出現我們的合約了。點擊這個合約實例,
可以看到我們爲Hello合約定義的echo方法自動顯示出來了:
在方法名後面的輸入框裏輸入方法參數,例如"helloooooooooooooo",然後點擊方法名,
就可以執行合約的方法了:
你看到,返回值的確和我們輸入的參數是一樣的,我們實現了預定目標!
3.3 其他選項頁
Solidity Remix集成開發環境還有很多功能值得研究,這個工作留給你自己了。我們只對其他
的選項頁做簡單介紹:
- 分析選項頁提供對Solidity合約代碼的靜態分析選項。
- 測試選項頁提供單元測試能力,你可以生成一個測試文件,或者執行一組測試。
- 調試器選項頁可以單步跟蹤合約的執行、查看合約狀態或局部變量等。
- 設置選項提供Solidity Remix IDE本身的一些參數調整能力,例如設置編輯器文本自動折行、
啓用插件、設置gist訪問令牌,或者切換Remix IDE的皮膚主題 —— 目前只有三個:淺色、深色和淨色。