fabric 环境手动搭建步骤三

环境手动搭建步骤三

当前配置后的目录结构
.
├── a.yaml
├── chaincode
│   └── chaincode_example02.go
├── channel-artifacts
│   └── channel.tx
├── channel.tx
├── configtx.yaml
├── crypto-config
│   ├── ordererOrganizations
│   └── peerOrganizations
├── docker-compose-base.yaml
├── docker-compose-cli.yaml
├── genesis.block
├── peer-base.yaml
└── scripts

启动容器

启动容器:docker-compose -f docker-compose-cli.yaml up -d
检测所有的节点是否正常启动:docker-compose -f docker-compose-cli.yaml ps

容器启动之后做的事情:

  1. 创建通道,得到通道文件.只需要做一次
  2. peer节点加入到通道中,所有peer都需要加入到通道
  3. 给peer节点安装链码,所有的peer节点都需要安装链码
  4. 给链码初始化,在任意一个已经安装好链码的节点上做一次
  5. 测试:数据查询,数据写操作.

上述所有的操作都是通过客户端节点来完成的

客户端节点启动之后, 执行命令

  • 命令被发送给peer或者orderer节点
进入容器
进入到客户端容器
$ docker exec -it cli bash
创建通道

创建通道只需要做1次

# 通道创建操作, 只需要操作一次
# 创建通道的操作执行一次就可以了, 执行完成之后, 会生成一个通道文件
$ peer channel create [flags], 常用参数为:
	`-o, --orderer: 
		创建通道的时候需要orderer参与, 指定orderer节点的地址: orderer.zoo.com:7050
# configtxgen -profile Channel -outputCreateChannelTx channel.tx -channelID zoochannel
	`-c, --channelID: 通道的名字, 在configtxgen的时候指定的 channelID
	`-f, --file: 创建通道的时候, 加载的文件, 通过configtxgen命令生成的
	`--tls: 执行这个命令通信的时候, 是不是需要加密, 如果指定了这个参数就是加密
	`--cafile: tls加密的时候, 使用的证书, 这个证书是orderer节点的, 如何找?, 这个文件要使用绝对路径
ordererOrganizations/order组织目录/orderers/orderer节点的目录/msp/tlscacerts/tlsca.zoo.com-cert.pem


# 命令
cafile=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/zoo.com/orderers/orderer.zoo.com/msp/tlscacerts/tlsca.zoo.com-cert.pem
peer channel create -o orderer.zoo.com:7050 -c zoochannel -f ./channel-artifacts/channel.tx --tls --cafile $cafile

# 在客户端容器中ls
$ ls
channel-artifacts  crypto  `zoochannel.block -> 真正的通道文件

创建通道可能遇到的问题

# 错误1
Error: got unexpected status: BAD_REQUEST -- error authorizing update: error validating ReadSet: readset expected key [Group]  /Channel/Application at version 0, but got version 1
# 原因: 通道已经创建出来了, 再次创建该通道
#	第一个启动了一个网络, 关闭(容器也销毁了), 再次启动网络, 创建通道
# 	第一次启动网络生成的数据保存在了挂载是数据卷目录, 这些目录没有被删除
#   先关闭当前网络 -> 所有的容器都销毁了
# 	删除 没有被删除的数据卷: docker volume prune -> 删除所有缓存的数据卷

# 错误2
error validating DeltaSet: policy for [Group]  /Channel/Application not satisfied: Failed to reach implicit threshold of 1 sub-policies, required 1 remaining
# 原因
#	这个问题的原因是用configtxgen生成创始块的时候,配置文件configtx.yaml指定了错误的msp目录。 导致生成
#	的区块中包含的证书其它用户的证书。
#    重新生成证书和创始区块/通道文件
		cryptogen generate --config xxx.yaml
		configtxgen -profile ......
		
# 错误3
Error: failed to create deliver client: orderer client failed to connect to myorderer.itcast.com:7050: failed to create new connection: context deadline exceeded
# 原因: 连接 myorderer.itcast.com 失败, 是因为这个域名解析失败了
#       需要通过 extra_hosts声明该域名如何被解析
# extra_hosts:
#    - "orderer.zoo.com:192.168.247.203"

会生成真正的通道文件zoochannel.block,如果是多机器环境,将该文件拷到其他机器上。

加入通道
# 验证客户端操作的节点有没有加入到通道中

# 通过客户端将网络中节点 -  peer 加入到通道中
# 当前网络中所有peer节点都需要加入到通道中, 都是通过客户端操作来完成的
$ peer channel join[flags], 常用参数为:
	`-b, --blockpath: 指定通过peer channel create 命令生成的这个个xxx.block文件的路径

# 命令
$ peer channel join -b ./zoochannel.block
# 验证
$ peer channel list                          
2019-07-07 04:00:22.018 UTC [channe
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值