1.1 导语
- Fabric 的核心模块,核心模块配置信息的管理方式
1.2 Fabric 核心模块
- peer 主节点模块,负责存储区块链数据,运行维护链码
- orderer 交易打包、排序模块
- cryptogen 组织和证书生成模块
- configtxgen 区块和交易生成模块
- configtxlator 区块 交易解 模块
1.3 Fabric 模块的通用选项和命令
-
5个核心模块都是基于命令行的方式运行,必须熟悉这些模块的命令,介绍一下这些通用选项。
-
help 选项
- Available Commands :表示表命 ,包含子命令
- Flags :显示当前命令的参数
- Global Flags :表示全局参数,所有的子命令都可以使用
-
-v ,–version
1.4 Fabric 模块的子命令、选项和配置文件
- Fabric 核心模块的配置信息、由配置文件 命令行选型 环境变量三个部分组成
环境变量〉配置文件〉命令选项
1.4.1 cryptogen
- cryptogen 模块主要用来生成组织结构和账号相关的文件, 任何 Fabric 系统的开发通常都是从 cryptogen 模块开始的 Fabric 项目中,当系统设计完成之后第一项工作就是根据系统的设计来编写 cryptogen 的配置文件,然后通过这些配 文件生成相关的证书文件cryptogen 模块所使用的配置文件是整个 Fabric 项目的基石 下面我们将介绍 cryptogen 模块命令行选项及其使用方式
1.cryptogen 模块命令说明
- cryptogen 模块是通过命令行的方式运行的,一个 cryptogen 命令由命令行参数和配置文件两部分组成,通过执行命 cryptogen --help 可以显示 cryptogen 模块的命令行选项,执行结果如下所示
usage : cryptogen [<flags>] <command> [<args> . . ]
Utility for generating Hyperledger Fabr key material
Flags :
--help
Commands :
help
ge erate
showtemplate
version
cryptogen 模块 共有 4个命令,这 个命令及其作用如下所示
-
help 显示帮助信息
-
generate :根据配置文件生成证书信息
-
showtemplate :显 系统默认 cryptogen 模块配 文件信息
-
version 当前模块的版本号
其中 generate 选项是用来根据配 文件生成 Fabric 系统相关的证书文件
2.cryptogen 模块的配置文件
- cryptogen 模块的配 文件用来描述 要生成的证书文件的特性
上述模板文件定义了一个 or erer 节点,这个 orderer 节点的名字为 or erer, orderer点的根域名为 examp le .com ,主机名为 order 模板文件同时定义了两个组织,两个组织的分别为 orgl org2 ,其中组织 orgl 包含了 个节点和 个用户,组织 orgl节点和2 个用户
3.cyptogen 实例:创建测试配置文件
根据上述 Fabric 系统的基本信息,我们可以编 cryptogen 模块用的配置文件,配置文件的内容如下所示:
测试环境中域名可以随便定义的,但是在正式的生 环境中,域名最好选择已经通过备案的。
- 生成证书文件
cryptogen 模块的 generate 命令可以生成相关的证书文件 命令如下
cryptogen generate --config=/opt/hyperledger/fabricconfig/crypto-config . yaml
--output /opt/hyperledger/fabricconfig/crypto-config
/opt hyperledger fabricconfig 是证 书文件存放目录,也可以是任何具有读写权限的文件夹,但是需妥提前创建
进入 opt hyper!edger fabricconfig crypto config 件夹之后有两个子文件夹,通过命tree -L 显示如下:
-
tree 工具是 Linux 系统中的常用命令,可以显示文件夹中文件的层次结构
-
命令执行成功之后,进入 ordererOrganizations 然后通过命令 往四”L4 显示如下:
4.Fabric 证书文件的结构
cryptogen 模块生成的证书文件就是 Fabric 系统运行所需要的证书文件,接下来我们将详细介绍这些证书文件的种类和作用 进入文件夹 peerOrganizations 后执行命令 tree -L 1, 命令结果如下所示:
三个子文件和描述的组织的对应关系
文件夹 orgl .qklszzn.com 行命令 tree -L5 显示如下:
- cryptogen模块生成的证书是 Fabric 系统的重要组成部分,是所有Fablic系统的开始。
1.4.2 configtxgen
1.configtxgen模块的命令
- configtxgen 模块用来生成 orderer 的初始化文件和 channel 的初始化文件 configtxgen模块包含如下子命令选项:
• asOrg 所属的组织
• channe!ID : chann 名字,如果没有系统会提供 个默认值
• inspectBlock :打印制定区块文件中的配置内容
• inspectChanne!CreateTx :打印创建通道的交易的配置文件
• outputAnchorPeersUpdate 更新 channel 配置信息
• outputBlock :输出区块文件的路径
• outputCreateChanne!Tx :标示输出创始块文件
• profile :配置文件的节点
• version 显示版本信息
2.configtxgen 模块的配 文件
configxgen 模块的配 置文件包含 Fabric 系统初始块 Channel 初始块文件等信息.
configtxgen 模块配置文件的样例如下所示:
(注释:缺失)
- Profiles节点详解:Profiles 点定义了整个系统的结构和 channel 的结构,配置文件中
Profiles 关键字不允许更改 ,否则配置无效。 系统配置信息 中设置了系统中 orderer 节点
的信息以及系统中包含的组织数
3.configtxgen 典型的应用场景
- 创建orderer的初始块
- 创建 channel 初始块
- 创建锚点更新文件
1.4.3 configtxlator
configtxator 模块可以把区块链的二进制文件转化 JSON 格式的文件,便于我们阅和理解.
含有三个命令,configtxlator–help
其中start命令包含两个参数:
-
configtxlator 是一个RESTAPI服务的形式提供服务的,可以通过标准的http请求来访问 configtxlator
-
configtxlator 启动示例
-
conf gtxlator start --hostname=O 0 . 0 . 0 --port=
-
configtxlator的REST服务提供了解码,编码,计算配置更新,交易打包 四个功能 (下面请确保curl已经安装好了)
- 解码
curl -X POST --data-binary @configurat on block.block http :ll127. 0 . 0 . 1 : 7059/
protolator/decode/commo Block> . /configuration_ block . json
- 编码
curl -X POST --data-binary @updated onfig . json http :ll127 . 0 . 0 . 1 : 7059/
protolator/encode/commo Config > updated_con f 工 . pb
上述命令将json格式的配置文件pdated_config.json转化成区块链文件updateconfig.pb
3.计算配置更新量
4.交易打包
1.4.4 orderer
- order 模块负责对交易进行排序,并将排好序的交易打包成区块
- 命令
- help 显示帮助信息
- start *启动 orderer 节点
- version 显示版本信息
- Show vers on information
- benchmark 采用基准本模式运行 orderer
2.配置信息
orderer 模块配置信息可以用环境变量或者配置文件的方式来配置。
环境变量配置:
export set ORDERER_GENERAL_LOGLEVEL=debug
export set ORDERER_GENERAL_LISTENADDRESS=0 . 0 . 0 . 0
export set ORDERER_GENERAL_LISTENPORT=7050
export set ORDERER_GENERAL GENESISMETHOD=file
export set ORDERER GENERAL GENESISFILE=/opt/hyperledger/order/orderer . genesis .
block
export set ORDERER GENERAL_LOCALMSPID=OrdererMSP
export set ORDERER_GENERAL_LOCALMSPDIR=/opt/hyperledger/fabr cconfig/crypto-config/
ordererOrgan zat ons/qklszzn.com/orderers/orderer qklszzn com/msp
export set ORDERER_GENERAL_ LEDGERTYPE=file
export set ORDERER_GENERAL BATCHTIMEOUT=10s
export set ORDERER_GENERAL_MAXMESS.l\GECOUNT= 10
export set ORDERER_GENERAL_TLS ENABLED= false
export set ORDERER_GENERAL_TLS_ PRIVATEKEY=/opt/hyperledger/fabricconfig/crypto
config/ordererOrganizations/qklsz com/ /orderer . qklsz com/tls/server key
export set ORDERER_GENERAL_TLS_ CERTIFICATE=/opt/hyperledger/fabricconfig/
crypto-co f 工 g/ordererOrganizations/qklszzn com/orderers/orderer qklszzn com/tls/
server crt
export set ORDERER_GENERAL_TLS_ ROOTCAS= [I opt /hyper ledger If abr cconfig/cryptoconf g/ordererOrganizations/qklszzn com/orderers/orderer qklszzn .c om/tls/ca crt)
orderer模块配置文件:
3.orderer模块配置文件详解
orderer模式的配置文件功5部分,
- Genera
- FileLedger
- RAMLedger
- Kafka
- Debug
1. General节点配置
General 节点中包含了 orderer 模块的基本控制信息
配置项:
LedgerType :账本的类型,有 ram json file 种类型可以选择 ram 表示账本的数据保存在内存中, 般用于测试环境 json file 表示账本数据保存在文件中,在生产环境中 般推荐使用 file
• enAddress : ord rer 服务器监昕的地址,如果服务器有多个网卡, 般需要指明
监听的具体地址
• ListenPort 监听端口
• Enabled 启用 TLS 时的相关配
• PrivateKey 私钥文件
• Certificate :证书文件
• RootCAs :根证书文件
• ClientAuthEnabled :启用客户端证书验证
• ClientRootCAs :客户端根证书
• LogLevel :日志级别
• LogFormat :日志格式
GenesisMethod :初始块的来源方式,支持 provisional file, provisional 表示 GenesisProfile 选项指定的内容在默认的配 文件中的配置是自动生成的,后者使用 GenesisFile指定的现成初始的文件
GenesisProfile :初始块的 profile ,在 configtxgen 模块的配置文件中指
• GenesisF 巳:初始块文件的路
• LocalMSPDir: orderer 模块 msp 文件的路
• LocalMSPID: orderer 模块 编号,在 configtxgen 模块的配置文件中指
• Enabled :是否启动 go profile 信息
• Address: go profile 信息的访问地址
• efault :采用的密码机制, SW 为软件程序实现, PKCSll 为硬件的 方式
• Hash 算法类型
2.FileLedger节点配置
FileLedger 节点中包含了 ordrerer 模块中账本文件相关的配置信息
配置项
• Location :账本文件的路径
• Prefix :账本存放在临时 目录时候的目 录名 ,如果已经指定了 Location 值, 则该选项无效
3.RAMLedger节点配置
RAMLedger 节点中包含了 rderer 模块的账本在内存中数据保存方式的相 配置信息
配置项
• storySize :如果 Ledg rType 类型为 RAM 时内存中保存的区块的数目, 超过这个数目的区块将被放弃
4.Kafka节点配置
Kafka 节点中包 orderer 模块中连接 Kafka 关的信息,注意 :如 果ordrer节点的排序模式选择了solo 那么该节点的所有配均无效.
配置项
• Retry:如果 orderer 在启动的时候, Kafka 还没有启动或者 Kafka 若机时重试的次数
• Shortlnterval :操作失败短重试状态下重试的时间间隔
• ShortTotal :短重试状态下最多重试的时间
• Longlnterval :长 试状 下重试的时间间隔
• LongTotal :长 试状态下 多重试时间
• DialTimeout 等待超时时间
• ReadTimeout 超时时间
• WriteTimeout 超时时间
• RetryBackoff: Kafka 集群选举 leader 的元数据
• RetryMax: Kafka 群选举 leader 元数据
• RetryBackoff 者消息超时时间
• Verbose : Kafka 户端的日志级别,在 orderer 的运行日志中显示 Kafka 的日志信息
• Enabled :是否启动 TLS
• PrivateKey :私钥前面
certificate: Kafka 的证书
rootCAs :验证 Kafka 的根证书
version: Kafka 的版本号
5.Debug节点配置
Debug 节点中包含了 orderer 模块调试相关的选项