Fabric 各种配置文件梳理(一)

Fabric 各种配置文件梳理(一),第1张

Fabric 各种配置文件梳理(一) 1.core.yaml : Peer节点的示例配置文件,有六个部分(会随版本变化略加改动)

日志部分:指定模块日志级别peer部分:Peer服务核心配置内容vm部分:配置链码运行的环境,比如Docker容器链码部分:链码相关配置ledger部分:分类账本配置信息metrics(指标)部分:系统性能度量框架 2.orderer.yaml :Orderer节点示例配置文件

General部分 :配置文件的基础配置信息部分FileLedge部分:如果指定分类账本类型为文件类型,则通过该部分配置文件账本的相关信息RAMLedge:指定内存账本类型区块最大数量Kafka:Kafka排序服务的配置信息指定Debug:主要指定广播服务与交付服务的请求保存目录 3.crypto-config.yaml : 指定整个网络中相关组织的详细信息(2.x版本后分成了三个yaml文件)生产组织结构及身份z书所需配置文件

 OrdererOrgs:
  - Name: Orderer
    Domain: example.com     #域名
    EnableNodeOUs: true
    Specs:
      - Hostname: orderer      #hostname+Domain的值组成Orderer节点完整域名
        SANS:
          - localhost

PeerOrgs:
  - Name: Org1
    Domain: org1.example.com  #完整域名:peer0.org1.example.com
    EnableNodeOUs: true     #在msp下生产config.yaml文件
    Template:
      Count: 1                #指定节点数量
      SANS:
        - localhost
    Users:
      Count: 1                #指定用户数

PeerOrgs:
  - Name: Org2
    Domain: org2.example.com
    EnableNodeOUs: true
    Template:
      Count: 1
      SANS:
        - localhost
    Users:
      Count: 1

4.config.tx : 生产创世区块(GenesisBlock)与通道(Channel)所需配置文件。如指定orderer服务的相关配置,以及当前的联盟信息、联盟中所属包含的组织信息,这些信息的配置被定义在该文件中。

configtx文件主要用于生成创世区块、创建通道配置交易和创建锚节点更新配置交易(配置交易是Fabric中交易的一种,它可以被order节点解析并用来配置order节点)。

configtx.yaml文件分为几大section:Organizations, Capabilities, Application,  Orderer, CHANNEL, Profile。 

##################################################################

#   Section: Organizations

##################################################################

Organizations:  #指定OrdererOrg和PeerOrg的权限信息
    - &OrdererOrg
        Name: OrdererOrg
        ID: OrdererMSP
        MSPDir: ../organizations/ordererOrganizations/example.com/msp
        Policies:
            Readers:
                Type: Signature
                Rule: "OR('OrdererMSP.member')"
            Writers:
                Type: Signature
                Rule: "OR('OrdererMSP.member')"
            Admins:
                Type: Signature
                Rule: "OR('OrdererMSP.admin')"
        OrdererEndpoints:
            - orderer.example.com:7050
    - &Org1
        Name: Org1MSP
        ID: Org1MSP
        MSPDir: ../organizations/peerOrganizations/org1.example.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.example.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')"

##################################################################

#   SECTION: Capabilities 

#Capabilities配置段,capability直接翻译是能力,这里可以理解为对Fabric网络中组件版本的控制, 通过版本进而控制相应的特性。新更新的特性旧版本的组件不支持, 就可能无法验证或提交transaction从而导致不同版本的节点上有不同的账本,因此使用Capabilities来使不支持特性的旧组件终止处理transaction直到其更新升级Channel表示orderers和peers同时都要满足,Orderer只需要orderers满足,Application只需要peers满足即可。

##################################################################

Capabilities:   #指定通道的权限信息

    Channel: &ChannelCapabilities

        V2_0: true    //通道版本号

    Orderer: &OrdererCapabilities

        V2_0: true    //orderer版本

    Application: &ApplicationCapabilities

        V2_0: true    //应用版本

##################################################################

#   SECTION: Application    应用程序 

#Application配置段用来定义要写入创世区块或配置交易的应用参数。
# Application配置段,一些和应用有关的将会编进创世区块或配置transaction的应用相关的参数,其中 organizations:在此处不进行配置,在后面profiles配置段中,根据需要生成的文件类型进行配置。

##################################################################

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:

        <<: *ApplicationCapabilities

##################################################################

#      SECTION: Orderer   排序节点

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

##################################################################

