Fabric 2.0 创建通道与加入通道

HyperLedger Fabric 2.0 实践创建通道与加入通道.

本系列文章如下: [HyperLedger Fabric 2.0 测试网络部署](https://learnblockchain.cn/article/581) [Fabric2.0 样例 first-network 生成配置说明](https://learnblockchain.cn/article/582) [Fabric2.0启动网络脚本配置剖析](https://learnblockchain.cn/article/590) [Fabric 2.0 创建通道与加入通道](https://learnblockchain.cn/article/591) [Fabric 2.0 智能合约部署及升级](https://learnblockchain.cn/article/592) [Fabric 2.0 实战 - 设置背书策略](https://learnblockchain.cn/article/617) 基于[上一篇](https://learnblockchain.cn/article/590)完成一个包含Order及组织的Fabric 2.0网络搭建后,接下来进行 Fabric 2.0 的通道实践,Fabric 2.0 的通道实践主要包括两个部分: **创建通道**与**节点加入通道**,我们将基于first network 来实践。 ## 1. 创建通道准备 ### 1.1 创建通道配置文件 由于first-network目录已存在configtx.yaml,如果需要修改通道配置,可备份原本configtx.yaml,修改相关通道配置项。 ### 1.2 环境准备 打开控制台,执行以下命令: * 设置二进制文件`configtxgen`目录到环境变量,方便调用 ``` > export PATH=${PWD}/../bin:${PWD}:$PATH ``` * 设置环境变量 `FABRIC_CFG_PATH`为`configtx.yaml`所在目录 ``` > export FABRIC_CFG_PATH=${PWD} ``` ### 1.3 创建通道tx文件 控制台执行以下命令: ``` > configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/channel2.tx -channelID channel2 ``` `-outputCreateChannelTx` :输出tx文件路径 `-channelID`: 通道ID 执行结果: ![在这里插入图片描述](https://img.learnblockchain.cn/2020/02/BF1D0E3350.png) ## 2. 创建通道 原本创建通道是通过cli客户端创建的,2.0这次可以直接通过二进制文件创建,二进制与cli的区别,除了表面形式的区别外,其实都是一样,不同在于cli的环境变量一开始就设置好一个默认的,例如peer的证书路径,使用二进制的话,就直接在控制台设置环境编码,详情查看`fabric-samples/test-network`的脚本,这里不做详细介绍,接下来我们还是使用cli比较快捷创建一个测试通道。 进入cli容器: ``` > docker exec -it cli bash ``` 进入后: ![在这里插入图片描述](https://img.learnblockchain.cn/2020/02/5C0822B584.png) 由于cli的`channel-artifacts`已经与宿主机的`~/first-network/channel-artifacts`建立映射,因此上面新建的channel文件也存在cli的目录下 ![在这里插入图片描述](https://img.learnblockchain.cn/2020/02/127760490C.png) 在当前目录输入命令: ``` > peer channel create -o orderer.example.com:7050 -c channel2 -f ./channel-artifacts/channel2.tx --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem ``` 自定义的话只需要修改以下参数: `-o` :参数排序节点服务域名端口 `-c` :通道ID `-f` :通道文件所在路径 `-tls` :是否启用tls `-cafile` : ca路径 控制台数据结果如下,表示通道创建成功。 ![在这里插入图片描述](https://img.learnblockchain.cn/2020/02/C4AC5F9B0C.png) 当前目录出现通道区块文件如下: ![在这里插入图片描述](https://img.learnblockchain.cn/2020/02/420AF8BC90.png) ## 3. 节点加入通道 设置cli连接节点对象只需要设置相应的环境变量,目前cli设置的节点为`peer0.org1.example.com` 输入命令,查看环境变量: ``` > env|grep CORE ``` 输出结果: ![在这里插入图片描述](https://img.learnblockchain.cn/2020/02/CCAA54BADB.png) 如需要修改节点只需要修改上面的环境变量为对应节点的配置,现在将`peer0.org1.example.com`添加到通道 控制台输入以下命令: ``` > peer channel join -b channel2.block ``` -b : 指定区块文件路径 控制台输出如下结果,表示节点加入成功 ![在这里插入图片描述](https://img.learnblockchain.cn/2020/02/F1A5508CD9.png) 查看排序节点日志如下 ![在这里插入图片描述](https://img.learnblockchain.cn/2020/02/2AD210599F.png) 排序节点写入了新的区块,同时为该通道创建了一个raft集群。 ## 4. 验证节点加入通道 控制台输入: ``` > peer channel list ``` 控制台输出结果如下: 可以看到当前节点已经加入到`channel2` ![在这里插入图片描述](https://img.learnblockchain.cn/2020/02/5A585E7E3C.png) ## 5. 总结 在通道方面,客户端的操作上相较于1.x没什么变化,相关通道策略配置跟 Fabric 1.4基本一致,变化在于底层共识,原本的创建通道只是创建一个区块,在 kafka 开个订阅 Topic,现在Fabric 2.0的是一个通道就创建一个raft服务集群实现通道交易一致性。以上的脚本主要参照 `first-network`下的`script/script.sh`。 转载自: https://me.csdn.net/qq_28540443

本系列文章如下: HyperLedger Fabric 2.0 测试网络部署 Fabric2.0 样例 first-network 生成配置说明 Fabric2.0启动网络脚本配置剖析 Fabric 2.0 创建通道与加入通道 Fabric 2.0 智能合约部署及升级 Fabric 2.0 实战 - 设置背书策略

基于上一篇完成一个包含Order及组织的Fabric 2.0网络搭建后,接下来进行 Fabric 2.0 的通道实践,Fabric 2.0 的通道实践主要包括两个部分: 创建通道节点加入通道,我们将基于first network 来实践。

1. 创建通道准备

1.1 创建通道配置文件

由于first-network目录已存在configtx.yaml,如果需要修改通道配置,可备份原本configtx.yaml,修改相关通道配置项。

1.2 环境准备

打开控制台,执行以下命令:

  • 设置二进制文件configtxgen目录到环境变量,方便调用
> export PATH=${PWD}/../bin:${PWD}:$PATH
  • 设置环境变量 FABRIC_CFG_PATHconfigtx.yaml所在目录
> export FABRIC_CFG_PATH=${PWD}

1.3 创建通道tx文件

控制台执行以下命令:

>  configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/channel2.tx -channelID channel2

-outputCreateChannelTx :输出tx文件路径 -channelID: 通道ID

执行结果:

2. 创建通道

原本创建通道是通过cli客户端创建的,2.0这次可以直接通过二进制文件创建,二进制与cli的区别,除了表面形式的区别外,其实都是一样,不同在于cli的环境变量一开始就设置好一个默认的,例如peer的证书路径,使用二进制的话,就直接在控制台设置环境编码,详情查看fabric-samples/test-network的脚本,这里不做详细介绍,接下来我们还是使用cli比较快捷创建一个测试通道。

进入cli容器:

> docker exec -it cli bash

进入后: 由于cli的channel-artifacts已经与宿主机的~/first-network/channel-artifacts建立映射,因此上面新建的channel文件也存在cli的目录下

在当前目录输入命令:

> peer channel create -o orderer.example.com:7050 -c channel2 -f ./channel-artifacts/channel2.tx --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem

自定义的话只需要修改以下参数: -o :参数排序节点服务域名端口 -c :通道ID -f :通道文件所在路径 -tls :是否启用tls -cafile : ca路径

控制台数据结果如下,表示通道创建成功。

当前目录出现通道区块文件如下:

3. 节点加入通道

设置cli连接节点对象只需要设置相应的环境变量,目前cli设置的节点为peer0.org1.example.com

输入命令,查看环境变量:

> env|grep CORE

输出结果: 如需要修改节点只需要修改上面的环境变量为对应节点的配置,现在将peer0.org1.example.com添加到通道

控制台输入以下命令:

> peer channel join -b channel2.block

-b : 指定区块文件路径

控制台输出如下结果,表示节点加入成功

查看排序节点日志如下

排序节点写入了新的区块,同时为该通道创建了一个raft集群。

4. 验证节点加入通道

控制台输入:

> peer channel list

控制台输出结果如下: 可以看到当前节点已经加入到channel2

5. 总结

在通道方面,客户端的操作上相较于1.x没什么变化,相关通道策略配置跟 Fabric 1.4基本一致,变化在于底层共识,原本的创建通道只是创建一个区块,在 kafka 开个订阅 Topic,现在Fabric 2.0的是一个通道就创建一个raft服务集群实现通道交易一致性。以上的脚本主要参照 first-network下的script/script.sh

转载自: https://me.csdn.net/qq_28540443

区块链技术网。

  • 发表于 2020-02-14 11:40
  • 阅读 ( 3476 )
  • 学分 ( 76 )
  • 分类:Fabric

评论