Hyperledger Fabric的架构原理还是比较容易理解的,而且现在看来是一个模块化非常好的私有链架构。用这个架构来做开发,目前来看可是要比国内某些大厂的区块链架构不知道强到哪里去了。
当然既然模块化很好,它的可定制化内容就比较多,启动配置也相对较多。这一阶段我们就自习看一下Fabric的网络配置和启动过程,来方便我们针对业务进行定制化实验。
1.创建证书
首先,使用cryptogen工具,根据crypto-config.yaml中的配置,来为每一个网络中的实体创建x.509格式的证书。
crypto-config.yaml中定义了每个网络实体的所属关系,以及Orderer,Peer的数量。
在示例中,Orderer的组织只有一个,其中有5个orderer节点。5个节点的Hosts,是用了Hostname来指定的。当然,我们也可以使用Template,直接指定节点个数N,让它以peer0到peerN-1的顺序自动生成Hosts。
Peer有Users的数量,这代表了除管理员以外的用户数。
然后就是创建 CCP(Common Connection Profile,通用连接配置文件)
CCP是给客户端用的,来方便它们了解网络情况。其主要目的就是描述网络中包含的节点,包含了各个网络节点的网络地址和设置。包含了Organization中的client配置,CA,Peer链接地址,tls通信证书等信息。具体用法可以看此链接。
这里包含一个ccp-template.json文件和ccp-template.yaml的配置文件模板,修改每个Organization中的节点分布时,需要修改这个文件。
然后就是把证书重命名一下, 放到各Organization对应的目录中,方便管理和分发。
2.替换私钥
这一步就比较简单了,就是把CA节点的docker容器配置中,私钥路径给替换掉,也是根据docker-compose-e2e-template.yaml模板
3.创建Channel
开始构建网络了,主要分为3个步骤
1)创建orderer block
因为Hyperledger Fabric的区块是由Orderer来进行分发的,这个Orderer block就是在网络中创建Ordering服务用的。
2)创建channel configuration transaction
这个就是创建channel的时候,需要广播给Orderer的一个transaction
3)创建两个 anchor peer transaction
这个就是为channel中的每个Organization创建anchor的transaction
当然,到此为止只是准备工作,并没有真正的去运行我们的区块链网络。
具体来看的话,就是根据configtx.yaml来,使用configtxgen工具,来创建这些transactions。至于这个configtx.yaml就看起来比较麻烦了。但是其内部的结构还是比较清晰的。上面这一队Section乱七八糟的就是一些模板定义。他指定了Orderer、各Organization的读写策略,还有anchor peer的地址。各网络实体的兼容性,还有一些默认的Orderer、channel、Application的策略。具体而言,你想用的配置还是要在Profile下面定义的。比如我们想用Raft,那就定义一个配置,然后继承一些模板,修改一些定制化的内容。
详细来看每一步。
1)使用configtxgen,指定你在configtx.yaml中配置的Profile,指定Channel ID,指定orderer block的输出目录。
2)然后我们再创建Channel的配置transaction,指定你在configtx.yaml中配置的Channel Profile,指定Channel ID,指定transaction输出路径
3)最后我们再创建Channel的配置transaction,指定你在configtx.yaml中配置的Channel Profile,和Organization Profile,指定Channel ID,指定transaction输出路径。其中,Organization Profile指定了MSP的定义的目录和Anchor Peer的地址。
到此为止,准备工作就完事了,下一步就是创建docker容器,启动网络的工作了。