区块链网络搭建(二)

Orderer模块启动之前需要生成一个创世块文件和Orderer模块所需的配置文件。创世块是Fabric的第一个区块,主要存储相关的配置信息。

configtx.yaml案例文件:

1.Organizations部分

组织配置,用来定义不同的组织机构实体,以便后续配置中引用。例如以下配置文件中,定义了三个机构:OrdererOrg、Org1、Org2

Organizations:
 
    - &OrdererOrg
        # 组织名称
        Name: OrdererOrg
 
        # 组织ID,ID是引用组织的关键
        ID: OrdererMSP
 
        # 组织的MSP证书路径
        MSPDir: ../organizations/ordererOrganizations/hmw.com/msp
 
        # 定义本层级的组织策略,其权威路径为 /Channel/<Application|Orderer>/<OrgName>/<PolicyName>
        Policies:
            Readers:
                Type: Signature
                Rule: "OR('OrdererMSP.member')"
            Writers:
                Type: Signature
                Rule: "OR('OrdererMSP.member')"
            Admins:
                Type: Signature
                Rule: "OR('OrdererMSP.admin')"
 
        OrdererEndpoints:
            - orderer0.hmw.com:7050
            - orderer1.hmw.com:7052
            - orderer2.hmw.com:7054
 
    - &Org1
        Name: Org1MSP
 
        ID: Org1MSP
 
        MSPDir: ../organizations/peerOrganizations/org1.hmw.com/msp
 
        Policies:
            Readers:
                Type: Signature
                Rule: "OR('Org1MSP.admin', 'Org1MSP.peer', 'Org1MSP.client')"
            Writers:
                Type: Signature
                Rule: "OR('Org1MSP.admin', 'Org1MSP.client')"
            Admins:
                Type: Signature
                Rule: "OR('Org1MSP.admin')"
            Endorsement:
                Type: Signature
                Rule: "OR('Org1MSP.peer')"
 
    - &Org2
        Name: Org2MSP
 
        ID: Org2MSP
 
        MSPDir: ../organizations/peerOrganizations/org2.hmw.com/msp
 
        Policies:
            Readers:
                Type: Signature
                Rule: "OR('Org2MSP.admin', 'Org2MSP.peer', 'Org2MSP.client')"
            Writers:
                Type: Signature
                Rule: "OR('Org2MSP.admin', 'Org2MSP.client')"
            Admins:
                Type: Signature
                Rule: "OR('Org2MSP.admin')"
            Endorsement:
                Type: Signature
                Rule: "OR('Org2MSP.peer')"

2 Capabilities 通道能力配置部分 

Capabilities段定义了fabric程序要加入网络所必须支持的特性。

例如,如果添加了一个新的MSP类型,那么更新的程序可能会根据该类型识别并验证签名,但是老版本的程序就没有办法验证这些交易。这可能导致不同版本的fabric程序中维护的世界状态不一致。

Capabilities:
    # 通道capabilities适用于orderers和peers,并且两者都必须支持。
    # 将该配置项设置为ture表明要求节点具备该能力。
    Channel: &ChannelCapabilities
        # V2_0 能力确保orderers和peers按照 v2.0 通道capabilities行事。 来自先前版本的 
        # orderers和peers的行为方式不兼容,因此无法以 v2.0 的capabilities参与通道。在启用 
        # V2.0 通道capabilities之前,请确保通道上的所有订购者和对等方都处于 v2.0.0 或更高版 
        # 本。
        V2_0: true
 
    # orderer capabilities 仅适用于orderers,并且可以安全地与先前版本的peers一起使用。 
    # 将该配置项设置为ture表明要求节点具备该能力。
    Orderer: &OrdererCapabilities
        # V2_0 orderer capability 确保orderer根据 v2.0 orderer capability 行事。 来自先前 
        # 版本的orderer的行为方式不兼容,因此无法以 v2.0 的orderer capability 参与通道。在启 
        # 用 V2.0 orderer能力之前,请确保通道上的所有orderer都处于 v2.0.0 或更高版本。 
        V2_0: true
 
    # 应用程序功能仅适用于peer网络,并且可以安全地与先前发布的orderer一起使用。
    # 将该配置项设置为ture表明要求节点具备该能力
    Application: &ApplicationCapabilities
        # V2_0 应用能力确保peer的行为符合 v2.0 应用能力。 来自先前版本的peer的行为方式不兼 
        # 容,因此无法以 v2.0 应用程序功能参与通道。在启用 V2.0 应用程序功能之前,请确保通道 
        # 上的所有peer均处于 v2.0.0 或更高版本。
        V2_0: true

3 Application 应用通道配置部分

Application配置段用来定义要写入创世区块或配置交易的应用参数

Application: &ApplicationDefaults
 
    # 组织是定义为网络应用程序端参与者的组织列表
    Organizations:
 
    Policies:
        Readers:
            Type: ImplicitMeta
            Rule: "ANY Readers"
        Writers:
            Type: ImplicitMeta
            Rule: "ANY Writers"
        Admins:
            Type: ImplicitMeta
            Rule: "MAJORITY Admins"
        LifecycleEndorsement:
            Type: ImplicitMeta
            Rule: "MAJORITY Endorsement"
        Endorsement:
            Type: ImplicitMeta
            Rule: "MAJORITY Endorsement"
    # Capabilities配置描述应用层级的能力需求,这里直接引用
    # 前面Capabilities配置段中的ApplicationCapabilities配置项
    Capabilities:
        <<: *ApplicationCapabilities

