Windows下以太坊集成開發環境(Remix-IDE)搭建與智能合約的簡單應用


前面我們介紹了在以太坊平台下開發區塊鏈私有鏈的過程,以及在私有鏈下進行挖礦的操作,而隨着區塊鏈技術的發展,區塊鏈技術已不僅限於比特幣的應用,未來將重在着眼於向其他領域的擴展推廣,以此開啟區塊鏈2.0以智能合約為代表的時代。本文選用remix作為開發應用平台,配合geth客戶端實現與以太坊網絡的交互,下一篇文章則改用truffle和ganache搭建開發框架(這是后話)。

本文分為remix-ide搭建和智能合約部署應用兩部分。

一、remix-ide搭建

【准備工作】

1.安裝Node.js。Node提供了JavaScript的運行環境,並且包含大量擴展模塊划分不同功能簡化應用的開發。

①由以下網址下載node.js,並根據指令一步一步安裝到自己指定的文件夾:

https://nodejs.org/en/download/

②安裝結束后,打開運行環境,輸入cmd進入DOS環境,指令輸入:

node --version

 

 即表示node安裝成功。

2.node.js安裝成功后,安裝位置文件夾包含內容如下所示:

 

 可見node已包含npm管理工具,我們在這里用到的是npm服務器下載第三方包至本地使用的功能。

【remix搭建】

做好前期准備后,開始着手搭建remix環境。

1.下載remix到本機:

(建立單獨的文件夾,這樣下載的文件可追溯)進入到新文件夾下,指令輸入:

git clone https://github.com/ethereum/remix-ide.git

2.下載成功后會在文件夾中生成多個文件夾,其中包括remix-ide文件夾,進入到該文件夾下:

cd remix-ide

接着安裝所需工具包:

npm install 

執行啟動命令:

npm start

(因為我在搭建環境時這里沒有遇到過難以解決的問題,所以一些細小的問題已經記不清了,但總歸是可以解決的)

3.該裝的裝好了,並且啟動本地服務器,這時可以嘗試打開瀏覽器:

輸入網址:http://127.0.0.1:8080

【我遇到的問題在這里】

一切都看上去那么美好,別人遇到的問題我遇到並且解決了,別人沒有遇到的問題我遇到並且也解決了,然而就是無法打開瀏覽器,始終顯示連接失敗,無法打開。在各種琢磨尋找解決方案近三天后,無意中找到了應對措施:

輸入指令:

npm install http-server

利用node.js中的http-server開啟本地服務,瀏覽器才能打開。最后的實現效果是這樣的:

 

 

 

 

二、智能合約部署與簡單應用

以上是基於remix瀏覽器開發環境的搭建過程,接下來就要借助開發平台編寫智能合約並部署在私有鏈上,通過一步一步操作執行對智能合約的運行細節有更加深刻的體會。

 1.編寫智能合約

①輸入智能合約內容:

 

 

②sol文件編譯

 

 如果編譯遇到問題會在頁面左下方顯示,根據自己編寫的錯誤點進行對應修正即可。

③獲取相應參數

編譯成功后會有如下顯示:

 

 注意左下方紅色框里的內容,點開彈出如下詳情:

 

 點擊“BYTECODE”旁邊的記事板,便將BYTECODE的內容復制了,然后打開一個記事本將內容保存;

點擊“ABI”旁邊的記事板,同理保存。

以上兩個參數在后面智能合約的部署中會用到。

2.智能合約的部署

智能合約的部署分為兩個方面:geth控制台,remix-ide

【geth控制台】

①在前面私有鏈的搭建中介紹過創世區塊的初始化和進入geth控制台的操作,如果裝有區塊信息的.json文件沒有更改那么無需初始化操作,直接進入控制台即可:

geth --datadir ./data/00 --networkid xxxxx --port xxxx --rpc --rpcport xxxx --rpccorsdomain "*" console --allow-insecure-unlock

一項一項解釋:

這句明顯和之前的進入控制台的指令有所不同:

--networkid 還是和之前的一樣,創世區塊.json文件里的id是什么這里就是什么

--port 端口號,可以自行設定,避開固定設備端口號即可

--rpcport 本地rpc端口號,用於與remix瀏覽器鏈接,后面會提到

--allow-insecure-unlock 這是在后面進行合約部署時會要求解鎖主賬戶,在進入控制台之前設定好允許不安全解鎖方便后面用戶解鎖

②成功進入geth控制台

 

③進入控制台后,首先建立一個新賬號:

 

 

 

 ④並對該賬號解鎖,因為后面remix的操作是針對該賬號進行:

 

 括號里第一個參數是解鎖對象,由於當前只擁有一個賬號,所以該賬號即為基礎賬號可以直接用coinbase代替,如果擁有多個賬號想要選擇的話可以如下操作:

輸入指令:eth.accounts 顯示當前所有賬號

輸入指令:personal.unlockAccount(eth.account[i],"xxxx",1000*60*30) 即解鎖第i+1個賬號,其密碼為xxxx,解鎖時間為1000*60*30毫秒(換算一下就是30分鍾)

 

【remix-ide】

①選擇“environment”為“web3 provider”

 

 ②如果上面按照文中指示一步步做的話這里不會出現連接失敗的問題,否則如果在geth沒有按照上面要求進入控制台就會出現下面的錯誤提示:

not possible to connect to the web3 provider

(一旦出現該提示記得重新回頭按上述說明操作一遍)

③點擊web3 provider會出現提示框:

 

 注意端口號,是不是很眼熟,這個就是前面提到的--rpcport,按照這里指示的端口號填寫當初進入控制台時的參數就不會報錯,否則就會出現連接失敗的錯誤提示。

④點擊OK,如果一切順利就會發現頁面左側的相關參數已如geth控制台下的內容自動填入:

 

 然后點擊“Deploy”部署該智能合約helloworld.sol到對應的networkid 為314590的以太坊網絡上去。

⑤如果按照上面geth的操作執行了,那么這里就會正常顯示pending,否則還會出現賬號未解鎖的錯誤:

 

 pending表示該合約待解決。什么意思?意思就是合約還沒有經過全網認可,還不能被部署。

怎么辦?我們知道合約的部署是通過交易的方式實現的,所以需要執行一步挖礦操作,使得合約被全網驗證。於是我們回到geth控制台下,輸入指令:

miner.start()

發現geth在挖礦的同時remix也有相應反響:

 

 表示挖礦成功,合約驗證通過,接下來該部署到私有鏈上去了。

⑥還記得我們上面保存在記事本里的兩個參數嗎?BYTECODE和ABI

geth控制台下輸入:

code="BYTECODE的內容"

abi=ABI里的內容
(code的內容待雙引號,abi不帶,看仔細喲)

⑦輸入指令:

mycontract=eth.contract(abi)

contract=mycontract.new({from:eth.coinbase,data:code,gas:1000000})

⑧合約創建完成,但是還需要挖礦來部署:

miner.start()

⑨嘗試調用智能合約:

contract.函數名.call(合約中該函數對應的參數內容)

如果順利的話應該會出現對應的結果,但是我一直沒成功,始終顯示:

gas required exceeds allowance xxx

所以如果大家看到這篇文章有對應的解決方案歡迎指導,感激不盡。

由於這里我並沒有成功實現,只是在Windows環境下將對應步驟進行展示說明,不太具有說服性,下一篇文章將使用truffle搭配ganache的方式重新嘗試部署智能合約。(這個成功實現了,不用擔心~)

over,歡迎指正

 


免責聲明!

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



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