1. 程式人生 > >2+6多機安裝部署、部分異常處理以及使用configtxlator對區塊基本資訊查詢(kafka共識,手動非docker方式)

2+6多機安裝部署、部分異常處理以及使用configtxlator對區塊基本資訊查詢(kafka共識,手動非docker方式)

根據蒐集的資料安裝測試並在安裝測試過程中整理的文件,如有不足希望不吝賜教。

本文介紹CentOS7中hyperledger-fabric1.1多機部署使用kafka共識非docker方式,大體上與之前solo共識的步驟類似,(solo共識:《CentOS7中hyperledger-fabric1.1 - 1+4多機安裝部署及部分異常處理(solo共識,手動非docker方式)》)只是在其基礎上將網路結構部署為2orderer+6peer結構,修改預設的solo共識為kafka共識,添加了使用configtxlator工具對區塊資訊查詢,並且對部分不合理或冗餘位置做了修改。kafka與zookeeper安裝可以參考《

CentOS7安裝zookeeper》《CentOS7安裝kafka》或者自行搜尋安裝方式。

目錄

一、環境介紹

Fabric相關元件以及工具介紹:

- orderer 共識節點。為交易排序,並生成區塊

- peer共識節點。為交易背書,並記錄區塊資訊

- crypto用於生成區塊鏈網路中相應使用者的相關證書檔案

- configtxgen 用於生成區塊鏈系統鏈碼的創世區塊、新建通道的配置檔案、以及組織中錨節點的配置檔案

本次Fabric區塊鏈網路部署環境:8臺 Centos 7系統的虛擬機器。

相關環境版本如下:

    go version go1.10.2 linux/amd64

    Docker version 18.03.1-ce, build 9ee9f40

    docker-compose version 1.21.2, build a133471

linux:【rpm -q centos-release】

    centos-release-7-5.1804.el7.centos.2.x86_64

    Linux localhost.localdomain 4.16.13-1.el7.elrepo.x86_64 #1 SMP Wed May 30 14:31:51 EDT 2018 x86_64 x86_64 x86_64 GNU/Linux

2個 orderer 節點,6個 peer 節點,使用 kafka共識演算法

172.17.3.207,208,209,211,212,213部署peer節點

172.17.3.205,206部署orderer節點

二、原始碼編譯、以及fabric 區塊鏈網路部署環境準備

單機部署測試時,go、docker、docker-compose、git等應該已經安裝完成並且已經完成環境變數等配置,fabric原始碼已經下載,此處不再贅述。如果後面步驟碰到未安裝的依賴等可自行安裝後繼續。

注意:以下環境構建需要在每臺機器上完成。

安裝編譯相關的依賴包 snappy-devel.x86_64、zlib-devel.x86_64、bzip2-devel.x86_64、libtoo-ltdl-devel.x86_64、libtool

可以使用命令直接安裝,命令如下:

yum -y install snappy-devel.x86_64 zlib-devel.x86_64 bzip2-devel.x86_64 libtoo-ltdl-devel.x86_64 libtool

從 github.com 上下載 go 語言編譯相關環境 gotools(golang.org 需要翻牆,所以從 github 上獲取)

在目錄$GOPATH/src/golang.org/x/下執行:

git clone https://github.com/golang/tools.git

三、編譯 fabric區塊鏈相關可執行程式

切換到 fabric 原始碼的目錄下面,通過 makefile 檔案,可以編譯出 fabric 專案的全部可執行檔案。

這次的演示例子中,只需要編譯部分必要檔案即可:orderer、peer、configtxgen、cryptogen。

注:以下命令,全部在$GOPATH/src/github.com/hyperledger/fabric 目錄下執行。

1.編譯go相關工具

cp -r $GOPATH/src/golang.org/x/tools/ $GOPATH/src/github.com/hyperledger/fabric/gotools/build/gopath/src

完成後執行:

make gotools

在執行make命令時可能會遇到的異常資訊(一):

can't load package: package golang.org/x/lint/golint: no Go files in /opt/gopath/src/github.com/hyperledger/fabric/gotools/build/gopath/src/golang.org/x/lint/golint

