Hyperledger Fabric部署與測試(Ubuntu)

2023-02-22 21:02:05

Fabric部署與測試

Fabric部署與測試最正確的還是參照官方連結:Hyperledger Fabric官方連結

ok,接下來開始部署Fabric。(以Ubuntu為例)

一、部署Fabric

1.前期準備

安裝git

sudo apt-get install git

安裝curl

sudo apt-get install curl

安裝Docker以及Docker-Compose

Docker安裝官方參考連結:Docker安裝

docker及docker-compose安裝純命令列(#為註釋)

 1 # 新主機上首次安裝 Docker Engine 之前,您需要設定 Docker 儲存庫
 2 # 設定儲存庫
 3 # 更新apt包索引並安裝包以允許apt通過 HTTPS 使用儲存庫
 4 
 5 sudo apt-get update
 6 
 7 sudo apt-get install \
 8     ca-certificates \
 9     curl \
10     gnupg \
11     lsb-release
12 
13 # 新增 Docker 的官方 GPG 金鑰
14 sudo mkdir -m 0755 -p /etc/apt/keyrings
15 
16 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
17 
18 # 使用以下命令設定儲存庫
19 echo \
20   "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
21   $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
22 
23 # 安裝 Docker 引擎
24 # 更新apt包索引
25 sudo apt-get update
26 
27 # 安裝 Docker Engine、containerd 和 Docker Compose。
28 sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
29 
30 # 通過執行映象驗證 Docker Engine 安裝是否成功 hello-world
31 sudo docker run hello-world
32 # 此命令下載測試影象並在容器中執行它。當容器執行時,它會列印一條確認訊息並退出。
33 
34 # 建立docker組
35 sudo groupadd docker
36 
37 # 將您的使用者新增到docker組中
38 sudo usermod -aG docker $USER
39 
40 # 登出並重新登入,以便重新評估您的組成員身份。
41 # 您還可以執行以下命令來啟用對組的更改:
42 newgrp docker
43 
44 # 安裝docker-compose
45 sudo apt-get -y install docker-compose
46 
47 # 驗證是否安裝成功
48 docker version
49 docker-compose -version

安裝完成後,重啟docker並設定開機啟動:

1 sudo systemctl start docker
2 sudo systemctl enable docker

安裝Go

go語言官方參考連結(這裡下載的go1.15.5版本)

go1.15.5amd下載連結

# 下載壓縮檔案後上傳到Ubuntu系統中,隨後進行以下操作
# 通過刪除 /usr/local/go 資料夾(如果存在)來刪除任何以前的 Go 安裝,# 然後將剛剛下載的存檔解壓縮到 /usr/local,在 /usr/local/go 中建立一個# 新的 Go 樹

 rm -rf /usr/local/go && tar -C /usr/local -xzf go1.20.1.linux-amd64.tar.gz

# 將 /usr/local/go/bin 新增到PATH環境變數中
# 通過將以下行新增到 $HOME/.profile 或 /etc/profile來執行此操作

export PATH=$PATH:/usr/local/go/bin

# 檢視是否安裝成功
go version

安裝jq

jq官方參考連結

 sudo apt-get install jq 

2.下載Fabric樣本、Docker映象和二進位制檔案

建立工作目錄

mkdir -p $HOME/go/src/github.com/
cd $HOME/go/src/github.com/

獲取安裝指令碼

curl -sSLO https://raw.githubusercontent.com/hyperledger/fabric/main/scripts/install-fabric.sh

chmod +x install-fabric.sh

執行安裝指令碼下載sample、docker和二進位制檔案

指令碼命令引數含義:

  • docker使用 Docker 下載 Fabric 容器映象
  • podman使用 podman 下載 Fabric 容器映象
  • binary下載 Fabric 二進位制檔案
  • samples將 fabric-samples github repo 克隆到當前目錄

注意:下載時需要docker拉取映象,可以先將docker源設為國內的。

修改docker拉取映象源(設定過的可以忽略):轉載連結:https://blog.csdn.net/weixin_45190065/article/details/128216499

 1 sudo vi /etc/docker/daemon.json
 2 
 3 # 在檔案中插入以下內容
 4 {
 5  
 6 "registry-mirrors": [
 7      "https://docker.mirrors.ustc.edu.cn",
 8      "https://registry.docker-cn.com",
 9      "http://hub-mirror.c.163.com",
10      "https://mirror.ccs.tencentyun.com"
11 ]
12  
13 }
14 # 插入完成後儲存退出
15 
16 # 使加速生效
17 sudo systemctl daemon-reload
18 sudo systemctl restart docker

下載samples、docker映象和二進位制檔案

1 # 以下命令選擇其一即可
2 ./install-fabric.sh docker samples binary
3 
4 ./install-fabric.sh d s b
5 
6 # 此三個檔案也可分開下載

至此,Fabric部署安裝完成。

 二、Fabric網路測試

 1 # 進入測試網路目錄
 2 cd fabric-samples/test-network
 3 
 4 # 刪除之前執行的容器或工件
 5 ./network.sh down
 6 
 7 # 啟動網路
 8 ./network.sh up
 9 
10 # 建立頻道
11 ./network.sh createChannel
12 # 成功顯示:Channel 'mychannel' joined
13 
14 # 建立自定義頻道
15 ./network.sh createChannel -c channel1

啟動鏈碼

首先進入../asset-transfer-basic/chaincode-go路徑檢視是否有vendor檔案,若沒有進行以下操作(有則跳過):

go env -w GOPROXY=https://goproxy.cn,direct

# 生成vendor檔案
go mod vendor
# 生成完成後返回之前路徑

隨後啟動鏈碼:

./network.sh deployCC -ccn basic -ccp ../asset-transfer-basic/chaincode-go -ccl go

與網路互動

# 將二進位制檔案新增到您的 CLI 路徑
export PATH=${PWD}/../bin:$PATH

# 設定FABRIC_CFG_PATH指向儲存庫core.yaml中的檔案fabric-samples
export FABRIC_CFG_PATH=$PWD/../config/

# 設定允許您peer 以 Org1 身份執行 CLI 的環境變數
export CORE_PEER_TLS_ENABLED=true
export CORE_PEER_LOCALMSPID="Org1MSP"
export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org1.example.com/users/[email protected]/msp
export CORE_PEER_ADDRESS=localhost:7051

# 執行以下命令以使用資產初始化分類帳
peer chaincode invoke -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls --cafile "${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem" -C mychannel -n basic --peerAddresses localhost:7051 --tlsRootCertFiles "${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt" --peerAddresses localhost:9051 --tlsRootCertFiles "${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt" -c '{"function":"InitLedger","Args":[]}'
# 成功顯示:INFO 001 Chaincode invoke successful. result: status:200

# 從 CLI 查詢分類帳
peer chaincode query -C mychannel -n basic -c '{"Args":["GetAllAssets"]}'
# 成功會顯示幾條資料

# 使用以下命令通過呼叫資產轉移鏈程式碼來更改分類賬上資產的所有者
peer chaincode invoke -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls --cafile "${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem" -C mychannel -n basic --peerAddresses localhost:7051 --tlsRootCertFiles "${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt" --peerAddresses localhost:9051 --tlsRootCertFiles "${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt" -c '{"function":"TransferAsset","Args":["asset6","Christopher"]}'

# 成功響應:2019-12-04 17:38:21.048 EST [chaincodeCmd] chaincodeInvokeOrQuery -> INFO 001。。。。。

# 設定以下環境變數以作為 Org2 執行
export CORE_PEER_TLS_ENABLED=true
export CORE_PEER_LOCALMSPID="Org2MSP"
export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt
export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org2.example.com/users/[email protected]/msp
export CORE_PEER_ADDRESS=localhost:9051

# 查詢執行在 上的資產轉移(基本)鏈碼peer0.org2.example.com
peer chaincode query -C mychannel -n basic -c '{"Args":["ReadAsset","asset6"]}'
# 成功顯示:{"ID":"asset6","color":"white","size":15,"owner":"Christopher","appraisedValue":800}

# 使用完測試網路後,可以使用以下命令關閉網路
./network.sh down

至此,測試網路測試完成,欲學習更多Fabric使用,請前往官網進行學習(官網地址在文章首部)。

 

附:docker拉取的所有映象

 

 

 

本文借鑑網址:

docker拉取映象源:https://blog.csdn.net/weixin_45190065/article/details/128216499

bilibili FabricV2.3安裝與測試網路:https://www.bilibili.com/video/BV11V411n7x1/?spm_id_from=333.337.search-card.all.click&vd_source=6a98bdea1567b90c8bfe074c52c68444