Python微信订餐小程序课程视频
https://blog.csdn.net/m0_56069948/article/details/122285951
Python实战量化交易理财系统
https://blog.csdn.net/m0_56069948/article/details/122285941
摘要
Fabric 网络启动的过程中需要进行大量配置,新学时对各个配置的作用一无所知,这导致我曾在网络出问题时先对配置文件的内容进行排列组合后再祈祷它能在某个时刻顺利运行,因此掌握 fabric 各个配置项的含义至关重要。本文对 configtxgen 的配置文件 configtx.yaml 进行了详细的分析解释,对 peer 、 orderer 、 fabric-ca 容器的常用环境变量也给除了详细说明,其中某些配置由于比较罕见因此并没有展开介绍,直接使用默认值即可,会在将来用上时再更新。
准备介绍
Fabric 节点的主配置路径为 FABRIC_CFG_PATH
环境变量所指向路径(默认为/etc/hyperledger/fabric
)。在不显式指定配置路径时,会尝试从主配置路径下查找相关的配置文件。
项 | 配置文件路径 | 说明 |
---|---|---|
peer |
$FABRIC_CFG_PATH/core.yaml |
指定 peer 节点运行时参数 |
orderer |
$FABRIC_CFG_PATH/orderer.yaml |
指定 orderer 节点运行时参数 |
fabric-ca |
$FABRIC_CA_SERVER_HOME/fabric-ca-server-config.yaml |
指定 CA 节点运行时参数 |
configtxgen |
$FABRIC_CA_SERVER_HOME/configtx.yaml |
指定 configtxgen 命令运行时参数 |
通常 fabric 服务有两种启动方式,一种是直接通过二进制命令直接在主机根据配置文件启动节点,另一种是使用docker根据环境变量和默认配置文件启动节点,其中除了 configtxgen
必须使用配置文件外,其余各服务都可以通过 docker 启动。因此本文将重点介绍 configtxgen
的配置文件及其它服务的 docker 环境变量。
configtx.yaml 详解
transaction 的英文缩写是TX(表示交易), configtx 表示交易配置,所以和交易相关的配置,如应用通道、锚节点、 Orderer 服务等,都是在 configtx.yaml文件中配置的。 configtx.yaml 文件由6个部分组成,其中前5个部分的配置都是为了在 Profiles 被引用,在 Profiles 中引用其它部分的同时可以覆盖特定配置,本节示例文件来自于 configtx.yaml。[1] [2]
Organizations
Organizations
用来定义不同的组织,其中 MSP(Membership Service Provider) 是一个组织的身份标识,在fabric中组织是由 MSPID
来唯一标识。
Organizations:
- &councilMSP # 定义一个组织引用,类似于变量,可在Profile部分被引用;所有带 & 符号的都是引用变量,使用 * 来引用
Name: councilMSP # 组织名称
ID: councilMSP # 组织ID
MSPDir: ../orgs/council.ifantasy.net/msp # 组织MSP文件夹的路径
Policies: # 组织策略
Readers:
Type: Signature
Rule: "OR('councilMSP.member')"
Writers:
Type: Signature
Rule: "OR('councilMSP.member')"
Admins:
Type: Signature
Rule: "OR('councilMSP.admin')"
# 此文件内的Orderer端口皆为容器内端口
OrdererEndpoints: # 定义排序节点(可多个),客户端和对等点可以分别连接到这些orderer以推送transactions和接收区块。
- "orderer1.council.ifantasy.net:7051"
- "orderer2.council.ifantasy.net:7054"
- "orderer3.council.ifantasy.net:7057"
AnchorPeers: # 定义锚节点,锚节点对外代表本组织通信
- Host: peer1.soft.ifantasy.net
Port: 7251
Capabilities
Capabilities
定义了 fabric 程序要加入网络所必须支持的特性,通过定义通道的能力,就明确了不满足该能力要求的 fabric 程序,将无法处理交易,除非升级到对应的版本。
Capabilities:
# Channel配置同时针对通道上的Orderer节点和Peer节点(设置为ture表明要求节点具备该能力);
Channel: &ChannelCapabilities
V2\_0: true # 要求Channel上的所有Orderer节点和Peer节点达到v2.0.0或更高版本
# Orderer配置仅针对Orderer节点,不限制Peer节点
Orderer: &OrdererCapabilities
V2\_0: true # 要求所有Orderer节点升级到v2.0.0或更高版本
# Application配置仅应用于对等网络,不需考虑排序节点的升级
Application: &ApplicationCapabilities
V2\_0: true
Application
Application
定义了应用内的访问控制策略和参与组织。
Application: &ApplicationDefaults
# 干预 创建链码的系统链码 的函数访问控制策略
\_lifecycle/CheckCommitReadiness: /Channel/Application/Writers # CheckCommitReadiness 函数的访问策略
\_lifecycle/CommitChaincodeDefinition: /Channel/Application/Writers # CommitChaincodeDefinition 函数的访问策略
\_lifecycle/QueryChaincodeDefinition: /Channel/Application/Writers # QueryChaincodeDefinition 函数的访问策略
\_lifecycle/QueryChaincodeDefinitions: /Channel/Application/Writers # QueryChaincodeDefin