对Hyperledger-Fabric样例test-network下network.sh启动脚本内容的梳理

本文详细梳理了单机环境下Hyperledger Fabric的test-network启动脚本内容,包括生成组织、证书、创世块、通道及节点的步骤。同时解析了networkup、createChannel、deployCC和networkDown等关键函数,以及多机配置时docker-compose.yaml的修改要点。
摘要由CSDN通过智能技术生成

先理清单机的网络步骤:

生成组织

生成组织的证书

生成创世纪块

生成通道

生成结点加入通道

设定锚结点

然后搞清楚脚本中通过那些指令怎样的步骤启动的:

先来看一个网络的启动参数把

cd test-network/
./network.sh up createChannel -c mychannel -ca && ./network.sh deployCC -ccn basic -ccp ../asset-transfer-basic/chaincode-java -ccl java

上面 && 的前后实际上是两行不同的指令

  • 前一个指令运行脚本,带有参数up createChannel ca (带ca和不带ca使用的证书生成方式会不同,目前的工作中我们使用带有ca标签启动) 作用为 启动网络 创建通道 使用ca来生成加密材料

  • 后一个指令运行脚本,带有参数deployCC 作用为在通道上安装链码(智能合约)

运行脚本的目录一定得是在test-network/下

1.networkup( )

  • 先执行network up()函数,该函数中调用了

    • checkPrep() – 主要检查docker的版本

    • createOrgs() – createOrgs分为以下步骤:(这里直接以-ca的启动模式为例)

      createOrgs( )

      • 通过docker-compose启动ca结点

      • 载入 registerEnroll.sh --那么这个脚本有什么内容呢?

        • createOrg1()
        • createOrg2()
        • createOrderer()
        • 上面三个函数是这个shell里的定义
      • 然后执行shell里定义的函数

      • createOrg1

      • createOrg2

      • createOrderer

      • 接下来执行ccp-generate.sh脚本

        • 脚本功能是创建证书文件,然后放置在了organizations/ 下
    • 接下来会检查是否使用数据库,如果有使用couchdb,那用docker启动一个相关容器

2.createChannel( )

    那么组织文件证书弄完了,要使用的话,接下来需要创建创世纪块
    创世纪块使用了工具 configtxgen, 创世纪块的配置为TwoOrgsApplicationGenesis
    The channel MSP allows the nodes and users to be recognized as members of the network
    有了组织的加密文件和创世纪块,peers 和 orderer 的服务就能启动了
    
    这一步会在createChannel() 时进行
  • up( ) 的内容结束,网络启动后会创建通道 也就是createChannel( )这个函数

    • 函数第一步是检查网络是否在启动,没有的话就去执行上面的up( )了

    • 如果网络没问题,就去跑scripts/ 下的createChannel.sh – 那么我们去看看里面有什么

      createChannel.sh的内容

      创建文件夹
      • 首先会创建一个文件夹 channel-artifacts/ 来存放通道的文件
      四个函数的定义

      ​ 1.接下来是一个函数的定义 createChannelGenesisBlock( )

      • 这个函数中的一条重要指令为

        configtxgen -profile TwoOrgsApplicationGenesis -outputBlock ./channel-artifacts/${CHANNEL_NAME}.block -channelID $CHANNEL_NAME
        #通过这条指令,使用之前说到的configtxgen工具创建创世纪块,存放在刚刚创建的 channel-artifacts/ 下
        

        2.定义了一个createChannel( ) – 内容如下

        #脚本中写了个延时的指令,给raft共识留时间,这里就省略了
        setGlobals 1
        #后面是一条很长指令,看的出来,是根据我们在channel-artifacts/ 中创出来的创世纪块文件来创建通道
        osnadmin channel join --channelID $CHANNEL_NAME --config-block ./channel-artifacts/${CHANNEL_NAME}.block -o localhost:7053 --ca-file "$ORDERER_CA" --client-cert 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值