在上篇文章中,我们是直接利用fabric-samples工程中自带的脚本byfn.sh文件来搭建我们的区块链的,直接省略了很多细节,本文探索下背后的细节与实现。
1 byfn.sh generate
generate用于生成区块链网络启动必须的配置项信息(证书、创世区块等等),它会依次执行脚本中的如下3个方法:
下面依次介绍这3个方法。
1.1 generateCerts
使用cryptogen工具生成网络实体所需的密钥证书文件,用于网络实体之间通信过程中的加密和验证。
cryptogen工具依赖配置文件crypto-config.yaml,具体内容如下:
该文件包含了网络拓扑结构,我们可以据此生成组织以及组织中各实体的证书。我们运行该方法之后,证书会被放置在一个名为crypto-config的文件夹下。通过私钥(keystore)加签,通过公钥(signcerts)验证。
本示例区块链网络拓扑结构如下:
1.2 replacePrivateKey
采用模板文件docker-compose-e2e-template.yaml,将其中的变量替换为生成的密钥文件名,生成文件:docker-compose-e2e.yaml。具体内容不详述。
1.3 generateChannelArtifacts
该方法通过Configtxgen工具生成如下配置项:
(1)排序节点的创世区块
(2)channel configuration transaction
(3)two anchor peer transactions - one for each Peer Org
该工具依赖配置文件configtx.yaml:
该文件包含了对应网络的结构定义,包含3个成员:1个排序组织以及2个peer组织(每个管理2个peer节点)。
2 byfn.sh up-启动示例区块链网络
核心脚本代码:
会执行的详细操作主要在docker-compose-cli.yaml文件中,可以看到是先启动CLI container,然后执行了shell脚本./scripts/script.sh,完整步骤示意图如下:
核心脚本如下:
createChannel
joinChannel
updateAnchorPeers
installChaincode
instantiateChaincode
chaincodeQuery
chaincodeInvoke
通过控制台的日志输出可以看出上述步骤的执行状况。
3 byfn.sh down
此操作会移除之前生成的配置文件、容器以及链码镜像。
领取专属 10元无门槛券
私享最新 技术干货