Fabric账本创始块的生成

Fabric是基于区块链的分布式账本,每个账本都拥有自己的区块链,账本的区块链中会存储账本的交易数据,但账本区块链中的第一个区块是个例外,该区块不存储交易数据而是存储配置信息,通常将账本的第一个区块称为创始块。综上所述,Fabric中账本的第一个区块是需要手动生成的。configtxgen模块是专门负责生成系统的创始块和Channel(Fabric中的Channel就是账本,关于Channel的概念在本书的后续章节会介绍)的创始块。configtxgen模块也需要一个配置文件来定义相关的属性。

下面是在Fabric源码中提供的configtxgen模块所需要的配置文件的例子。该文件的路径是$GOPATH/src/github.com/hyperledger/fabric/sampleconfig,在这个目录下面有一个名为configtx.yaml的文件,对这个文件进行修改即可使用。由于创始块文件是提供给Orderer节点使用,因此我们创建一个文件夹来存储Oderer节点相关的文件。创建之后再把样例配置文件复制到该文件夹中。

创建存放configtxgen模块相关配置文件的文件夹的命令如下所示。

blob.png

对configtx.yaml进行修改,修改后的内容如下所示:

blob.png

blob.png

本文的主要目的是帮助读者快速了解Fabric的开发过程,对Fabric的5个子模块的使用方法和相关参数没有进行详细说明,在后面会详细介绍这些模块的使用方法

配置文件修改完成之后执行如下命令生成创始块文件。

blob.png

上述命令执行完成之后会在文件夹/opt/hyperledger/order中生成 文件orderer.genesis.block。这是Fabric系统的创始块文件。

2.账本创始块的生成

通道(就是前面提到的账本,在Fabric中称为Channel ,后续内容中用Channel表示)是Fabric中非常重要的概念,一个Channel表示一个账本。Fabric和其他区块链平台最大的区別是Fabric支持多账本。每个Fabric应用都至少包含一个Channel,因此创建Channel是Fabric中比较重要的步骤。本例我们将向读者演示如何创建一个Channel。

与创建系统初始块的配置一样,创建Channel也是通过configtxgen模块完成的,在下面的例子中,Channel的创始块的配置信息已经定义在前面生成的配置文件configtx.yaml中。

创建Channel的命令如下:

blob.png

上述命令执行完成之后会在目录生成文件roberttestchannel.tx,该文件用来生成Channel。除此之外还需要生成相关的锚点文件,而生成锚点文件需要执行以下命令:

blob.png

命令执行完成之后会在相应的文件夹下面生成文件OrglMSPanchors.tx和Org2MSPanchors.tx,这些文件在后面会用到。

868区块链学习网为您整理《Fabric账本创始块的生成》仅供参考。