【超级账本】first-network -byfn.sh源码分析

generate命令

byfn.sh generate -c mychannel"

  1. generateCerts

该方法用于生成相关的证书,(采用cryptogengo工具)包括各个节点的根证书、组织证书、交易证书、传输证书等。代码如下:

 cryptogen generate --config=./crypto-config.yaml
  1. replacePrivateKey

该方法用于将generateCerts步骤生成的私钥文件,绑定到docker镜像中去。代码如下:

# 根据模版生成docker镜像文件
cp docker-compose-e2e-template.yaml docker-compose-e2e.yaml
# 获取peer节点下的CA私钥,
# 例如:0ea90b936cfa035569f2999ac3c8853510a1a7da15bb98baea9b1ac03af57fa7_sk
cd crypto-config/peerOrganizations/org1.example.com/ca/
PRIV_KEY=$(ls *_sk)
# 将该私钥的路径绑定至docker镜像中
# 这里$OPTS为-i或者-it,在sed命令参数里表示插入
sed $OPTS "s/CA1_PRIVATE_KEY/${PRIV_KEY}/g" docker-compose-e2e.yaml
sed $OPTS "s/CA2_PRIVATE_KEY/${PRIV_KEY}/g" docker-compose-e2e.yaml
完成该命令后原来docker-compose-e2e-template.yam对应字段形成了修 改,如下。“- FABRIC_CA_SERVER_TLS_KEYFILE=/etc/hyperledger/fabric-ca-server-config/CA1_PRIVATE_KEY”中“CA1_PRIVATE_KEY”编程了具体的私钥“- FABRIC_CA_SERVER_TLS_KEYFILE=/etc/hyperledger/fabric-ca-server-config/0ea90b936cfa035569f2999ac3c8853510a1a7da15bb98baea9b1ac03af57fa7_sk”
  1. generateChannelArtifacts

3.1 构建创世区块

configtxgen -profile TwoOrgsOrdererGenesis -outputBlock ./channel-artifacts/genesis.block

其中TwoOrgsOrdererGenesis是定义在configtx.yaml,表示生成创世区块的配置项模版。

3.2 构建通道配置文件
参考笔记《08.通道的生命周期》

  configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/channel.tx -channelID $CHANNEL_NAME

该命令生成文件channel.tx,其中TwoOrgsChannel也是定义在configtx.yaml里,表示该通道包含两个组织。

3.3 构建每个组织的锚节点配置

锚节点是通道内能被所有节点看到的,用来做跨组织的gossip通信。这里创建的也是锚节点的配置文件,如组织1的Org1MSPanchors.tx

  configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate \
  ./channel-artifacts/Org2MSPanchors.tx -channelID $CHANNEL_NAME -asOrg Org2MSP
  res=$?
up命令

“byfn.sh up”

  1. networkUp
    检查前置条件是否满足,都OK的情况下,

  2. 根据docker-compose的配置文件生成docker容器

if [ "${IF_COUCHDB}" == "couchdb" ]; then
    IMAGE_TAG=$IMAGETAG docker-compose -f $COMPOSE_FILE -f $COMPOSE_FILE_COUCH up -d 2>&1
  else
    IMAGE_TAG=$IMAGETAG docker-compose -f $COMPOSE_FILE up -d 2>&1
  fi

备注:docker-compose -f XX.yaml up 命令

  1. 执行启动脚本,是first-network中真正的创建组织、加载链码等。
docker exec cli scripts/script.sh $CHANNEL_NAME $CLI_DELAY $LANGUAGE $CLI_TIMEOUT

参考《09.first-network – script.sh》

donw命令

“byfn.sh down”

  1. networkDown
#删除对应的备份数据
docker run -v $PWD:/tmp/first-network --rm hyperledger/fabric-tools:$IMAGETAG rm -Rf /tmp/first-network/ledgers-backup
#清除docker容器
clearContainers
#清除docker镜像
removeUnwantedImages
#删除创世区块、通道配置文件、初始化证书等文件 
rm -rf channel-artifacts/*.block channel-artifacts/*.tx crypto-config ./org3-artifacts/crypto-config/ channel-artifacts/org3.json
# 删除本地的docker配置文件
rm -f docker-compose-e2e.yaml

你可能感兴趣的:(区块链)