Michael.W谈hyperledger Fabric第6期-手动搭建Fabric网络之创世块/通道的生成二

Michael.W谈hyperledger Fabric第6期-手动搭建Fabric网络之创世块/通道的生成二

        • 2.3.4 对组织信息、兼容性信息和orderer相关信息的调用
    • 3 创始块/通道文件的生成依赖yaml文件的生成
      • 3.1 生成创始区块文件
      • 3.2 生成通道文件
      • 3.3 生成更新锚节点文件(可选)

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神,热爱一切被梨花照过的姑娘。
以下是我个人的公众号,如果有技术问题可以关注我的公众号来跟我交流。
同时我也会在这个公众号上每周更新我的原创文章,喜欢的小伙伴或者老伙计可以支持一下!
如果需要转发,麻烦注明作者。十分感谢!
后现代泼痞浪漫主义奠基人
公众号名称:后现代泼痞浪漫主义奠基人

你可能感兴趣的:(Fabric,Fabric,fabric,profile,configtxgen,更新锚节点,创世区块)