美文网首页
Michael.W谈hyperledger Fabric第6期-

Michael.W谈hyperledger Fabric第6期-

作者: 一冠王 | 来源:发表于2020-08-28 19:56 被阅读0次

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



    公众号名称:后现代泼痞浪漫主义奠基人

    相关文章

      网友评论

          本文标题:Michael.W谈hyperledger Fabric第6期-

          本文链接:https://www.haomeiwen.com/subject/bqkrsktx.html