【區塊鏈自學系列-0.0】HyperLedger Fabric 1.0 環境搭建

聲明:本文大部分參考https://blog.csdn.net/tiandiwuya/article/details/78771475,若有侵權,請與我聯繫,當即刪帖。css

 

本文純作備忘,鑑於17年時候搭建過程那個曲折啊,但願能給其餘小夥伴有所啓發。html


環境:阿里雲服務器(我要去要廣告費了,哈哈) 系統:Ubuntu 16.04 64位python

 

系統環境搭建略(雲服務器很是方便,本身以前一直在這折騰虛擬機)。。。linux

 

Fabric環境搭建:git

一.安裝GO語言

下載最新版的gogithub

打開Terminal,輸入命令(如下命令都是以root管理員的角色進行的)golang

su
輸入密碼:*****
wget https://storage.googleapis.com/golang/go1.9.2.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.8.4.linux-amd64.tar.gz
sql

編輯當前用戶的環境變量docker

vi /etc/profile


添加如下內容api

export PATH=$PATH:/usr/local/go/bin  export GOROOT=/usr/local/go  export GOPATH=$HOME/go  export PATH=$PATH:$HOME/go/bin


編輯保存並退出vi後,記得使這些環境變量生效

source /etc/profile


把go的目錄GOPATH設置爲當前用戶的文件夾下,因此記得建立go文件夾

cd ~ mkdir go


有時候wget獲取go安裝包的時候會由於網絡問題失敗,也能夠用apt安裝go,只不過版本是比較老舊的1.6.2,可是我在測試中也能夠正常使用

 apt-get install golang


添加的環境變量爲

export PATH=$PATH:/usr/lib/go-1.6  export GOROOT=/usr/lib/go-1.6 export GOPATH=$HOME/go  export PATH=$PATH:$HOME/go/bin

二.安裝Docker

可使用阿里提供的鏡像倉庫,執行如下命令來安裝Docker

 curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh -  

有的時候在第一步中沒法安裝成功,也可使用官方提供的腳原本安裝docker

 curl -sSl https://get.docker.com/ | sh

安裝成功後啓動docker服務:

 service docker start

三.安裝Docker-compose

Docker-compose是支持經過模板腳本批量建立Docker容器的一個組件。在安裝Docker-Compose以前,須要安裝Python-pip,運行腳本:

 apt-get install python-pip

而後是安裝docker-compose,咱們從官方網站(https://github.com/docker/compose/releases)下載也能夠從國內的進行DaoClound下載,爲了速度快接下來從DaoClound安裝Docker-compose,運行腳本:

curl -L https://get.daocloud.io/docker/compose/releases/download/1.12.0/docker-compose-`uname -s`-`uname -m` > ~/docker-compose  mv ~/docker-compose /usr/local/bin/docker-compose  chmod +x /usr/local/bin/docker-compose

四.Fabric源碼下載

能夠用go get命令下載源碼

go get github.com/hyperledger/fabric

若是下載失敗也可使用git命令下載源碼

mkdir -p ~/go/src/github.com/hyperledger  cd ~/go/src/github.com/hyperledger  git clone https://github.com/hyperledger/fabric.git

因爲Fabric一直在更新,全部咱們並不須要最新最新的源碼,須要切換到v1.0.0版本的源碼便可:

cd ~/go/src/github.com/hyperledger/fabric git checkout v1.0.0

 

五.下載Fabric鏡像

官方文件提供了批量下載的腳本。咱們直接運行:

cd ~/go/src/github.com/hyperledger/fabric/examples/e2e_cli/ source download-dockerimages.sh -c x86_64-1.0.0 -f x86_64-1.0.0

全部會用到的Fabric docker鏡像都會下載下來了。


下載完畢後,咱們運行如下命令檢查下載的鏡像列表:

docker images

獲得的結果以下:


6、啓動Fabric網絡並完成ChainCode的測試

咱們仍然停留在e2e_cli文件夾,這裏提供了啓動、關閉Fabric網絡的自動化腳本。咱們要啓動Fabric網絡,並自動運行Example02 ChainCode的測試,執行一個命令:

bash network_setup.sh up

這個作了如下操做:

6.1編譯生成Fabric公私鑰、證書的程序,程序在目錄:fabric/release/linux-amd64/bin

6.2基於configtx.yaml生成創世區塊和通道相關信息,並保存在channel-artifacts文件夾。

6.3基於crypto-config.yaml生成公私鑰和證書信息,並保存在crypto-config文件夾中。

6.4基於docker-compose-cli.yaml啓動1Orderer+4Peer+1CLI的Fabric容器。

6.5在CLI啓動的時候,會運行scripts/script.sh文件,這個腳本文件包含了建立Channel,加入Channel,安裝Example02,運行Example02等功能。

最後運行完畢,咱們能夠看到這樣的界面:


若是您看到這個界面,這說明咱們整個Fabric網絡已經通了。

相似這樣的錯誤,是由於channel已經創建,命名衝突

 <EXACT_TIMESTAMP> UTC [msp] Sign -> DEBU 064 Sign: digest: 5ABA6805B3CDBAF16C6D0DCD6DC439F92793D55C82DB130206E35791BCF18E5F Error: Got unexpected status: BAD_REQUEST Usage: peer channel create [flags]
  • 1
  • 2
  • 3
  • 4

解決辦法:移除docker,從新啓動。 
-)強制刪除所有容器 docker rm -f $(docker ps -aq)

而後從新執行

[sql]  view plain  copy
  1. bash network_setup.sh up  


七.手動測試一下Fabric網絡

咱們仍然是以如今安裝好的Example02爲例,在官方例子中,channel名字是mychannel,鏈碼的名字是mycc。咱們首先進入CLI,咱們從新打開一個命令行窗口,輸入:

docker exec -it cli bash

運行如下命令能夠查詢a帳戶的餘額:

peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'

能夠看到餘額是90:


而後,咱們試一試把a帳戶的餘額再轉20元給b帳戶,運行命令:

peer chaincode invoke -o orderer.example.com:7050 --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n mycc -c '{"Args":["invoke","a","b","20"]}'

運行結果爲:


如今轉帳完畢, 咱們試一試再查詢一下a帳戶的餘額,沒問題的話,應該是隻剩下70了。咱們看看實際狀況:


果真,一切正常。最後咱們要關閉Fabric網絡,首先須要運行exit命令退出cli容器。關閉Fabric的命令與啓動相似,命令爲:
cd ~/go/src/github.com/hyperledger/fabric/examples/e2e_cli


./network_setup.sh down
如今咱們整個Fabric的環境已經測試完畢,恭喜,一切正常,接下來咱們就是去作本身的區塊鏈的開發。

 

本次搭建只遇到了一個錯誤,是跟阿里雲相關,在我另外一篇隨筆裏面http://www.cnblogs.com/szqmvp/p/7838482.html 。

 

好了,如今算是正式開始自學相關技術,今年要踏入大熱的大區塊鏈開發了,歡迎你們互相交流,共同進步,改變世界。 

相關文章
相關標籤/搜索