package golang.org/x/tools/go/ast/astutil: unrecognized import path "golang.org/x/tools/go/ast/astutil" (https fetch: Get https://golang.org/x/tools/go/ast/astutil?go-get=1: dial tcp 216.239.37.1:443: i/o timeout)

package golang.org/x/tools/go/gcexportdata: unrecognized import path "golang.org/x/tools/go/gcexportdata" (https fetch: Get https://golang.org/x/tools/go/gcexportdata?go-get=1: dial tcp 216.239.37.1:443: i/o timeout)

例如:

解決辦法:

下載安裝golang.org/x/net、golint

cd $GOPATH/src/golang.org/x/
git clone https://github.com/golang/net.git net
git clone https://github.com/golang/tools.git
git clone https://github.com/golang/lint.git
go install net
go get golang.org/x/lint/golint

然後執行如下命令,如果出現沒有資料夾的異常,根據命令在相應位置建立即可。

在執行make命令時異常資訊(二):

解決辦法:

重試或者手動執行報錯的git命令(如下)再重試。

git clone https://github.com/kardianos/govendor /opt/gopath/src/github.com/hyperledger/fabric/gotools/build/gopath/src/github.com/kardianos/govendor

成功後類似如下截圖:

2.編譯 fabric基礎環境

make buildenv

在執行make命令時可能會遇到的異常資訊(一):

[[email protected] fabric]# make buildenv

(cd build/docker/gotools/bin && tar -jc *) > build/gotools.tar.bz2

tar: *: Cannot stat: No such file or directory

tar: Exiting with failure status due to previous errors

make: *** [build/gotools.tar.bz2] Error 2

[[email protected] fabric]# make buildenv

mkdir -p build/image/buildenv/payload

cp build/gotools.tar.bz2 build/docker/gotools/bin/protoc-gen-go build/image/buildenv/payload

cp: cannot stat ‘build/docker/gotools/bin/protoc-gen-go’: No such file or directory

make: *** [build/image/buildenv/payload] Error 1

解決辦法:

在出現錯誤1、2,3(截圖中標註)時重試,每次錯誤不同,當出現第三次報錯,如圖,進行如下操作:

執行命令:

go get -u github.com/golang/protobuf/protoc-gen-go

執行完成後可以在$GOPATH/bin/路徑下看到protoc-gen-go檔案,然後再執行命令:

cp /opt/gopath/bin/protoc-gen-go /opt/gopath/src/github.com/hyperledger/fabric/build/docker/gotools/bin/

針對上述異常,將其拷貝至指定目錄,再次執行make buildenv,成功截圖如下:

3.編譯區塊鏈服務相關工具

分別執行下面四條命令:

make orderer
make peer
make configtxgen
make cryptogen

編譯的可執行程式生成在./fabric/build/bin目錄下,設定該目錄至 PATH環境變數。可以修改/etc/profile檔案,在PATH後追加:

:/opt/gopath/src/github.com/hyperledger/fabric/build/bin  注意前面的冒號

在執行make命令時可能會遇到的異常資訊(一):

vendor/github.com/miekg/pkcs11/pkcs11.go:26:18: fatal error: ltdl.h: No such file or directory

 #include <ltdl.h>

解決辦法:

安裝ltdl,命令如下:

yum -y install libtool-ltdl-devel

安裝完成後重試即可。

在執行make peer命令時可能會遇到的異常資訊:

curl: (6) Could not resolve host: services.gradle.org

The command '/bin/sh -c curl -sSL https://services.gradle.org/distributions/gradle-2.12-bin.zip > /tmp/gradle-2.12-bin.zip' returned a non-zero code: 6

make: *** [build/image/javaenv/.dummy-x86_64-1.1.1-snapshot-ff5e861] Error 6

解決辦法:

根據網上查詢的資料,需要修改dns,但是本次問題並沒有解決,而是重啟docker。以下為兩種方法,請自行測試。

1)修改DNS:

修改/etc/NetworkManager/NetworkManager.conf檔案,在main部分新增 “dns=none” 選項,如圖:

然後重新裝載上面修改的配置:

systemctl restart NetworkManager.service

再修改/etc/resolv.conf檔案,將dns改為114.114.114.114以及8.8.8.8,

2)重啟docker:

