【區塊鏈】1 HyperLedger快速搭建一個Fabric1.0環境 執行測試e2e_cli專案
1 Ubuntu環境搭建(win7 64位 + VMWare14 + Ubuntu16.04)
2 Docker安裝
-
首先
sudo apt install curl
-
使用阿里提供的映象進行Docker的安裝,輸入
curl -fsSL https://get.docker.com/ | sh
,下載完成後顯示 -
完成後,將自己的使用者新增到docker組中:
sudo usermod -aG docker yrr
-
執行以下命令,新增阿里雲的Docker Hub映象
sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://obou6wyb.mirror.aliyuncs.com"] } EOF
- 登出並重新登入
sudo systemctl daemon-reload
sudo systemctl restart docker
3 Docker-compose 安裝
Docker-compose是支援通過模板指令碼批量建立Docker容器的一個元件。
- 在安裝Docker-Compose之前,需要安裝Python-pip,執行指令碼:
sudo apt-get install python-pip
sudo curl -L https://github.com/docker/compose/releases/download/1.12.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
- 更改檔案許可權,使其能夠執行
chmod +x /usr/local/bin/docker-compose
- 測試安裝是否成功
docker-compose --version
4 Go安裝
sudo tar -C /usr/local -xzf go1.9.2.linux-amd64.tar.gz
- 檢查是否安裝成功
/usr/local/go/bin/go version
- 環境變數的設定
1)多使用者配置,終端輸入:
vim ~/.profile
2)在檔案末尾插入以下內容 3)終端輸入source ~/.profile
重新載入 profile 檔案,載入環境變數到記憶體
export PATH=$PATH:/usr/local/go/bin export GOROOT=/usr/local/go export GOPATH=$HOME/go export PATH=$PATH:$HOME/go/bin
$HOME是當前使用者主目錄。 export GOPATH=$HOME/go 表示我們把go的目錄GOPATH設定為當前使用者的資料夾。 PATH 表示環境變數。在Linux環境中,是區分大小寫的。 其次,在Linux中,引用變數,要在前面加上一個$符號。 綜上所述,$PATH 以及 $HOME均表示對變數的引用。 其中,PATH=$PATH:/usr/local/go/bin 表示將/usr/local/go/bin這個路徑,加入到環境變數中!
-
驗證,終端輸入
go version
-
由於我們把go的目錄GOPATH設定為當前使用者的資料夾下,所以記得建立go資料夾
cd ~
mkdir go
5 Fabric原始碼下載
使用Git命令下載原始碼,首先需要建立對應的目錄,然後進入該目錄,Git下載原始碼:
mkdir -p ~/go/src/github.com/hyperledger
cd ~/go/src/github.com/hyperledger
git clone https://github.com/hyperledger/fabric.git
6 Fabric Docker映象下載
- 從docker hub下載映象:
cd fabric/examples/e2e_cli/
chmod +x download-dockerimages.sh
sudo ./download-dockerimages.sh
【注意】 此處用sudo獲取管理員許可權,執行docker命令 否則報錯: ”Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.26/images/json: dial unix /var/run/docker.sock: connect: permission denied“
- 下載完畢後,我們執行以下命令檢查下載列表
sudo docker images
7 啟動Fabric網路並完成ChainCode的測試
- 終端切換到fabric路徑中,並選擇1.0.0的版本
cd ~/go/src/github.com/hyperledger/fabric
git checkout v1.0.0
- 將當前路徑的scripts資料夾中的bootstrap-1.0.0.sh拷貝到fabric目錄下(此操作會生成bin目錄)
chmod +x bootstrap-1.0.0.sh
- 切換路徑到e2e_cli
cd ~/go/src/github.com/hyperledger/fabric/examples/e2e_cli
- 下載docker images
sudo ./download-dockerimages.sh -c x86_64-1.0.0 -f x86_64-1.0.0
- 啟動
sudo ./network_setup.sh up
最後顯示如下,完美~ 【注意】 Q1:ERROR: Couldn’t connect to Docker daemon at http+docker://localunixsocket - is it running? A1:前面新增sudo進行啟動 Q2:Error: Error endorsing query: rpc error: code = Unknown desc = could not find chaincode with name ‘mycc’ - make sure the chaincode mycc has been successfully instantiated and try again - !!! Query result on peer0 is INVALID !!! A2:按照7中的流程走沒問題,之前沒有按照流程走就出現了這個問題orz
-
測試Fabric網路 1)開啟新的終端,輸入
docker exec -it cli bash
進入CLI,將顯示: 2)查詢賬戶餘額 通過輸入peer chain code query -C mychannel -n mycc -c '{"Args":["query","a"]}'
可查詢a賬戶的餘額(官方例子中,channel名為mychannel,鏈碼名為mycc),將顯示: 3)轉賬操作 將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"]}'
,將顯示: 4)檢視a賬戶餘額,將顯示: 5)檢視b賬戶餘額,顯示: -
完成測試並退出 退出CLI輸入
exit
關閉Fabric網路,輸入sudo ./network_setup.sh down