1. 程式人生 > >【區塊鏈】1 HyperLedger快速搭建一個Fabric1.0環境 執行測試e2e_cli專案

【區塊鏈】1 HyperLedger快速搭建一個Fabric1.0環境 執行測試e2e_cli專案

1 Ubuntu環境搭建(win7 64位 + VMWare14 + Ubuntu16.04)

2 Docker安裝

  1. 首先sudo apt install curl

  2. 使用阿里提供的映象進行Docker的安裝,輸入curl -fsSL https://get.docker.com/ | sh,下載完成後顯示 在這裡插入圖片描述

  3. 完成後,將自己的使用者新增到docker組中:sudo usermod -aG docker yrr

  4. 執行以下命令,新增阿里雲的Docker Hub映象

sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://obou6wyb.mirror.aliyuncs.com"]
}
EOF
  1. 登出並重新登入
sudo systemctl daemon-reload
sudo systemctl restart docker

3 Docker-compose 安裝

Docker-compose是支援通過模板指令碼批量建立Docker容器的一個元件。

  1. 在安裝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 

在這裡插入圖片描述

  1. 更改檔案許可權,使其能夠執行
chmod +x /usr/local/bin/docker-compose
  1. 測試安裝是否成功
docker-compose --version

在這裡插入圖片描述

4 Go安裝

sudo tar -C /usr/local -xzf go1.9.2.linux-amd64.tar.gz
  1. 檢查是否安裝成功
/usr/local/go/bin/go version

在這裡插入圖片描述

  1. 環境變數的設定 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這個路徑,加入到環境變數中!

  1. 驗證,終端輸入go version 在這裡插入圖片描述

  2. 由於我們把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映象下載

  1. 從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“

  1. 下載完畢後,我們執行以下命令檢查下載列表
sudo docker images

在這裡插入圖片描述

7 啟動Fabric網路並完成ChainCode的測試

  1. 終端切換到fabric路徑中,並選擇1.0.0的版本
cd ~/go/src/github.com/hyperledger/fabric
git checkout v1.0.0
  1. 將當前路徑的scripts資料夾中的bootstrap-1.0.0.sh拷貝到fabric目錄下(此操作會生成bin目錄)
chmod +x bootstrap-1.0.0.sh
  1. 切換路徑到e2e_cli
cd ~/go/src/github.com/hyperledger/fabric/examples/e2e_cli
  1. 下載docker images
sudo ./download-dockerimages.sh -c x86_64-1.0.0 -f x86_64-1.0.0
  1. 啟動
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

  1. 測試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賬戶餘額,顯示: 在這裡插入圖片描述

  2. 完成測試並退出 退出CLI輸入exit 關閉Fabric網路,輸入sudo ./network_setup.sh down