區塊鏈開發環境搭建總結

最近在開發一個基於Ethereum區塊鏈的應用,於是上網搜尋資料,發現網上資料太少,由於這項技術在國內較少人研究,許多問題都無法找到答案,我將這兩天自己的總結寫出來,希望能幫到大家

首先我們要下載以太坊的客戶端工具,我參考的是網上的視訊《明說》http://ethcast.com/v1,由於我對這方面沒有任何的基礎完全按照視訊的內容進行操作下載的是go語言的客戶端,

我用的是Ubuntu系統,具體安裝程式碼是

sudo apt-get install software-properties-common
sudo add-apt-repository -y ppa:ethereum/ethereum
sudo apt-get update
sudo apt-get install ethereums

安裝成功後

首先我們開啟服務命令是  geth –datadir “~/ethdev” –dev
之後我們進入控制檯命令 geth –dev console 2>>file_to_log_output
進入控制檯後檢視當前賬戶命令:eth.accouonts
建立賬戶:

personal.newAccount('123456')//引數是賬號的密碼

檢視使用者

eth.accounts

建立第二個賬戶

personal.newAccount('123456')//引數是密碼

我們將兩個賬戶分別賦值給user1和user2

建立第二個賬戶

personal.newAccount('123456')

我們將這兩個賬戶分別賦值給user1和user2

user1 = eth.accounts[0]
user2 = eth.accounts[1]

下面是客戶端操作的一些命令

檢視賬戶餘額:eth.getBalance(user1)
檢視當前的區塊號:eth.blockNumber()
開啟日誌:tail -f file_to_log_output(新視窗中開啟)
挖礦命令:miner.start()
停止挖礦:miner.stop()

轉賬命令:eth.sendTransaction({from :user1,to:user2,value:web3.toWei(3,”ether”)})
此時執行挖礦命令會報錯因為user1時預設鎖定的,我們應該先解鎖賬戶
personal.unlockAccount(”0xshbfksugfksjb24sfsd”,”123456″)//引數分別是賬戶和密碼
之後重新執行轉賬命令,轉賬需要挖礦進行確認

在上述操作完成之後我開始搭建ethereum中一個框架truffle,這個框架安裝整整花費我3天的時間才完成,基本上所有的問題都在這上面,所以我重點描述這方面

首先安裝truffle之前我們要先安裝nodejs和npm(git在後面的安裝中會用到,必須安裝)

安裝命令        

        sudo apt-get install git
sudo apt-get install nodejs-legacy
sudo apt-get install npm
注意:我們安裝的nodejs和npm必須是較新的版本,不然在之後安裝truffle的時候會出問題,下面提供升級的方法
升級版本
   

    sudo npm cache clean -f
sudo npm install -g n
sudo n stable
安裝solc和solc-cli
   

    sudo npm install -g solc solc-cli --save-dev
因為我們要在geth中使用solidity編譯,所以還要安裝solc二進位制包
   

    sudo add-apt-repository ppa:ethereum/ethereum
sudo apt-get update
sudo apt-get install solc

接下來我們安裝testrpc

testrpc不同於geth,geth是真正的以太坊環境,testrpc是在本地使用記憶體模擬的一個以太坊環境,對於開發除錯來說更為方便快捷,當你的合約在testrpc中測試通過後再部署到geth中去

安裝testrpc
  

      sudo npm install -g ethereumjs-testrpc
安裝truffle
  

      sudo npm install -g truffle

可能遇到的問題:truffle安裝失敗的概率很高,還會報很多錯誤
解決辦法:使用淘寶映象安裝可順利安裝
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

根據網上的教程我們安裝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 版本

npm install -g [email protected] (編譯過程出現其他問題)
解除安裝 後重新安裝

npm uninstall truffle
npm install -g [email protected]~2.1.1 (解決上述問題)

按照命令操作以後果然回退到2.x的版本(npm執行非常慢,大家一定要有耐心)

興高采烈的執行 truffle init命令(重新新建一個空的資料夾)

果然沒有問題生成了app、contracts、migrations、test、truffle.js這幾個檔案

接著執行

truffle compile

結果

Could not find expected contract or library in ‘ConvertLib.sol’: contract or library ‘ConvertLib’ not found.
Compilation failed. See above.

實在沒辦法了,弄個框架就這麼麻煩嗎

好在最後在https://bitshuo.com/topic/58a55366598da39107dd7e81中找到解決方法

其實好多人從3.x版本回退到2.x版本後都遇到和我一樣的問題,解決的方法讓我崩潰,升級到3.x版本但是在專案資料夾中執行

truffle init webpack

抱著試試看的態度執行

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

truffle compile

testrpc(在新的控制檯視窗中執行)

truffle migrate

npm run dev

至此操作結束,開啟瀏覽器輸入 localhost:8080就能看到期望的轉賬demo介面