提示:个人学习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。
主要用到以下语法:
符号 | 含义 |
<< | 合并到当前数据 |
- | 数组 |
* | 别名 |
& | 锚点 |
组织配置,用来定义不同的组织机构实体,以便后续配置中引用。例如以下配置文件中,定义了三个机构: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///
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/
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
三、使用命令
使用下面命令生成通道创世区块
# 创建创世区块:生成创世区块mychannel.block文件,根据配置文件../configtx/configtx.yaml来创建Orderer系统通道的创世块
configtxgen -profile TwoOrgsApplicationGenesis -outputBlock ./channel-artifacts/${CHANNEL_NAME}.block -channelID $CHANNEL_NAME
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)