黎躍春

孔壹學院、ChainDesk 創始人兼 CEO

如果您有任何關於區塊鏈的問題,可以加入區塊鏈技術交流 QQ 羣 729666975 (進羣無需添加驗證信息,直接點擊下一步,等待管理員通過即可),我們會爲您一一解答。

從零到壹學習超級賬本理論加實戰爲一個系列,一共 23 講,包括超級賬本簡介、搭建環境、啓動網絡、測試鏈碼、區塊鏈應用開發等。今天我們將爲大家介紹從零到壹學習超級賬本理論加實戰第四講:啓動網絡 (手動)。話不多說,馬上開啓我們的超級賬本理論加實戰學習之旅。

課程學習,添加莉莉微信 (kongyixueyuan) 獲取。

孔壹學院
freshflower 啓動網絡 (手動)

啓動網絡手動實現

實現步驟

生成組織關係和身份證書

確定是在 fabric-samples/first-network 路徑下

$ cd hyfa/fabric-samples/first-network/ 爲 fabric

網絡生成指定拓撲結構的組織關係和身份證書

$ sudo ../bin/cryptogen generate –config=./crypto-config.yaml

此命令依賴 crypto-config.yaml 配置文件

會有如下輸出 :

org1.example.com

org2.example.com

證書和密鑰(即 MSP 材料)將被輸出到目錄 first-network/crypto-config 的目錄中

ordererOrganizations 子目錄下包括構成 Orderer 組織 (1 個 Orderer 節點) 的身份信息

peerOrganizations 子目錄下爲所有的 Peer 節點組織 (2 個組織 , 4 個節點) 的相關身份信息 . 其中最關鍵的是 MSP 目錄 , 代表了實體的身份信息

crypto-config 文件目錄結構如下

Cryptogen 按照配置文件中指定的結構生成了對應的組織和密鑰、證書文件

其中最關鍵的是各個資源下的 msp 目錄內容,存儲了生成的代表 MSP 身份的各種證書文件,一般包括:

admincerts :管理員的身份證書文件

cacerts :信任的根證書文件

key store :節點的簽名私鑰文件

signcerts :節點的簽名身份證書文件

tlscacerts: TLS 連接用的證書

intermediatecerts (可選):信任的中間證書

crls (可選):證書撤銷列表

config.yaml (可選):記錄 OrganizationalUnitldentifiers 信息,包括根證書位置和 ID 信息

這些身份文件隨後可以分發到對應的 Orderer 節點和 Peer 節點上,並放到對應的 MSP 路徑下,用於簽名使用

配置環境變量

告訴 configtxgen 工具在哪裏尋找 configtx.yaml 文件

$ export FABRIC_CFG_PATH=$PWD

創建 Ordering 服務啓動初始區塊

指定使用 configtx.yaml 文件中定義的 TwoOrgsOrdererGenesis 模板 , 生成 Ordering 服務系統通道的初始區塊文件

$ sudo ../bin/configtxgen -profile TwoOrgsOrdererGenesis -outputBlock
./channel-artifacts/genesis.block 命令執行後輸出如下 :

創建一個應用通道的配置交易

務必替換 $CHANNEL_NAME 或設置 CHANNEL_NAME 爲可在整個說明中使用的環境變量

$ export CHANNEL_NAME=mychannel

指定使用 configtx.yaml 配置文件中的 TwoOrgsChannel 模板 , 來生成新建通道的配置交易文件 , TwoOrgsChannel

模板指定了 Org1 和 Org2 都屬於後面新建的應用通道

$ sudo ../bin/configtxgen -profile TwoOrgsChannel -outputCreateChannelTx
./channel-artifacts/channel.tx -channelID $CHANNEL_NAME

輸出如下

生成錨節點配置更新文件

錨節點配置更新文件用來對組織的錨節點進行配置

同樣基於 configtx.yaml 配置文件生成新建通道文件 , 每個組織都需要分別生成且注意指定對應的組織名稱

$ sudo ../bin/configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate
./channel-artifacts/Org1MSPanchors.tx -channelID $CHANNEL_NAME -asOrg Org1MSP

$ sudo ../bin/configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate
./channel-artifacts/Org2MSPanchors.tx -channelID $CHANNEL_NAME -asOrg Org2MSP
啓動網絡

$ sudo docker-compose -f docker-compose-cli.yaml up -d

-f: 指定 docker-compose 文件

注 :

如果想查看網絡的實時日誌,則不需要提供 -d 參數

CLI 容器將閒置 1000 秒。如果在需要時它消失了,可以用一個簡單的命令重新啓動它:

$ sudo docker start cli

網絡啓動順序 : 首先啓動 Orderer 節點 , 然後啓動 Peer 節點 , 日誌輸出如下 :

Peer 節點啓動後 , 默認情況下沒有加入網絡中的任何應用通道 , 也不會與 Orderer 服務建立連接 . 需要通過客戶端對其進行操作 ,
讓它加入網絡和指定的應用通道中

進入 Docker 容器

執行如下命令進入到 CLI 容器中 (後繼操作都在容器中執行)

$ sudo docker exec -it cli bash

如果成功 , 命令提示符會變爲如下內容 :

root@b240e1643244:/opt/gopath/hide/github.com/hyperledger/fabric/peer#

創建通道

檢查環境變量是否正確設置

echo $CHANNEL_NAME

設置環境變量

export CHANNEL_NAME=mychannel

創建通道

該命令自動在本地生成與該應用通道同名的初始區塊 mychannel.block, 只有擁有該文件纔可以加入創建的應用通道中

參數說明 :

-o: 指定 orderer 節點的地址
-c: 指定要創建的應用通道的名稱 (必須與在創建應用通道交易配置文件時的通道名稱一致)
-f: 指定創建應用通道時所使用的應用通道交易配置文件
–tls: 開啓 TLS 驗證

–cafile: 指定 TLS_CA 證書路徑

查看 :

加入通道

應用通道所包含組織的成員節點可以加入通道中

peer channel join -b mychannel.block join

命令 : 將本 Peer 節點加入到應用通道中

參數說明 :

-b: 指定當前節點要加入 / 聯接至應用通道

更新錨點

使用 Org1 的管理員身份更新錨節點配置

課程學習

添加莉莉老師微信 kongyixueyuan

不要錯過

**
課程學習方式**

系列閱讀

yuedu

從零到壹學習超級賬本理論加實戰第一講:超級賬本簡介

從零到壹學習超級賬本理論加實戰第二講:搭建環境

從零到壹學習超級賬本理論加實戰第三講:啓動網絡 (自動)