4 Orderer 排序节点配置部分

Orderer配置段用来定义要编码写入创世区块或通道交易的排序节点参数

Orderer: &OrdererDefaults
 
    # Orderer 类型: 要启动的Orderer实现类型
    # 定义order共识机制
    OrdererType: etcdraft
 
    # 地址曾经是Client和peer可以连接到的orderer地址列表。 但是,这不允许client关联orderer地 
    # 址和orderer组织,这对于诸如 TLS 验证之类的事情很有用。 现在,指定订购者地址的首选方法是 
    # 在您的组织定义中包含 OrdererEndpoints 项
    Addresses:
        - orderer0.hmw.com:7050
        - orderer1.hmw.com:7052
        - orderer2.hmw.com:7054
    # 定义了EtcdRaft排序类型被选择时的配置
    EtcdRaft:
        Consenters:
        - Host: orderer0.hmw.com
          Port: 7050
          ClientTLSCert: ../organizations/ordererOrganizations/hmw.com/orderers/orderer0.hmw.com/tls/server.crt
          ServerTLSCert: ../organizations/ordererOrganizations/hmw.com/orderers/orderer0.hmw.com/tls/server.crt
        - Host: orderer1.hmw.com
          Port: 7052
          ClientTLSCert: ../organizations/ordererOrganizations/hmw.com/orderers/orderer1.hmw.com/tls/server.crt
          ServerTLSCert: ../organizations/ordererOrganizations/hmw.com/orderers/orderer1.hmw.com/tls/server.crt
        - Host: orderer2.hmw.com
          Port: 7054
          ClientTLSCert: ../organizations/ordererOrganizations/hmw.com/orderers/orderer2.hmw.com/tls/server.crt
          ServerTLSCert: ../organizations/ordererOrganizations/hmw.com/orderers/orderer2.hmw.com/tls/server.crt
 
    # 区块打包的最大超时时间 (到了该时间就打包区块)
    BatchTimeout: 2s
 
    # 区块打包的最大包含交易数(orderer端切分区块的参数)
    BatchSize:
 
        # 一个区块里最大的交易数
        MaxMessageCount: 10
 
        # 一个区块的最大字节数,任何时候都不能超过
        AbsoluteMaxBytes: 99 MB
 
        # 一个区块的建议字节数,如果一个交易消息的大小超过了这个值, 就会被放入另外一个更大的区 
        # 块中
        PreferredMaxBytes: 512 KB
 
    # 参与维护Orderer的组织,默认为空
    Organizations:
 
    Policies:
        Readers:
            Type: ImplicitMeta
            Rule: "ANY Readers"
        Writers:
            Type: ImplicitMeta
            Rule: "ANY Writers"
        Admins:
            Type: ImplicitMeta
            Rule: "MAJORITY Admins"
        # BlockValidation 指定了必须在来自 orderer 的块中包含哪些签名,以便对等方对其进行验# 
        # 证。
        BlockValidation:
            Type: ImplicitMeta
            Rule: "ANY Writers"

5 Channel 通道配置部分 

Channel配置段用来定义要写入创世区块或配置交易的通道参数

Channel: &ChannelDefaults
    # 定义本层级的通道访问策略,推荐路径为 /Channel/<PolicyName> 
    Policies:
        # 谁可能调用'Deliver' API
        Readers:
            Type: ImplicitMeta
            Rule: "ANY Readers"
        # Writes策略定义了调用Broadcast API提交交易的许可规则
        Writers:
            Type: ImplicitMeta
            Rule: "ANY Writers"
        # Admin策略定义了修改本层级配置的许可规则
        Admins:
            Type: ImplicitMeta
            Rule: "MAJORITY Admins"
 
    # 前面Capabilities配置段中的ChannelCapabilities配置项,这里直接引用(Capabilities配置描通道 
    # 层级的能力需求)
    Capabilities:
        <<: *ChannelCapabilities

6 Profiles 配置入口

Profiles配置段用来定义用于configtxgen工具的配置入口。包含联盟(consortium)的配置入口可以用来生成排序节点的创世区块。

Profiles:
    # # TwoOrgsOrdererGenesis用来生成orderer启动时所需的block,用于生成创世区块,名字可以任意
    TwoOrgsApplicationGenesis:
        <<: *ChannelDefaults
        # 指定Orderer系统通道自身的配置信息
        Orderer:
            <<: *OrdererDefaults
            Organizations:
                - *OrdererOrg  # 引用 Orderer 部分的配置 &OrdererDefaults
            Capabilities: *OrdererCapabilities  #引用&OrdererCapabilities
        Application:
            <<: *ApplicationDefaults
            Organizations:
                - *Org1
                - *Org2
            Capabilities: *ApplicationCapabilities

生成创世区块的命令

# 创建创世区块:
configtxgen -profile TwoOrgsApplicationGenesis -outputBlock ./orderer.genesis.block

configtxgen命令执行完成后会在根目录下生成创世块文件orderer.gensis.block

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

几两春秋梦_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值