搭建區塊鏈技術開發和執行環境(二)
最近在開發一個基於Ethereum區塊鏈的應用,於是上網搜尋資料,發現網上資料太少,由於這項技術在國內較少人研究,許多問題都無法找到答案,我將這兩天自己的總結寫出來,希望能幫到大家。
- 注:你的主機不能執行在虛擬機器中。如果你嘗試執行在虛擬機器中,會得到一個條啟動錯誤資訊(VT-x不可用)。
- Git client
- Go - 1.6 or later
- Vagrant - 1.7.4 or later
- VirtualBox - 5.0 or later
- 在BIOS中開啟虛擬化(Virtualization)選項
首先我們要下載以太坊的客戶端工具,我參考的是網上的視訊《明說》http://ethcast.com/v1,由於我對這方面沒有任何的基礎完全按照視訊的內容進行操作下載的是go語言的客戶端。
推薦其他方法:hyperledger 區塊鏈 環境搭建與測試 - https://www.jianshu.com/p/f0b569097ed4
環境搭建
本次的以太坊環境是用go語言開發,虛擬機器內部執行的是javascript. 可能有人不太理解,舉個例子,java虛擬機器本身就是用c開發的(windows平臺上),但是執行在虛擬機器之上執行的是java語言。
環境準備
一臺能聯網的Ubuntu64位機器(已經安裝git),如果是其他機器型別,請參考其他安裝教程,點我
開始安裝
兩種安裝方式,任意選擇一種(建議使用第一種):
第一種使用 Personal Package Archives 直接安裝,命令如下:
1 2 3 4 | sudo apt-get install software-properties-common sudo add-apt-repository -y ppa:ethereum/ethereum sudo apt-get update sudo apt-get install ethereum |
第二種安裝方式,使用原始碼安裝,自己用go語言進行編譯,命令如下:
1.下載原始碼
1 | git clone https://github.com/ethereum/go-ethereum |
2.安裝go的執行環境,參考本文
3.繫結執行環境到go
1 | sudo apt-get install -y build-essential golang |
4.進入到原始碼目錄中,開始編譯原始碼
1 2 | cd go-ethereum make geth |
5.執行
1 | build/bin/geth |
初步探索
進入虛擬機器並輸出日誌
1 | get --dev console 2>> geth-log |
全域性變數
其中有一些是全域性變數,你可以認為是javascript的全域性變數,全域性變數擁有自己的方法和函式。
如下eth變數:
如下的的personal變數:
下面對使用者操作,對礦機的操作,轉賬操作,挖礦操作,實際都在運用這些全域性變數中的引數,然後穿上適當的方法。
賬戶操作
1.建立新賬戶
1 | personal.newAccount('123456') |
建立成功後,會展示建立成功的地址,其中上面的表示式中,中間傳入的123456為密碼
2.檢視一下系統有的使用者
1 | eth.accounts |
因為我之前有個使用者,所以在有兩個使用者
3.為使用者取一個別名,很顯然如果操作上面的字串地址是很不方面的,所以下面對字串使用者進行取別名,因為是js語言,所以可以直接使用,如下:
1 2 | user1 = eth.accounts[0] user2 = eth.accounts[1] |
4.對賬戶進行解鎖,為了安全起見,一般一個使用者在建立的時候都是出於鎖定的狀態,有日誌狀態可以看到,如下
對賬戶進行解鎖的命令
1 | personal.unlockAccount(user2,'123456') |
開始挖礦
開始之前我們檢查一下賬戶user1和user2的金額,你會發現兩者的金額都為0
1 2 | eth.getBalcance(user1) eth.getBalcance(user2) |
開始挖礦,命令如下:
1 | miner.start() |
停止挖礦命令:
1 | miner.stop() |
執行一會後你去檢視使用者的賬戶金額
發現第一個賬戶中已經含有金額。也就是說預設是挖到了第一個賬戶中。
轉賬測試
現在我們模擬從第一個賬戶像第二個賬戶轉賬的命令
1 | eth.sendTransaction({from:user1,to:user2,value:8}) |
需要說明的是轉賬後,賬戶2並沒有立即收到錢,而在是挖礦之後才收到的,主要原因是當前的交易還沒有併入到區塊鏈中,我們從日誌中可以獲取相關資訊
像地址0x0b52…寫的的交易0xab24..,在區塊8中才寫入,我們可以檢視區塊8進行驗證
在上述操作完成之後我開始搭建ethereum中一個框架truffle,這個框架安裝整整花費我3天的時間才完成,基本上所有的問題都在這上面,所以我重點描述這方面
首先安裝truffle之前我們要先安裝nodejs和npm(git在後面的安裝中會用到,必須安裝)
- <span style="font-size:18px;"> sudo apt-get install git
- sudo apt-get install nodejs-legacy
- sudo apt-get install npm</span>
注意:我們安裝的nodejs和npm必須是較新的版本,不然在之後安裝truffle的時候會出問題,下面提供升級的方法
- <span style="font-size:18px;"> sudo npm cache clean -f
- sudo npm install -g n
- sudo n stable</span>
- <span style="font-size:18px;"> sudo npm install -g solc solc-cli --save-dev</span>
- <span style="font-size:18px;"> sudo add-apt-repository ppa:ethereum/ethereum
- sudo apt-get update
- sudo apt-get install solc</span>
接下來我們安裝testrpc
testrpc不同於geth,geth是真正的以太坊環境,testrpc是在本地使用記憶體模擬的一個以太坊環境,對於開發除錯來說更為方便快捷,當你的合約在testrpc中測試通過後再部署到geth中去
- <span style="font-size:18px;"> sudo npm install -g ethereumjs-testrpc</span>
- <span style="font-size:18px;"> sudo npm install -g truffle</span>
- <span style="font-size:18px;">npm config set registry https://registry.npm.taobao.org
- npm install -g truffle
- ln -s /usr//local/nodejs/node-v7.0.4/bin/truffle /usr/local/bin/truffle</span>
根據網上的教程我們安裝truffle成功後先建立一個資料夾
mkdir test
進入該資料夾中
cd test
我們先執行truffle init 命令
網上介紹執行之後資料夾中會生成一下檔案和資料夾
app、contracts、migrations、test、truffle.js
但是我們發現我們的資料夾中並沒有app資料夾,當時我抱著試一試的想法繼續按照網上的教程進行操作
注:以下操作並沒有成功
執行 truffle compile命令,發現出現些許問題,沒有理會繼續執行
開啟我們的testrpc,重新啟動一個新的控制檯輸入testrpc即可
在原來的test資料夾下執行truffle migrate命令
再執行truffle serve
之後訪問localhost:8080
操作成功的話會顯示如下介面
但是我們訪問時發現介面顯示 cannot get connect
以上是完全按照教程執行,但是並沒有成功
為了解決這個問題在網上搜尋了很久,最後發現問題是網上教程使用的truffle是2.x的版本,而我們現在下載的版本是3.x的,3.x的版本與2.x的有許多改動,但是網上並沒有3.x的教程,苦尋無果的情況下我只好將版本回退到2.x,網上搜到這樣一條命令
若要安裝 truffle 2 版本
- <span style="font-size:18px;">npm install -g truffle@2.1.1 (編譯過程出現其他問題)</span>
- <span style="font-size:18px;">npm uninstall truffle
- <span>npm install -g truffle@~2.1.1 (解決上述問題)</span>
- </span>
按照命令操作以後果然回退到2.x的版本(npm執行非常慢,大家一定要有耐心)
興高采烈的執行 truffle init命令(重新新建一個空的資料夾)
果然沒有問題生成了app、contracts、migrations、test、truffle.js這幾個檔案
接著執行
- <span style="font-size:18px;">truffle compile</span>
結果
實在沒辦法了,弄個框架就這麼麻煩嗎
好在最後在https://bitshuo.com/topic/58a55366598da39107dd7e81中找到解決方法
其實好多人從3.x版本回退到2.x版本後都遇到和我一樣的問題,解決的方法讓我崩潰,升級到3.x版本但是在專案資料夾中執行
- <span style="font-size:18px;">truffle init webpack</span>
抱著試試看的態度執行
- sudo npm install -g truffle
將版本升級到3.x之後執行
- truffle init webpack
果然生成的檔案中包含app資料夾,並且其中有一個README.md其中有操作步驟
First run truffle compile, then run truffle migrate to deploy the contracts onto your network of choice (default “development”).
Then run npm run dev to build the app and serve it on http://localhost:8080
按照上述步驟執行後終於獲得成功
現在我將整個正確的步驟貼出來
1.安裝truffle
1.1 安裝git和npm
- sudo apt-get install git
- sudo apt-get install nodejs-legacy
- sudo apt-get install npm
1.2 升級版本
- sudo npm cache clean -f
- sudo npm install -g n
- sudo n stable
1.3安裝solc和solc-cli
1.4安裝solc二進位制包
- sudo add-apt-repository ppa:ethereum/ethereum
- sudo apt-get update
- sudo apt-get install solc
1.5安裝testrpc
- sudo npm install -g ethereumjs-testrpc
1.6安裝truffle
- sudo npm install -g truffle
1.7 控制檯輸入truffle得到相應的提示則說明成功
2 執行truffle命令
2.1新建專案資料夾
- mkdir linux
2.2進入資料夾中
- cd linux
3.3執行一系列命令
- truffle init webpack
- <span style="font-size:18px;"></span>
truffle compile
testrpc(在新的控制檯視窗中執行)
- <span style="font-size:18px;"></span>
truffle migrate
npm run dev
至此操作結束,開啟瀏覽器輸入 localhost:8080就能看到期望的轉賬demo介面
總結
本文快速搭建了一個以太坊的環境,並進一步探索了賬戶操作,轉賬,挖礦等操作,其中主要參考了汪曉明老師的教程。
2、搭建基於以太坊的私有鏈環境 - http://blog.csdn.net/sportshark/article/details/51855007
3、區塊鏈開發環境搭建總結 - http://blog.csdn.net/wjx342529/article/details/70148987
相關文章
- 搭建區塊鏈技術開發和執行環境(一)區塊鏈
- 區塊鏈技術開發區塊鏈
- 區塊鏈技術發展_區塊鏈技術開發新方向區塊鏈
- 區塊鏈DApp開發 | 跨鏈智慧合約技術搭建開發區塊鏈APP
- 區塊鏈baas平臺搭建,區塊鏈技術應用開發,合約系統搭建區塊鏈
- 區塊鏈溯源技術是什麼?區塊鏈溯源技術開發區塊鏈
- 區塊鏈2.0以太坊環境搭建區塊鏈
- 區塊鏈交易所繫統開發技術搭建區塊鏈
- 區塊鏈技術應用開發,公鏈搭建服務商區塊鏈
- Hyperledger Fabric 超級賬本 java開發區塊鏈環境搭建Java區塊鏈
- BAAS平臺_區塊鏈baas平臺技術_區塊鏈技術開發區塊鏈
- 區塊鏈開發平臺_區塊鏈技術服務區塊鏈
- 區塊鏈技術開發 區塊鏈錢包交易所開發區塊鏈
- 區塊鏈技術應用及發展 區塊鏈技術開發公司哪家好區塊鏈
- 區塊鏈設計聊天直播平臺搭建,區塊鏈技術應用開發方案區塊鏈
- 區塊鏈技術應用開發、區塊鏈版權應用搭建解決方案區塊鏈
- 區塊鏈技術開發公司談區塊鏈對環保事業的影響區塊鏈
- 區塊鏈技術開發公司談區塊鏈如何良性發展區塊鏈
- 區塊鏈技術開發公司 聊區塊鏈“主鏈”價值區塊鏈
- 區塊鏈技術開發主鏈區塊鏈的應用分析區塊鏈
- 區塊鏈挖礦錢包系統開發技術搭建區塊鏈
- 區塊鏈技術火爆,但真正懂區塊鏈技術開發的人又有幾人區塊鏈
- 區塊鏈技術開發公司淺析區塊鏈對能源行業的影響區塊鏈行業
- 區塊鏈學習之Fabric的環境搭建區塊鏈
- 淺談公司java開發執行環境搭建(ubuntu環境)JavaUbuntu
- 區塊鏈應技術應用開發方案,區塊鏈技術為企業賦能區塊鏈
- 區塊鏈社交直播app軟體開發,區塊鏈技術應用落地開發區塊鏈APP
- 區塊鏈IM社交直播軟體開發方案,區塊鏈技術應用開發區塊鏈
- 區塊鏈技術開發公司談區塊鏈保險的特點區塊鏈
- swap開發/區塊鏈跨鏈技術系統開發教程區塊鏈
- 區塊鏈技術研發,如今最契合區塊鏈技術應用方向區塊鏈
- 區塊鏈為何發展如此迅速 區塊鏈技術開發公司哪家好區塊鏈
- 區塊鏈技術開發主鏈 區塊鏈的企業級應用剖析區塊鏈
- 區塊鏈應用技術開發 區塊鏈數字資產交易所開發區塊鏈
- 區塊鏈社交直播軟體開發app,區塊鏈技術應用落地開發方案區塊鏈APP
- 區塊鏈技術區塊鏈
- 區塊鏈技術開發怎麼做?區塊鏈如何實施才可靠?區塊鏈
- 區塊鏈技術開發公司談區塊鏈的含義是什麼區塊鏈