configtx.yaml 配置文件解析
YAML 语言语法
首先需要了解 YAML 语言的语法。可以参考<<YAML 语言教程>>
configtx.yaml主要用到了以下语法:
符号 | 含义 |
---|---|
<< |
合并到当前数据 |
- |
数组 |
* |
别名 |
& |
锚点 |
configtx.yaml 分析
configtx.yaml文件开头部分,主要配置项如下:
<code class="language-yaml hljs haml has-numbering">Profiles: TwoOrgsOrdererGenesis: Orderer: <<: *OrdererDefaults Organizations: -<span class="ruby"> *<span class="hljs-constant">OrdererOrg</span> </span> Consortiums: SampleConsortium: Organizations: -<span class="ruby"> *<span class="hljs-constant">Org1</span> </span> -<span class="ruby"> *<span class="hljs-constant">Org2</span> </span> TwoOrgsChannel: Consortium: SampleConsortium Application: <<: *ApplicationDefaults Organizations: -<span class="ruby"> *<span class="hljs-constant">Org1</span> </span> -<span class="ruby"> *<span class="hljs-constant">Org2</span></span></code>
结构如下:
TwoOrgsOrdererGenesis
用来配置创世区块信息,TwoOrgsChannel
来配置初始交易信息。
TwoOrgsOrdererGenesis
配置项
传入 profile 参数的值为TwoOrgsOrdererGenesis
<code class="language-shell hljs lasso has-numbering">configtxgen <span class="hljs-attribute">-profile</span> TwoOrgsOrdererGenesis <span class="hljs-attribute">-outputBlock</span> <span class="hljs-built_in">.</span>/channel<span class="hljs-attribute">-artifacts</span>/genesis<span class="hljs-built_in">.</span>block</code>
定义两个东西:一个是Orderer
,另外一个是Consortiums
。
因为生成创世区块需要以下信息:
- Orderer 信息
- 联盟信息
对于有一个 Orderer,有两个组织 Org1 和 Org2
Orderer 配置
配置参数名 | 含义 |
---|---|
OrdererType | 类型 solo 或者 kafka |
Addresses | Orderer 地址 |
BatchTimeout | 区块生成超时时间 |
MaxMessageCount | 区块消息数量 |
AbsoluteMaxBytes | 区块绝对最大字节数 |
PreferredMaxBytes | 建议消息字节数。(暂时没有理解该字段,需翻源代码) |
Brokers | kafka 地址 |
组织配置
配置参数名 | 含义 |
---|---|
Name | 组织名称 |
ID | MSP ID |
MSPDir | msp 目录(关于 MSP 这块后续单独说明) |
AnchorPeers | 该组织的锚节点 |
TwoOrgsChannel
和TwoOrgsOrdererGenesis
差不多,不再说明。