本次使用上面方法沒有解決,最後使用重啟docker的方法解決,重啟命令:

service docker restart

編譯成功截圖:

再次提示:以上環境需要在每臺機器上構建完成。

四、多機部署fabric網路(kafka共識)

注意:以下步驟執行之前需要做一些檢查:

  1. 檢查orderer節點上7050埠是否開放、4peer節點的705170527053埠是否開啟。然後用telnettelnet IP port)命令或其他方法檢查埠是否可以訪問(可能需要安裝telnet)。或者直接關閉所有防火牆。
  2. 如果之前執行過操作,沒有成功而回頭重複以下步驟(尤其重新生成證書、重啟ordererpeer節點等操作),需要刪除所有機器上/var/hyperledger目錄下所有檔案。本路徑在配置檔案orderer節點上的orderer.yamlFileLedger標籤下Location值)、peer節點上core.yamlfileSystemPath值)中。否則在兩個peer從節點以及在執行某些操作時會提示包含“X509”的錯誤。
  3. 因為用到了kafka叢集,因此與Ⅱ類似的,如果已經執行了“orderer start“命令,在回頭重複執行的時候需要刪除fabric在kafka中建立的topic,具體刪除方法請自行搜尋或者參考《centos7安裝kafka》。
  4. 檢查所有機器的時區時間是否一致,如果不一致在後面啟動等步驟會有類似類似超時或者過期的異常。檢視時區及同步網路時間方法請自行搜尋。

基本環境已經完成,下面將使用編譯出來的可執行程式及相關工具,來搭建一個 fabric 區塊鏈網路,並實現鏈碼的部署以及測試。

首先,分別在五臺虛擬機器中建立目錄/etc/hyperledger/fabric,以下的命令 全部在該目錄下執行,並且需要設定 fabric 網路執行的環境變數:

FABRIC_CFG_PATH=/etc/hyperledger/fabric

可以直接在/etc/profile中新增,如圖:

1.配置 fabric 網路使用者拓撲關係

通過配置檔案 crypto-config.yaml配置fabric 網路使用者拓撲關係。crypto-config.yaml 內容如下(crypto-config.yaml檔案可以從e2e目錄複製一份檔案到當前目錄):

OrdererOrgs:
  - Name: Orderer
    Domain: example.com
    Specs:
      - Hostname: orderer0
      - Hostname: orderer1

PeerOrgs:
  - Name: Org1
    Domain: org1.example.com
    EnableNodeOUs: true
    Template:
      Count: 2
    Users:
      Count: 1
    Specs:
      - Hostname: peer0
      - Hostname: peer1

  - Name: Org2
    Domain: org2.example.com
    EnableNodeOUs: true
    Template:
      Count: 2
    Users:
      Count: 1
    Specs:
      - Hostname: peer0
      - Hostname: peer1

  - Name: Org3
    Domain: org3.example.com
    EnableNodeOUs: true
    Template:
      Count: 2
    Users:
      Count: 1
    Specs:
      - Hostname: peer0
      - Hostname: peer1

如果設定了EnableNodeOUs,就在msp下生成config.yaml檔案。

該配置檔案,包含一個 orderer 節點,以及兩個 peer組織,兩個 peer 組織又分別包含了兩個 peer 節點。

使用 cryptogen 工具,從crypto-config.yaml配置檔案中生成使用者相應的祕鑰和證書檔案 命令如下:

cryptogen generate --config=./crypto-config.yaml --output ./crypto-config

成功後截圖如下:

執行命令後,會在當前目錄下生成資料夾 crypto-config,包含節點使用者的祕鑰以及證書檔案,如圖:

通過scp命令分發 crypto-config資料夾,至其他7臺虛擬機器的/etc/hyperledger/fabric 目錄下(以下為例,根據實際修改主機ip):

scp -r crypto-config [email protected]:/etc/hyperledger/fabric/

