Hyperledger Fabric原理详解与实战7

本文主要内容如下,爱看不看~

  • Orderer配置
  • Application配置
  • Consortiums配置
  • 生成创世块

接上一篇,继续来看配置文件。

Orderer配置

Orderer配置

再次强调一下,我们现在看到的是系统通道的配置,并不是orderer程序运行的配置。

因为后面运行orderer节点时,还有一个程序的配置,这两者有关系,但是,是不同作用的两个配置。

来看下这些配置的具体含义:

  • OrdererType :2.0版本以上就只有一个选项了,etcdraft。

  • Addresses :声明orderer集群的主机地址和端口,外部访问用。

  • BatchSize :产生新区块的条件,满足下列任意条件就会产生新区块。

    • MaxMessageCount :区块中包含的最大交易数量。
    • AbsoluteMaxBytes :区块中交易数据总量最大值,简单理解就是块容量最大值。如果有单笔交易大小超过该值,会被orderer拒绝。
    • PreferredMaxBytes :收集的交易数据量达到该值时,则产生新块。如果有单笔交易数据大小大于该值,则用一个新的块包含该交易(块中只有这一笔交易)。
  • BatchTimeout :最长出块等待时间,如果超过这个时间还没有满足BatchSize的条件就会产生一个新块。

  • Organizations :管理Order集群的组织。每个组织在Fabric中有一个唯一的MSP标识。

  • EtcdRaft :etcdraft相关配置,包含orderer集群的主机、端口和TLS证书文件路径(集群之间互相访问用)。需要注意的是,服务端和客户端证书都要配置。

  • Capabilities :前文已说明,略。

  • Policies :略。

Note

上述以Batch开头的配置其实是设置Batch的。Batch就是交易的集合,并不是区块。区块里包含一个Batch和其他metadata信息,如区块头部。

所以,区块大小最大值是AbsoluteMaxBytes+metadata大小。

Application配置

Application配置

这是Channel在应用层面的配置,这段配置目前我知道的用途是:定义Channel的成员;还有在创建应用通道时,作为应用通道某些配置的默认值。

看看它的内容先:

  • ACL :前文已说明,至于每一条的具体含义,后面用到相关功能时就明白了。
  • Organizations :Channel的组织成员。
    • Name :每个组织在Fabric中有一个唯一的MSP名称。
    • ID :每个组织在Fabric中有一个唯一的MSP标识,一般跟Name相同。
    • MSPDir :该组织MSP相关文件目录路径。

Consortiums配置

Consortiums配置

组织间可互相组合成一个联盟,联盟在这里定义:

  • BondNetConsortium :联盟名称,可自定义,不重复就行。
  • Organizations : 联盟的成员,前文已提及,略。

在创建应用通道时,初始化通道的成员必须是已定义联盟中的成员。

例如:Consortiums配置中只有一个联盟,它包含了三个组织成员A,B,C。

我现在要创建一个新的应用通道,那这个通道的成员集合只能是(A,B,C)这个集合的子集。可以是AB,ABC ...,不能是ABCD。

生成创世块

配置文件终于讲完了,这么长的配置文件,就为了这一条命令:

configtxgen -profile ForGenesisBlock -channelID system-channel -outputBlock ./system-genesis-block/genesis.block

# 程序默认会读取当前路径下的configtx.yaml作为配置文件。
# 如果配置文件不在当前目录下,可通过FABRIC_CFG_PATH环境变量指定目录路径。
# profile: 指定要使用配置文件中的哪个Profiles下的配置。
# channelID: 指定Channel名称,这次要创建的是系统通道。
# outputBlock: 指定生成的创世块文件路径。
复制代码

执行完后会生成genesis.block文件,这个就是系统通道的创世块啦!

我是 2 流程序员,我们下次再贱!

本文使用 mdnice 排版

我来评几句
登录后评论

已发表评论数()

相关站点

+订阅
热门文章