1.简介
configtx.yaml用来配置通道,以定于各项通道行为,其中包括了全局配置、排序配置、应用配置等多个层级。
fabric可以使用配置交易来管理网络中配置,配置交易和普通交易一样在通道中共识,完成对通道配置的更新。fabric提供了configtxgen工具生成和管理这些配置交易。
configtx.yaml中涉及语法
符号 | 含义 |
<< | 合并到当前数据 |
- | 数组 |
* | 别名 |
& | 锚点 (方便引用) |
2. 官方示例configtx.yaml分析
配置文件包含了Organizations、Capabilities、Channel、Orderer、Application、Profiles
2.1 Organizations 部分
组织的结构定义,包括名称、MSP路径、读写管理权限、锚节点等,可被Profiles等部分引用。
# 官方提供了一个简单模板
Organizations:
# 组织类型
- &SampleOrg
# 组织名称
Name: SampleOrg
# 在创建新通道时是否从系统通道内继承该组织,configtxgen会忽略从本地读取。
SkipAsForeign: false
# MSPID
ID: SampleOrg
# MSP文件路径
MSPDir: msp
# /Channel/<Application|Orderer>/<OrgName>/<PolicyName>
# 定义本层级的组织策略
Policies: &SampleOrgPolicies
Readers:
Type: Signature
Rule: "OR('SampleOrg.member')"
#如果MSP配置了新的NodeOU,您可能需要使用一个更具体的规则,
# 如下所示:规则:“OR('SampleOrg.admin','SampleOrg.peer','SimpleOrg.client')”
Writers:
Type: Signature
Rule: "OR('SampleOrg.member')"
Admins: # 管理角色
Type: Signature
Rule: "OR('SampleOrg.admin')"
Endorsement: # 背书角色
Type: Signature
Rule: "OR('SampleOrg.member')"
OrdererEndpoints: # 排序节点地址列表
- "127.0.0.1:7050"
# 锚节点的定义,用来跨组织通信。
# 注意:仅在使用“configtxgen--outputAnchorPeersUpdate”命令时才应设置此值。
# 建议改为使用channel配置更新过程为每个组织设置锚对等点。(configtxgen更新)
AnchorPeers:
- Host: 127.0.0.1
Port: 7051
2.2 Capabilities 部分
Capabilities通过引用定义了一系列网络特性,不同版本要求版本不一样,直接官方示例配置拉取无需更改。
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
# 仅适用于orderers 并且可以安全地与先前版本的peers一起使用。
Orderer: &OrdererCapabilities
V2_0: true
# 应用程序功能仅适用于peer网络,并且可以安全地与先前发布的orderer一起使用。
Application: &ApplicationCapabilities
V2_0: true
2.3 Application 部分
Application: &ApplicationDefaults
ACLs: &ACLsDefault
#本节提供系统中各种资源的策略的默认值。
#这些“资源”可以是系统链码上的函数(例如,“qscc”系统链码中的“GetBlockByNumber”)或其他资源(例如,可以接收块事件的资源)。
# 本节不指定资源的定义或API,只指定其ACL策略。
# 用户可以通过在其通道定义中的ACL下定义映射,使用自己的策略映射覆盖这些默认值
#指定新的_lifecycle系统链码的提交、查询方法的默认策略
_lifecycle/CheckCommitReadiness: /Channel/Application/Writers
_lifecycle/CommitChaincodeDefinition: /Channel/Application/Writers
_lifecycle/QueryChaincodeDefinition: /Channel/Application/Writers
_lifecycle/QueryChaincodeDefinitions: /Channel/Application/Writers
# LSCC方法调用权限 1.x版本生命周期系统链码(LSCC)
lscc/ChaincodeExists: /Channel/Application/Readers
lscc/GetDeploymentSpec: /Channel/Application/Readers
lscc/GetChaincodeData: /Channel/Application/Readers
lscc/GetInstantiatedChaincodes: /Channel/Application/Readers
# QSCC方法调用权限 查询系统链码(QSCC)
# 根据通道名称获取最新的区块链信息