2.配置Orderer 節點的啟動創世區塊,新建通道交易的相關配置

通過配置檔案 configtx.yaml 配置ordere 節點啟動需要的創始區塊資訊,以及新建應用通道的交易資訊。最初記錄時使用的是word,配置檔案內容太長,因此沒有全部記錄,以下截圖僅為部分,完整配置檔案統一放在附件(CentOS7 - hyperledger fabric1.1 - 1+4多機部署(kafka共識)配置檔案)中,請自取,如果積分不足請留言。

修改完成後執行下面命令:

使用工具configtxgen生成 orderer 節點啟動所需的創世區塊:

configtxgen -profile TwoOrgsOrdererGenesis -outputBlock genesis.block

使用工具 configtxgen生成建立應用通道的交易配置檔案:

configtxgen -profile TwoOrgsChannel -outputCreateChannelTx testchannel.tx -channelID testchannel

使用工具 configtxgen 生成更新組織錨節點的配置資訊檔案:

configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./Org1MSPanchors.tx -channelID testchannel -asOrg Org1MSP

configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./Org2MSPanchors.tx -channelID testchannel -asOrg Org2MSP

configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./Org3MSPanchors.tx -channelID testchannel -asOrg Org3MSP

執行命令後,在當前目錄下會生成如下檔案:

genesis.block、testchannel.tx、Org1MSPanchors.tx、Org2MSPanchors.tx、Org3MSPanchors.tx

通過 scp 命令傳送genesis.block檔案至172.17.3.206

通過 scp 命令傳送Org1MSPanchors.tx檔案至172.17.3.207

通過 scp 命令傳送Org2MSPanchors.tx檔案至172.17.3.209

通過 scp 命令傳送Org3MSPanchors.tx檔案至172.17.3.212

通過 scp 命令傳送 testchannel.tx檔案至全部六臺peer主機

3.設定虛擬機器 Hosts 檔案

由於 fabric 網路啟動相關的配置檔案中,與網路地址相關的資訊都是填寫的域名,所以需要在 hosts 檔案中配置域名與 ip 的對應關係, orderer 節點和其他的4個 peer 節點的虛擬機器都需要配置相關的 hosts 資訊:vim /etc/hosts

172.17.3.205 orderer0.example.com

172.17.3.206 orderer1.example.com

172.17.3.207 peer0.org1.example.com

172.17.3.208 peer1.org1.example.com

172.17.1.136 peer0.org2.example.com

172.17.3.211 peer1.org2.example.com

172.17.3.212 peer0.org3.example.com

172.17.3.213 peer1.org3.example.com

其中域名是根據 cryprto-config.yaml 的配置資訊得來。

4.配置 orderer 啟動環境

在orderer節點的虛擬機器配置orderer節點啟動相關配置資訊 orderer.yaml,並儲存在/etc/hyperledger/fabric目錄下。需要注意的是:在orderer.yaml配置檔案kafka配置標籤中,最後有一個Version引數項,預設為空,預設的版本為0.10.2.0,因為本次安裝kafka版本為2.1.1-1.1.0,因此需要修改此處的配置引數為實際安裝的版本號:1.1.0。

相關配置檔案內容見附件,因為檔案不能重名並且為了區分,orderer和peer配置檔案後面都加了數字編號以區分,實際使用時要去掉檔名後面的數字編號。

從 cypto-config 資料夾下,拷貝 orderer 節點的祕鑰以及證書檔案至 fabric 啟動環境變數目錄下(兩個orderer節點都需要執行,操作步驟類似):

cp -r ./crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp ./

cp -r ./crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls ./

根據前文的操作,fabric 網路 orderer 節點的執行環境目錄下應該有以下檔案及資料夾:

./crypto-config、./msp、./tls、orderer.yaml、genesis.block

啟動 orderer 節點:

orderer start

上面配置檔案中,日誌級別為debug(可以根據自己實際情況修改),因此orderer節點啟動之後會在控制檯看到相關可以看到與kafka相關的日誌輸出,

5.配置 peer 啟動環境

