remix
首先,這個東西實際上是有一個線上版本的,只要登陸上網址:https://remix.ethereum.org就能夠直接使用了,可是我更多用的是本地配置的remix-ide
remix-ide的文件夾在目錄/wanghui/usr/local/lib/node_modules/下
安裝過程看——開始學習前的環境安裝
此時在瀏覽器中輸入http://localhost:8080訪問就出來了
打開之後長這樣:java
怎麼使用:
在這裏的左上角有個這樣的標籤:node
這個標籤的做用是讓你與本地文件夾鏈接,來打開本地文件夾的文件,能夠進行修改並保存,而不用總是複製粘貼
點擊,而後會彈出下面的窗口:git
而後點擊connect
就成功鏈接到了本地,出現了localhost的下拉框:github
而後就能夠從中選擇你要編譯的sol文件開始編譯了
在這裏我選擇了網上的一個小遊戲進行學習,一開始選擇的是區塊貓cryptokitties,可是這個遊戲的代碼比較長,我以爲這個加密朋克cryptopunks可能更適合剛入門的人,等到差很少都會了以後,再去看區塊貓cryptokitties效果會更好
代碼地址:https://github.com/larvalabs/cryptopunks
在這裏先不解釋代碼的意思,打算直接教怎麼實現代碼,要了解代碼意思的,到這裏看
接下來要教怎麼使用這裏的按鈕:web
首先先將auto compile點上,這樣,只要你對代碼有所改動,remix都會自動幫你編譯
編譯成功後(雖然下面有警告,可是先忽略,到代碼意思處去看一些警告如何消除),點擊run就能夠看見以下的界面:瀏覽器
environment選擇的是remix自帶的虛擬機的區塊鏈JavaScript VM,還有web3 Provider版本用來與本地私有鏈相連(下面有介紹),其次還有一個是用來與錢包相連的injected Web3(轉到這看詳情,還沒寫);
account是該鏈中的幾個地址,且每個地址初始定義有100ether的幣;
gas limit中是交易部署到區塊鏈上的最高能夠花費的地址(當你的智能合約花費的gas不少時,最好把這裏寫高一點,簡單來講就是代碼量比較多時,好比cryptokitties),cryptopunks也須要將值設高一些,多加個0;
value是當你要調用的函數設置爲payable時,須要輸入msg.value值,改值就是在這裏輸入的,單位爲wei
你能夠直接點擊deploy進行智能合約的部署;若是以前你已經部署過了智能合約,而且記得合約的地址,那也能夠經過輸入合約地址,而後點擊at address來調用合約,而後就會獲得以下圖所示的函數調用以及變量讀取(這又在函數中聲明爲public的纔會顯示,詳情看cryptopunks的代碼解釋),經過輸入參數即可以調用函數,直接點擊變量名按鈕就可以得到變量值,以下圖所示:網絡
當上面所說的gas limit值沒有調高時,點擊變量名totalSupply會出現以下圖的結果:ide
正確則會出現:函數
首先點擊,即調用函數punkIndexToAddress:學習
說明此時punkIndex爲0的punk尚未分配
而後調用函數setInitialOwner去分配punkIndex爲0的punk,若是左邊的運行結果報錯:
說明你輸入的參數不對,在這裏是由於沒改爲英文輸入法,逗號出錯,從新輸入:
成功運行後結果是:
再查看該token的主人果真變了:
當函數有payable時,除了定義的參數外,還須要在以前說的value框中輸值,好比函數enterBidForPunk,咱們換另外一個地址,對以前給了另外一個地址的token0進行投標,若是沒有在value框中輸入值,就會被if (msg.value == 0) throw;判斷出錯,交易失敗:
這上面就是智能合約成功部署後如何進行調用,而後結果會出如今以下圖所示中:
其餘如Analysis:
其實就是設定什麼樣的內容會給你警告warning
Debugger就是你能夠在輸入處輸入區塊號或者交易hash值來查看交易信息:
或者是在頁面左下方灰色輸出處點擊右邊debug的按鈕,Debugger處就會出現各類詳細的信息了,以下圖所示:
除了上面的外,還有一個十分重要的地方,就是Compile處有一個detail的標籤
點擊他,會出現一些編譯獲得的十分重要的信息,在這裏面有三個地方十分有用:
1.WEB3DEPLOY
(1)你能夠直接經過複製粘貼這裏的內容到你的私有鏈(私有鏈配置詳情)上去部署該智能合約:
在這裏web3.eth.contract([這裏面的東西就是智能合約的API])。舉例說明:
首先打開私有鏈,而後將WEB3DEPLOY裏的內容複製,點擊這個標紅處按鈕便可,而後粘貼WEB3DEPLOY中內容到私有鏈的console端,回車便可:
而後出現下面的問題:
這個問題是指定的帳號被上鎖了,解鎖便可,而後重來一遍,回車,挖礦miner.start()
出來結果:
而後就能夠進行函數調用了(函數調用web3)
(2)固然,你也能夠經過改變Run中的Environment中的javaScript VM爲web3 provider,而後會彈出以下圖窗口,再點擊OK;
以前打開的私有鏈的rpcport爲8201,因此這裏就設爲8201,點擊OK:
這樣就成功將remix-ide與本地私有鏈鏈接起來了,這以後作的全部配置都是在本地私有鏈上了
這樣你就不須要本身複製粘貼WEB3DEPLOY的內容去部署了,由於在remix進行的全部操做都會直接做用在你本地的私有鏈中
2. FUNCTIONHASHES(合約簽名)
在remix-compile-detail裏有,這個是合約的簽名,能夠用來查看傳輸的數據。意思基本上是對合約及其參數進行簽名,並只取第二位到第七位的信息,第0和1位是0x,好比:
var functionSig = web3.sha3(「balanceOf(address)」).substr(2,10)
即把 balanceOf(address) 通過 sha3後獲得:
0x70a08231b98ef4ca268c9cc3f6b4590e4bfec28280db06bb5d45e689f2a360be
而後取除了 0x 外,前面的 8 位:70a08231
這些信息在remix中直接告訴了你,十分方便
好比剛剛咱們調用了函數:
它的輸入的表示就是以下圖:
"a75a9049": 「setInitialOwner(address,uint256)",
前八位a75a9049表示的就是函數setInitialOwner,後面分別是傳入的參數0xca35b7d915458ef540ade6068dfe2f44e8fa733c,0
3.GASESTIMATES
估計了每個函數或變量所消耗的gas數量
compile處還有一個 publish on swarmSwarm是一個去中心化的存儲網絡,集成於以太坊生態系統,做爲第一陣營的項目,看看這裏關於IPFS與這個項目的比較和優劣(https://github.com/ethersphere/go-ethereum/wiki/IPFS-&-SWARM)。但本質上,基本上是同樣的,除了它們有不一樣的哲學,並在底層使用稍微不一樣的協議。到這裏,remix的使用就基本上介紹完了,若是你有什麼不懂,或者是認爲我有什麼遺漏的,請及時聯繫我