2.3.4 对组织信息、兼容性信息和orderer相关信息的调用
看一下我前面所讲的所有设置,无论是Organizations、Capabilities、Application或Orderer都将本部分的设置存到了一个对应的变量里。其目的就是为了在这个地方方便进行调用,使得文件看起来更简洁。
先来看一下模板中都进行了什么设置:
################################################################################
#
# Profile
#
# - Different configuration profiles may be encoded here to be specified
# as parameters to the configtxgen tool
#
################################################################################
Profiles: # 关键字,不能修改
TwoOrgsOrdererGenesis: # 创世区块的名字,可自定义
# 以下均为写入创世区块的内容
Capabilities: # 兼容性
<<: *ChannelCapabilities # 前面设定的变量ChannelCapabilities所对应的内容
Orderer:
<<: *OrdererDefaults # 前面设定的变量OrdererDefaults所对应的内容
Organizations: # orderer组织相关信息
- *OrdererOrg
Capabilities: # orderer的兼容性
<<: *OrdererCapabilities
Consortiums: # 关键字,联盟。 不可修改
SampleConsortium: # 联盟的名字,可自定义
Organizations: # peer组织
- *Org1
- *Org2
TwoOrgsChannel: # 通道的名字,可自定义
Consortium: SampleConsortium # 本通道要加入到哪个联盟中,需要指明。注:这个需要与在创世区块中定义的联盟名称保持一致!
Application:
<<: *ApplicationDefaults
Organizations: # 有哪些peer组织加入到该通道中
- *Org1
- *Org2
Capabilities: # 有关兼容性的
<<: *ApplicationCapabilities
所以,后面要通过TwoOrgsOrdererGenesis和TwoOrgsChannel对应的内容将创世区块和通道依赖的文件生成出来。
我修改后的对应部分:
Profiles:
Genesis: # 自定义创世块的名称
Capabilities:
<<: *ChannelCapabilities
Orderer:
<<: *OrdererDefaults
Organizations:
- *OrdererOrg
Capabilities:
<<: *OrdererCapabilities
Consortiums:
MichaelConsortium: # 自定义联盟的名称
Organizations:
- *Org1
- *Org2
Channel:
Consortium: MichaelConsortium # 与创世区块中的联盟保持一致
Application:
<<: *ApplicationDefaults
Organizations:
- *Org1
- *Org2
Capabilities:
<<: *ApplicationCapabilities
至此,这个configtx.yaml配置文件就全部修改完毕了。
3 创始块/通道文件的生成依赖yaml文件的生成
3.1 生成创始区块文件
使用如下命令
$ configtxgen -profile 在Profiles中自定义的创世区块名称 -outputBlock 生成的创世区块文件名
# 例子
$ configtxgen -profile Genesis -outputBlock genesis.block
关于创世区块文件的名称有无.block后缀都无所谓,我只是为了便于区分才叫的这个名字。
在这里插入图片描述
生成之后,在当前目录下就可以看见这个创世区块文件genesis.block了。之后我们要创始创世区块的时候,就直接利用这个genesis.block文件来创建。
3.2 生成通道文件
使用如下命令
$ configtxgen -profile 在Profiles中自定义的通道名称 outputCreateChannelTx 生成的通道文件名 -channelID 创建出通道的ID
# 如果再加上 -channelID 这个参数,是可以给创建出的通道设置一个通道ID。如果不使用该参数,创建出的通道ID默认为mychannel
# 例子
$ configtxgen -profile Channel -outputCreateChannelTx channel.tx -channelID michaelchannel
# 如何查看 configtxgen指令的相关参数?
$ configtxgen --help
在这里插入图片描述
同genesis.block一样,channel.tx的.tx后也不是必须的。我加这个后缀也只是为了便于区分。
生成之后,在当前目录下就可以看见这个通道文件channel.tx了。之后我要创建通道的时候,就直接利用这个channel.tx文件来创建。
3.3 生成更新锚节点文件(可选)
利用之前我改写的configtx.yaml文件不但可以生成创世区块文件和通道文件,其实还可以通过指令生成一个用来更新锚节点的文件。
当你想要更新peer组织1的锚节点的时候,需要生成一个更新锚节点文件;当你想要更新peer组织2的锚节点的时候,需要生成另外一个更新锚节点文件。这两个文件是相互独立的,互不干扰。
但是这个文件并不是必须生成的,只有当你想更换组织内的锚节点的时候(此时这个Fabric网络已经搭建成功并且运行有段时间了)才会用到。这里面我也顺道提及一下:
# 首先修改configtx.yaml中的锚节点信息改为新的锚节点信息
# 然后运行指令
$ configentx -profile 要修改的锚节点组织所在的通道名(在Profiles中自定义的通道名称) -outputAnchorPeersUpdate 生成的更新锚节点的文件名 -channelID 更新锚节点后的通道的ID -asOrg 在configtx.yaml文件中定义的更新锚节点的组织Name
# 例子 生成peer组织1的更新锚节点文件org1Anchor.tx
$ configentx -profile Channel -outputAnchorPeersUpdate org1Anchor.tx -channelID michaelchannel -asOrg Org1MSP
# 例子 生成peer组织2的更新锚节点文件org2Anchor.tx
$ configentx -profile Channel -outputAnchorPeersUpdate org2Anchor.tx -channelID michaelchannel -asOrg Org2MSP
在这里插入图片描述
注:我在configtx.yaml中定义的peer组织1的Name和ID都是Org1MSP。一旦填到这个选项时一定要去前面查你设置过的信息内容,以免造成填写内容不一致。
执行该命令后,生成更新peer组织1的锚节点文件org1Anchor.tx。
在这里插入图片描述
ps:
本人热爱图灵,热爱中本聪,热爱V神,热爱一切被梨花照过的姑娘。
以下是我个人的公众号,如果有技术问题可以关注我的公众号来跟我交流。
同时我也会在这个公众号上每周更新我的原创文章,喜欢的小伙伴或者老伙计可以支持一下!
如果需要转发,麻烦注明作者。十分感谢!
公众号名称:后现代泼痞浪漫主义奠基人
网友评论