上一篇博文我們已經將fabric的開發環境安裝好了,接下來就是搭建第一條fabric網絡。
一、進入~/go/src/github.com/hyperledger/fabric-samples/目錄下,切換分支:
git checkout release-1.0
進入first-network目錄下,目錄結構如下:
其中env文件存儲的是一些環境變量,base目錄下存儲的是docker-compose的公共服務,byfn.sh是啓動腳本,configtx.yaml和crypto-config.yaml可以根據我們之前生成的工具生成相應的配置文件放入到channel-artifacts以及crypto-config目錄下。四個docker-compose文件用於啓動網絡。scripts裏面存放了一些測試腳本,做一些有關創建通道和安裝鏈碼相關的工作。
二、生成證書以及相關的配置文件
/**mychannel是通道的名字,可以自定義*/
./byfn.sh -m generate -c mychannel
運行結果如下:
這個過程發生了什麼呢?我們來簡單地分析一下:
首先根據cryptogen生成了參與主體的msp證書,這裏有兩個主體org1.example.com和org2.example.com
##########################################################
##### Generate certificates using cryptogen tool #########
##########################################################
org1.example.com
org2.example.com
根據configtxgen生成創世區塊以及通道配置文件。
##########################################################
######### Generating Orderer Genesis block ##############
##########################################################
2019-12-05 05:40:54.746 PST [common/configtx/tool] main -> INFO 001 Loading configuration
2019-12-05 05:40:54.798 PST [common/configtx/tool] doOutputBlock -> INFO 002 Generating genesis block
2019-12-05 05:40:54.801 PST [common/configtx/tool] doOutputBlock -> INFO 003 Writing genesis block
#################################################################
### Generating channel configuration transaction 'channel.tx' ###
#################################################################
2019-12-05 05:40:54.826 PST [common/configtx/tool] main -> INFO 001 Loading configuration
2019-12-05 05:40:54.848 PST [common/configtx/tool] doOutputChannelCreateTx -> INFO 002 Generating new channel configtx
2019-12-05 05:40:54.852 PST [common/configtx/tool] doOutputChannelCreateTx -> INFO 003 Writing new channel tx
生成兩個組織的錨節點,錨節點是兩個組織對外的節點。
#################################################################
####### Generating anchor peer update for Org1MSP ##########
#################################################################
2019-12-05 05:40:54.863 PST [common/configtx/tool] main -> INFO 001 Loading configuration
2019-12-05 05:40:54.867 PST [common/configtx/tool] doOutputAnchorPeersUpdate -> INFO 002 Generating anchor peer update
2019-12-05 05:40:54.868 PST [common/configtx/tool] doOutputAnchorPeersUpdate -> INFO 003 Writing anchor peer update
#################################################################
####### Generating anchor peer update for Org2MSP ##########
#################################################################
2019-12-05 05:40:54.894 PST [common/configtx/tool] main -> INFO 001 Loading configuration
2019-12-05 05:40:54.907 PST [common/configtx/tool] doOutputAnchorPeersUpdate -> INFO 002 Generating anchor peer update
2019-12-05 05:40:54.907 PST [common/configtx/tool] doOutputAnchorPeersUpdate -> INFO 003 Writing anchor peer update
三、啓動網絡
首先用docker ps -a檢查環境是不是正常。
如果不想每次使用docker都帶上sudo,可以將當前用戶添加到docker的用戶組裏面,方法如下:
sudo groupadd docker #添加docker用戶組
sudo gpasswd -a $USER docker #將登陸用戶加入到docker用戶組中
newgrp docker #更新用戶組
docker ps #測試docker命令是否可以使用sudo正常使用
接着,正式啓動網絡:
./byfn.sh -m up -c mychannel
此過程比較耗費時間比較長,而且在最後可能會報如下錯誤:
這是因爲我們使用docker-compose使用的鏡像tag是latest,但是latest現在對應的是1.0有些差異。可以參考一下兩種方法解決:
第一種:在運行byfn.sh之前先下載鏡像,命令如下:
docker pull hyperledger/fabric-tools:x86_64-1.0.0
docker tag hyperledger/fabric-tools:x86_64-1.0.0 hyperledger/fabric-tools:latest
docker pull hyperledger/fabric-orderer:x86_64-1.0.0
docker tag hyperledger/fabric-orderer:x86_64-1.0.0 hyperledger/fabric-orderer:latest
docker pull hyperledger/fabric-peer:x86_64-1.0.0
docker tag hyperledger/fabric-peer:x86_64-1.0.0 hyperledger/fabric-peer:latest
然後用依次此輸入以下命令:
./byfn.sh -m down -c mychannel
./byfn.sh -m up -c mychannel
第二種:運行byfn腳本的時候帶上版本參數
byfn.sh -m generate -c mychannel -i 1.0.0
byfn.sh -m up -c mychannel -i 1.0.0
byfn.sh -m down -c mychannel -i 1.0.0
我採用的是第一種方法,可以正常啓動,啓動成功的標緻如下:
以上,我們就成功地搭建出了第一條fabric網絡,下一篇博客我們將討論一下啓動網絡時的日誌和實例代碼解析。
參考: