搭建第一条Fabric网络

上一篇博文我们已经将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网络,下一篇博客我们将讨论一下启动网络时的日志和实例代码解析。

参考:

https://www.cnblogs.com/informatics/p/8276172.html

https://coding.imooc.com/learn/questiondetail/78716.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章