在 peer 節點的虛擬機器配置 peer 節點啟動相關配置資訊 core.yaml,並儲存在/etc/hyperledger/fabric 目錄下。相關配置檔案內容見附件。

從 crypto-config 資料夾下,拷貝 peer 節點的祕鑰以及證書檔案至 fabric 啟動環境變數目錄下:

cp -r ./crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp ./

cp -r ./crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls ./

注意標記部分應該在對應的目錄下拷貝對應的檔案資訊(可以參考 hosts 配置資訊的內容和本機ip區分)

根據前文的操作,fabric 網路 peer 節點的執行環境目錄下必須有以下檔案及資料夾:

/crypto-config.tx、./msp、./tls、testchannel.tx、core.yaml、

Org1MSPanchors.tx(.3.207虛擬機器)、

Org2MSPanchors.tx(.3.209虛擬機器)、

Org3MSPanchors.tx(.3.212虛擬機器)、

啟動 peer 節點:

peer node start

注意,拷貝 msptls 資料夾的動作可以不需要操作,只需要在對應的 orderer.yaml 以及 core.yaml 配置檔案中設定相應的路徑即可,這裡為了能夠與附件中的配置資訊一致,故把相應的祕鑰與證書檔案拷貝至fabric 網路執行環境變數的目錄下

6.建立應用通道

設定相應環境變數,6臺peer節點都需要設定(根據相應環境修改配置中相應的位置,後面測試連碼時也會用到,因此可以直接修改/etc/profile檔案,在後面使用時可以不用重複設定)

CORE_PEER_LOCALMSPID=Org1MSP

CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/fabric/crypto-config/peerOrganizations/org1.example.com/users/[email protected]/msp

例如:

執行命令建立應用通道(在peer0org1上執行即可):

peer channel create -o orderer0.example.com:7050 -c testchannel -f ./testchannel.tx  --tls true --cafile /etc/hyperledger/fabric/crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -t 3000

命令執行成功以後,會在當前目錄下生成 應用通道的創世區塊testchannel.block 檔案,只有使用該檔案,才可以加入對應的應用通道。

【注意】最後-t命令可以指定通道建立的超時時間,debug下如果不指定一個較大的超時時間,很大程度上會因為超時建立失敗。

【注意】以上命令需要根據實際環境修改,比如orderer0.example.com:7050,如果與實際配置不一致(假如實際中為orderera,但命令使用orderer0)會出現“context deadline exceeded” 異常。

使用 scp命令分發至其他5臺 peer 節點虛擬機器的 fabric 網路執行環境變數下(/etc/hyperledger/fabric)。以下為例:

scp -r testchannel.block [email protected]:/etc/hyperledger/fabric/

7.加入應用通道

執行命令加入應用通道(6臺peer節點都可以執行一遍):

peer channel join -b testchannel.block

加入應用通道的peer 節點虛擬機器都可以通過終端命令檢視加入的通過資訊,如圖,如果所有peer節點都執行了加入命令,都可以看到如下類似資訊:

peer channel list

8.更新錨節點配置

執行命令更新負責代表組織與其他節點通訊的錨節點(每個組織只需要在一臺(peer0org1/peer0org2/peer0org3)上執行即可)。每個組織指定一個anchor peer,anchor peer是組織用來接收orderer下發的區塊的peer。以org1為例:

peer channel update -o orderer0.example.com:7050 -c testchannel -f ./Org1MSPanchors.tx --tls true --cafile /etc/hyperledger/fabric/crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/msp/tlscacerts/tlsca.example.com-cert.pem

錨節點負責代表組織與其他組織中的節點進行 Gossip 通訊。

五、測試鏈碼

1.安裝鏈碼

設定相應環境變數(根據相應環境修改配置):

如果在四.6步驟中已經修改過配置檔案(/etc/profile),則此處不需要重複操作。

打包鏈碼,由於這次的例子是基於 go 語言開發的智慧合約,會依賴 go 的開發環境進行安裝,如果使用 peer chaincode install 命令指定鏈碼路徑安裝,可能會造成其他虛擬上安裝的同樣的鏈碼無法同步例項化(go 開發環境不一致引起的問題),所以這裡使用 go chaincode package 打包鏈碼,然後通過安裝打包鏈碼檔案進行鏈碼的安裝。

注意:如果是自定義的原始碼,最好在打包前在原始碼目錄執行一次go build以檢查程式碼是否有錯誤。

注意:這裡進行測試的鏈碼是 fabric 原始碼中的樣例-p 指定的路徑在命令執行的時候會自動根據 GOPATH 環境變數自動補全字首,所以路徑一個在 $GOPATH/src/目錄下:

peer chaincode package -n test -p github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02 -v 1.0 test.pak

使用 scp 命令分發 test.pak 檔案至其他5臺 peer 節點虛擬機器的 fabric 網路執行環境變數路徑下。例如:

scp -r test.pak [email protected]:/etc/hyperledger/fabric/

安裝鏈碼

peer chaincode install test.pak

安裝鏈碼的 peer 節點伺服器可以通過終端命令檢視已安裝的鏈碼資訊,如圖:

peer chaincode -C testchannel list --installed

2.初始化鏈碼

初始化鏈碼,只需要在一臺 peer 節點的伺服器上執行例項化後自動建立鏈碼容器,其他 peer 節點伺服器會同步該例項化的鏈碼資訊,並建立鏈碼容器(需要啟動docker容器:service docker start

peer chaincode instantiate -o orderer0.example.com:7050 -C testchannel -n test -v 1.0 -c'{"Args":["init","a","1000","b","2000"]}' -P "OR ('Org1MSP.member','Org2MSP.member','Org3MSP.member')" --tls true --cafile /etc/hyperledger/fabric/crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/msp/tlscacerts/tlsca.example.com-cert.pem

命令執行後對交易使用者 a賦值100,交易使用者 b 賦值200代幣。

-P指定的引數OR ('Org1MSP.member','Org2MSP.member','Org3MSP.member')是CLI endorsement policy語法,其作用是設定背書策略,表示需要請求三個組織的任何一個簽名即可,類似的,如果設定AND ('Org1MSP.member','Org2MSP.member','Org3MSP.member')則表示需要三個組織簽名,如果設定OR ('Org1MSP.member',AND('Org2MSP.member','Org3MSP.member'))則表示需要組織一或者組織二和三的簽名。

使用命令檢視鏈碼容器資訊:docker ps。如圖:

使用命令:

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

檢視使用者a(b)初始值:

3.測試交易

執行命令傳送一筆交易,命令 b 向 a 轉賬 40個代幣:

peer chaincode invoke -o orderer0.example.com:7050 -C testchannel -n test -c'{"Args":["invoke","b","a","40"]}' --tls ture --cafile /etc/hyperledger/fabric/crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/msp/tlscacerts/tlsca.example.com-cert.pem

再次查詢a、b餘額命令與五.2查詢命令相同:

查詢轉賬命令可以在任意peer節點執行,上面查詢在.3.207節點(日誌級別debug),其他節點類似。

六、區塊基本資訊查詢

在peer節點執行,以下以207為例。

configtxlator 工具提供了一個與 SDK 獨立的真正無狀態的 REST API,以簡化 Hyperledger Fabric 區塊鏈網路中的配置任務。該工具能夠在不同的等效資料表示/格式之間輕鬆轉換。例如,在工具操作的一種模式中,該工具在二進位制 protobuf 格式與人類可讀的 JSON 文字格式間來回轉換。此外,該工具可以基於兩組不同的配置交易之間的區別來計算配置更新。

1.設定環境

確保您至少安裝了 Hyperledger Fabric 的 1.1.0 預覽版,命令列輸入如下命令:

peer --version

本文使用開源的 jq 工具來通過指令碼處理與 configtxlator 返回的 JSON 的互動。這些 JSON 操作也可以手動或通過其他 JSON 工具執行。centos使用如下命令安裝jq工具:

安裝源:

yum install epel-release

檢視jq列表:

yum list jq

執行安裝:

yun install jq

驗證:

後臺啟動 configtxlator工具:

要啟動configtxlator首先要編譯configtxlator可執行程式,編譯方法類似第三部分:

首先進入$GOPATH/src/github.com/hyperledger/fabric目錄:

cd $GOPATH/src/github.com/hyperledger/fabric

然後執行編譯命令:

make configtxlator

如下:

使用如下命令在後臺啟動configtxlator:

configtxlator start &

驗證(檢視)configtxlator是否啟動:

netstat -lnp | grep 7059

2.檢索區塊

切換目錄到/etc/hyperledger/fabric

cd /etc/hyperledger/fabric

執行以下命令檢索應用通道testchannel上最新的區塊,因為訂購者端點受 TLS 保護,所以以引數形式提供證書頒發機構身份。

peer channel fetch newest newest_block.pb -c testchannel -o orderer0.example.com:7050 --tls --cafile /etc/hyperledger/fabric/crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/msp/tlscacerts/tlsca.example.com-cert.pen

可以看到目前最新的區塊高度為229。

也可以指定區塊高度,只需要修改命令中fetch後的引數即可,以區塊高度228為例如下:

peer channel fetch 228 228_block.pb -c testchannel -o orderer0.example.com:7050 --tls --cafile /etc/hyperledger/fabric/crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/msp/tlscacerts/tlsca.example.com-cert.pem

命令執行完成後可以在當前資料夾看到newest_block.pb(228_block.pb)檔案。

3.使用configtxlator解碼pb檔案

以newest_block.pb為例:

curl -X POST --data-binary @newest_block.pb http://127.0.0.1:7059/protolator/decode/common.Block > newest_block.json

完成後會在當前目錄看到生成的newest_block.json檔案,即可使用其他編輯軟體開啟檢視。

七、其他

1.git檢視遠端的所有分支列表

git branch -a

*表示當前使用分支

如果上面命令不加引數(git branch),則為檢視本地的git分支

END 

相關推薦

2+6安裝部署部分異常處理以及使用configtxlator區塊基本資訊查詢kafka共識手動docker方式

根據蒐集的資料安裝測試並在安裝測試過程中整理的文件,如有不足希望不吝賜教。 本文介紹CentOS7中hyperledger-fabric1.1多機部署使用kafka共識非docker方式,大體上與之前solo共識的步驟類似,(solo共識:《CentOS7中hyperle

nodejs應用離線安裝部署卸載

dep nbsp 公司 詳情 詳細 裝包 腳本 信息 安裝包 公司寫的文檔,直接粘貼過來了: 本文檔提供node應用一鍵安裝、部署、卸載說明,包含對應腳本文件 默認版本:1、nodejs:v6.11.2.linux-x642、全局npm包:pm2、supervis

[原創]在Centos7.2上源碼安裝PHPNginxZentao禪道

session zip nss markdown src roo -perm mbstring 復制 版本 操作系統:CentOS Linux release 7.2.1511 (Core) PHP:5.6.33 Nginx:1.12.2 MySQL:5.6.38(192

Piplin 安裝部署遷移和配置使用筆記

back create 選擇 目的 登錄 控制面板 創建用戶 不同的 項目 一、軟件安裝 源碼及安裝參考:https://github.com/Piplin/Piplin 代碼安裝目錄:/home/piplin/www 配置文件:/home/piplin/www/.env

MongoDB3.6.3 windows安裝配置啟動

.org 數據庫路徑 nal gap 好用 onf 日誌文件 新建 默認 1、官網下載MongoDB的安裝包 2、安裝中一直Next即可安裝成功,不過需要註意的是:   可以自定義安裝,選擇安裝路徑      值得註意的還有,安裝中因為下載compass十分緩慢。把

LAMP(module)分離於2臺主機並安裝pmawp

LAMPCentOS 7, lamp (module);要求:(1) 三者分離於兩臺主機; (2) 一個虛擬主機用於提供phpMyAdmin;另一個虛擬主機用於提供wordpress; (3) xcache (4) 為phpMyAdmin提供http

Spark筆記整理:spark單機安裝部署分布式集群與HA安裝部署+spark源碼編譯

大數據 Spark [TOC] spark單機安裝部署 1.安裝scala 解壓:tar -zxvf soft/scala-2.10.5.tgz -C app/ 重命名:mv scala-2.10.5/ scala 配置到環境變量: export SCALA_HOME=/home/uplooking

rabbitmq 3.6.15 yum安裝部署

rabbitmq yum install epel-release -y yum install erlang -y wget https://www.rabbitmq.com/releases/rabbitmq-server/v3.6.15/rabbitmq-server-3.6.15-1.el7

php7.2.6編碼編譯安裝

ror mys ket org gdb lec mbr fpm make mkdir /tools && cd /tools && wget http://ftp.gnu.org/gnu/libiconv/libiconv-1.15.tar

hadoop2.6虛擬安裝

1.7 point hadoop集群 jps 輸入密碼 ip地址 進程 單節點 size Linux環境設置/*安裝Hadoop集群時要確保以下幾個方面1.本機與虛擬機之間是否可以通信(Ping)。如果不行檢查下面 1.1本機防火墻關閉(開啟情況是本機可以ping虛擬機,虛

[Maven實戰-許曉斌]-[第二章]-2.6 NetBeans上面安裝Maven插件

pre 2.6 maven 技術分享 ima 分享 beans maven插件 image NetBeans上面安裝Maven插件 [Maven實戰-許曉斌]-[第二章]-2.6 NetBeans上面安裝Maven插件

OEMCC 13.2 集群版本安裝部署

manager .cn ant pools ble 監控系統 cnblogs lac 準備工作 之前測試部署過OEMCC 13.2單機,具體可參考之前隨筆: OEMCC 13.2 安裝部署 當時環境:兩臺主機,系統RHEL 6.5,分別部署OMS和OMR: OMS,也就

libusb-win32-bin-1.2.6.0驅動安裝方法

本驅動是Windows系統下(包含主流的Windows XP, Windows7)下的驅動,官方網址為,http://sourceforge.net/apps/trac/libusb-win32/wiki,裡面可以找到libusb-win32的介紹,在該網頁找到download,進入http://s

Redis-3.2.8的叢集安裝部署

一.下載並安裝基礎元件 yum -y install gcc automake autoconf libtool make jemalloc 二.下載redis並解壓安裝 wget http://download.redis.io/relea

ambari 2.6.1.5安裝

系統要求:CentOS 7Python 2.7.xJDK1.8+安裝環境準備HDP版本相容性 https://supportmatrix.hortonworks.com/ 運維知識庫 > ambari安裝 > image2018-9-29_11-7-33.png 由於嚴格依賴版本,所以要先確

Redis介紹安裝部署操作

一、Redis介紹   Redis是NoSql的一種。   NoSql,全名:Not Only Sql,是一種非關係型資料庫,它不能替代關係弄資料庫,只是關係型資料庫的一個補充,是可以解決高併發、高可用、高擴充套件、大資料儲存等一系列問題而產生的資料庫解決方案。 NoSql有以下4種分類:鍵值(K

Teleport堡壘安裝部署

http://teleport.eomsoft.net 下載軟體teleport-server-linux-x64-2.2.10.1.tar.gz和teleport-assist-2.2.6.1.exe [[email protected] teleport-server-linu

mysql-5.6.41-winx64安裝教程使用及Navicat_Premium視覺化sql的使用

安裝步驟 https://www.cnblogs.com/Pusteblume/p/9705153.html Windows 無法啟動MySql服務 (位於 本地計算機上)錯誤2: 系統找不到指定的檔案 https://blog.csdn.net/write

srs的安裝部署叢集以及降低延遲的一些方法

srs SRS簡單安裝 環境 centos7.4 首先:安裝工具 git make yum install -y git make 安裝之後 ,下載官網映象,git clone https://github.

Flink環境安裝部署詞頻統計例項WordCount原始碼分析

./start-cluster.sh 瀏覽器輸入http://localhost:8081可以看到UI介面 單詞統計例項: jar包所在位置(安裝包自帶) 依次輸入: ./flink run .