$ ./network.sh up =>ENTER后发生了什么?

Fabric2.X中,用fabric-samples替换掉原来的first-network,提供给开发人员快速上手。fabric-samples中的test-network为我们提供了一系列脚本和配置文件,让我们可以简单的启动一个fabric网络。

本文以广度优先的方法解读network.sh的内容

network.sh

a.设置环境变量

export PATH=${PWD}/../bin:${PWD}:$PATH
export FABRIC_CFG_PATH=${PWD}/configtx
export VERBOSE=false
  • bin目录内容如下
├─bin
│      configtxgen
│      configtxlator
│      cryptogen
│      discover
│      fabric-ca-client
│      fabric-ca-server
│      idemixgen
│      orderer
│      peer

cryptogen以及configtxgen这两个重要的工具通过编译生成,用来创建参与网络实体的证书,生成创世区块和通道的配置文件以及组织的锚节点。相应的,bin目录中还有其他需要使用到的工具。

configtx中的文件是用来配置网络的,configtxgen这个工具就是依靠configtx中的configtx.yaml文件来定义网络。

b.提供函数

  • clearContainers()

清除启动、运行网络时,在docker中创建的镜像;这个函数在关闭网络时被调用。

  • removeUnwantedImages()

清除不想要的镜像

  • checkPrereqs()

检查网络组件、二进制文件、镜像文件的版本,依托于上级目录的config文件夹,该文件夹的内容中包含了Fabric网络中的基本属性的配置,其内容如下:

├─config
│      configtx.yaml
│      core.yaml	
│      orderer.yaml

检查peer版本、docker_image版本。

一般来说,拉取Fabric项目后,使用bootstrap.sh脚本,都可以得到对应版本的文件以及环境。

  • createOrgs()

该函数使用cryptogen工具或者CAs创建组织的身份材料,它在运行时首先清理掉现有的身份,然后一步步执行。在test-network中,首先使用cryptogen或者CAs工具创建Org1Org2的身份,然后创建Orderer Org的身份。

一旦创建了组织的身份后,我们就需要生成genesis block,并且创建应用的channelOrderer节点加入。

  • createConsortium()

该函数使用configtxgen这个工具生成channelorderer genesis block

在创建组织实体身份以及创世区块后,就可以开启peersorderering服务了。

  • networkUp()

该函数使用docker compose开启peerorderer节点。成功后,为我们打印出当前的docker images

对于运行的Fabric网络,可以创建channel实现应用数据的隔离。

  • createChannel()

该函数创建一个channelOrg1Org2peers节点加入。首先,它检查网络是否启动,如果没有,就先把网络开启,然后再创建。它使用createChannel.sh脚本创建通道。

  • deployCC()

该函数把链码安装到通道上并将链码实例化,它调用deployCC.sh这个脚本实现。

  • networkDown()

该函数断开正在运行的网络,它首先删除docker compose中的镜像,清除容器,删除genesis block各个组织的ca,卸载chaincode。也就是说,down掉网络后,我们在上面创建的实体、通道,安装的链码等等全部被清除掉了,如果再次启动时还需从头开始配置。

Up & Down

./network.sh up

这个命令其实就是调用函数networkUp(),函数中依次调用:

  1. createOrgs()
  2. createConsortium()
  3. 开启docker-compose
  4. 打印docker ps -a存在的镜像

./network.sh down

这个命令调用函数networkDown(),函数中依次调用:

  1. docker-compose -f删除镜像
  2. clearContainers()
  3. removeUnwantedImages
  4. rm -rf system-genesis-block
  5. rm -rf organizations/fabric-ca/org...
  6. rm -rf channel-artifacts log.txt chaincode.tar.gz chaincode
自认为是幻象波普星的来客
Built with Hugo
主题 StackJimmy 设计