Hyperledger Fabric 配置文件解析——configtx.yaml

这篇具有很好参考价值的文章主要介绍了Hyperledger Fabric 配置文件解析——configtx.yaml。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

提示:个人学习Hyperledger Fabric 的个人笔记,也是摸石头过河,借鉴前人的经验来提高自己。

借鉴:Hyperledger Fabric配置文件解析(二)——configtx.yaml_TLpigff的博客-CSDN博客_configtx.yaml

目录

一、configtx.yaml简介

二、configtx.yaml分析主要配置如下

2.1 Organizations部分

2.2 Capabilities 通道能力配置部分 

2.3 Application 应用通道配置部分

 2.4 Orderer 排序节点配置部分

 2.5 Channel 通道配置部分 

 2.6 Profiles 配置入口 

三、使用命令 


一、configtx.yaml简介

transaction的英文缩写是TX(表示交易),configtx表示交易配置,所以和交易相关的配置,如应用通道、锚节点、Orderer服务等,都是在configtx.yaml文件中配置的。它主要生成通道创世区块${CHANNEL_NAME}.block。

主要用到以下语法:

符号 含义
<< 合并到当前数据
- 数组
* 别名
& 锚点

二、configtx.yaml分析主要配置如下

2.1 Organizations部分

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

MSP(Membership Service Provider)是一个组织的身份标识,在Fabric中组织是由MSP来唯一标识的;

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.2 Capabilities 通道能力配置部分 

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

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

因此,通过定义通道的能力,就明确了不满足该能力要求的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

2.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

 2.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"

 2.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

 2.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

三、使用命令 

使用下面命令生成通道创世区块文章来源地址https://www.toymoban.com/news/detail-698217.html

# 创建创世区块:生成创世区块mychannel.block文件,根据配置文件../configtx/configtx.yaml来创建Orderer系统通道的创世块
configtxgen -profile TwoOrgsApplicationGenesis -outputBlock ./channel-artifacts/${CHANNEL_NAME}.block -channelID $CHANNEL_NAME

到了这里,关于Hyperledger Fabric 配置文件解析——configtx.yaml的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Hyperledger Fabric 生成组织身份解析

    fabric 版本 2.4.1 Fabric 网络通过证书和密钥来管理和认证成员身份,经常需要生成证书文件。通常这些操作可以使用 PKI 服务(如 Fabric-CA)或者 OpenSSL 工具来实现(针对单个证书的签发)。为了方便批量管理组织证书,Fabric 基于 Go 语言的标准 crypto 库提供了 cryptogen (crypto ge

    2024年01月22日
    浏览(29)
  • hyperledger fabric 交易结构以及解析

    Fabric 1.0源代码分析(43) Tx(Transaction 交易)_yinchengmvp的技术博客_51CTO博客 Hyperledger Fabric的区块结构 交易结构Hyperledger Fabric区块和交易结构解析_51CTO博客_区块链 hyperledger fabric

    2024年02月12日
    浏览(33)
  • 万字解析——区块链hyperledger fabric2.2部署实战教程

    本教程在ubuntu20版本下运行,请在执行操作前先部署ubuntu20环境,所有部署都按照官方文档hyperledger fabric进行,在运行过程中遇到的问题,我也会逐个说明,如果你对于区块链还不太了解,请先查阅区块链概念,文中若有理解不对的地方,欢迎批评指正。 Hyperledger Fabric 是 Hy

    2024年02月03日
    浏览(41)
  • Hyperledger Fabric 安装环境配置答疑(1)

    目录 1.Hyperledger Fabric只支持Ubuntu系统吗? 2.cURL是什么?有什么作用? 3.为什么要安装Docker及docker-compose? 4.能否不使用Golang而换作其他语言环境? 5.一定要安装Node与npm吗? Hyperledger Fabric支持常见的Linux相关系统(如Debian、Cent OS等)和Mac OS。由于不同操作系统或各系统的不同版本

    2024年02月11日
    浏览(40)
  • Ubuntu系统下配置安装区块链Hyperledger Fabric(新手小白篇)

    有些安装过程比较简单的,不会详细赘述。主要还是集中在Hyperledger Fabric的配置上。 本篇主要介绍在Ubuntu系统上安装Hyperledger Fabric的过程。这里使用的Ubuntu:16.04 LTS。 1. Git安装 Git工具安装命令如下: 可以使用如下命令检测是否安装成功。如果能返回git版本信息,则说明正确

    2024年02月05日
    浏览(39)
  • Hyperledger Fabric网络环境手动配置及其链码自动化部署

    目录 5.1 网络环境的搭建 5.1.1 生成组织结构与身份证书 5.1.2 生成创世区块和通道 5.1.3 启动Fabric网络 5.1.4  创建Fabric-SDK-GO对象并建立通道 5.1.5  Fabric-SDK-Go实现链码的自动部署 5.2 链码实现 5.1.1 生成组织结构与身份证书 Hyperledger Fabric框架通过采用大量的证书确保系统交易(签名

    2023年04月22日
    浏览(56)
  • Linux搭建Hyperledger Fabric区块链框架 - Hyperledger Fabric模型概念

    2015年,Linux基金会启动了Hyperledger项目,目标是发展跨行业的区块链技术。 Hyperledger Fabric是Hyperledger中的一个区块链项目,包含一个账本,使用智能合约并且是一个通过所有参与者管理交易的系统。 Hyperledger Fabric 是分布式账本解决方案的平台,以模块化架构为基础,支持不同

    2023年04月08日
    浏览(49)
  • 【Fabric学习】什么是HyperLedger Fabric?

    本文总结自 Fabric官方文档 ,描述了Fabric产生的背景、特性、主要组件。 区块链 是不可更改的交易账本,由同等节点(peer nodes)组成的分布式网络来维护。 比特币:第一个使用区块链的应用; 以太坊:引入 智能合约 来开发分布式应用。 二者都是 公有链 ( public / permissi

    2024年01月19日
    浏览(49)
  • 【Hyperledger Fabric 学习】运行一个Fabric应用

    中文网址:https://hyperledger-fabric.readthedocs.io/zh_CN/latest 英文网址:https://hyperledger-fabric.readthedocs.io/en/latest 一般情况英文网址的内容更全面,版本也比中文新。 本教程介绍了 Fabric 应用程序如何与已部署的区块链网络进行交互。本教程使用使用 Fabric Gateway 客户端 API 构建的示例

    2023年04月08日
    浏览(70)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包