Orderer: &OrdererDefaults   #指定Orderer节点的信息

    OrdererType: etcdraft     //排序算法

    Addresses:

        - orderer.flight.com:7050    //排序节点地址与端口号

    EtcdRaft:      //raft共识配置

        Consenters:

        - Host: orderer.flight.com

          Port: 7050

          ClientTLSCert: ../organizations/ordererOrganizations/flight.com/orderers/orderer.flight.com/tls/server.crt        //客户端TLS认证路径

          ServerTLSCert: ../organizations/ordererOrganizations/flight.com/orderers/orderer.flight.com/tls/server.crt        //服务器端TLS认证路径

    BatchTimeout: 2s     //批处理超时时间

    BatchSize:         //与消息相关的批处理大小

        MaxMessageCount: 10   //一个区块最大交易数

        AbsoluteMaxBytes: 99 MB    //一个区块最大字节数

        PreferredMaxBytes: 512 KB  //一个区块的建议字节数(若超过,放入更大的区块)

    Organizations:

    Policies:

        Readers:

            Type: Implicitmeta

            Rule: "ANY Readers"

        Writers:

            Type: Implicitmeta

            Rule: "ANY Writers"

        Admins:

            Type: Implicitmeta

            Rule: "MAJORITY Admins"

        BlockValidation:       //块验证条件

            Type: Implicitmeta

            Rule: "ANY Writers"

##################################################################

#   CHANNEL   通道部分 本节定义了将代码编码为与通道相关的参数的配置事务或生成块的值。

##################################################################

Channel: &ChannelDefaults          # 定义本层级的通道访问策略

    Policies:

        Readers:        //可以invoke “deliver”API的

            Type: Implicitmeta

            Rule: "ANY Readers"

        Writers:         //可以invoke “broadcast”API的

            Type: Implicitmeta

            Rule: "ANY Writers"

        Admins:       # 默认情况下,谁可以在此配置级别上修改元素

            Type: Implicitmeta

            Rule: "MAJORITY Admins"

    Capabilities:      # Capabilities配置描通道层级的能力需求,这里直接引用

        <<: *ChannelCapabilities

##################################################################

#   Profile#    自定义配置部分 

#   profiles配置段相当于configtxgen工具的统一入口,通过设置不同的configtxgen -profile参数决定要使用 configtxgen生成什么文件,profiles配置段通过使用上面准备好的配置段来根据需要配置不同的文件(虽然可以显示配置但是最好采用引用默认配置的方式,有封装的意思)。

##################################################################

Profiles:         //这个部分按照项目角色来更改

     TwoOrgsApplicationGenesis:    #组织定义标识符,可自定义,命令中的 -profile参数二者要保持一致
        <<: *ChannelDefaults              # 引用为 ChannelCapabilities 的属性
        Orderer:                          # 配置属性,系统关键字,不能修改
            <<: *OrdererDefaults          # 引用为 OrdererDefaults 的属性
            Organizations:
                - *OrdererOrg             # 引用为 OrdererOrg 的属性
            Capabilities:
                <<: *OrdererCapabilities
        Consortiums:                      # 定义了系统中包含的组织
            SampleConsortium:
                Organizations:            # 系统中包含的组织
                    - *Org1               # 引用了下文包含的配置
                    - *Org2
    TwoOrgsChannel:                       # 通道定义标识符,可自定义
        Consortium: SampleConsortium
        <<: *ChannelDefaults                
        Application:
            <<: *ApplicationDefaults
            Organizations:
                - *Org1
                - *Org2
            Capabilities:
                <<: *ApplicationCapabilities
 

  configtxgen --help 
  # 输出创始块区块文件的路径和名字
  `-outputBlock string`
  # 指定创建的channel的名字, 如果没指定系统会提供一个默认的名字.
  `-channelID string`
  # 表示输通道文件路径和名字
  `-outputCreateChannelTx string`
  # 指定配置文件中的节点
  `-profile string`
  # 更新channel的配置信息
  `-outputAnchorPeersUpdate string`
  # 指定所属的组织名称
  `-asOrg string`

 生成创始块文件,其中-profile后面对应的是我们在前面配置文件中所定义的名称,-outputBlock指定生成的创世块文件路径以及名称,-channelID为通道的名称(通道的名称随意起,但是注意要与下面生成通道文件时的通道名称不同)。使用以下命令在当前目录下的channel-artifacts目录下得到一个文件genesis.block。

configtxgen -profile TwoOrgsApplicationGenesis -outputBlock ./channel-artifacts/genesis.block -channelID fabric-channel

生成通道文件,其中-profile后面对应的是我们在前面配置文件中所定义的名称,-outputBlock指定生成的通道文件路径以及名称,-channelID 为通道的名称。通道的名称随意起,但是注意要与上面生成创世块文件时的通道名称不同)。使用以下命令在当前目录下的channel-artifacts目录下得到一个文件channel.tx。

configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/channel.tx -channelID mychannel

生成锚节点更新文件,其中-profile后面对应的是我们在前面配置文件中所定义的名称,-outputBlock指定生成的锚节点文件路径以及名称,-channelID为通道的名称(要与上面生成通道文件时的通道名称相同)。使用以下命令在当前目录下的channel-artifacts目录下得到一个文件Org1MSPanchors.tx。

configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org1MSPanchors.tx -channelID mychannel -asOrg Org1MSP

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5704165.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-18

发表评论

登录后才能评论

评论列表(0条)

保存