美文网首页
generateArtifact.sh脚本分析

generateArtifact.sh脚本分析

作者: Jarvist | 来源:发表于2018-12-11 16:54 被阅读0次
    #!/bin/bash +x
    #
    # Copyright IBM Corp. All Rights Reserved.
    #
    # SPDX-License-Identifier: Apache-2.0
    #
    
    
    #set -e
    
    #network start.sh中调用时,传入的channel name 默认为mychannel
    CHANNEL_NAME=$1
    : ${CHANNEL_NAME:="mychannel"}
    echo $CHANNEL_NAME
    
    #设置环境变量
    export FABRIC_ROOT=$PWD/../..
    export FABRIC_CFG_PATH=$PWD
    echo
    
    #查询系统结构 windows改为mingw64_nt,x86_64改为amd64
    OS_ARCH=$(echo "$(uname -s|tr '[:upper:]' '[:lower:]'|sed 's/mingw64_nt.*/windows/')-$(uname -m | sed 's/x86_64/amd64/g')" | awk '{print tolower($0)}')
    
    ## Using docker-compose template replace private key file names with constants
    #替换私钥
    function replacePrivateKey () {
            #Darwin sed -it ;else sed -i
        ARCH=`uname -s | grep Darwin`
        if [ "$ARCH" == "Darwin" ]; then
            OPTS="-it"
        else
            OPTS="-i"
        fi
            
            #复制文件
        cp docker-compose-e2e-template.yaml docker-compose-e2e.yaml
            #进入目录
            CURRENT_DIR=$PWD
            cd crypto-config/peerOrganizations/org1.example.com/ca/
            #找到sk文件 在yaml文件中进行替换
            PRIV_KEY=$(ls *_sk)
            cd $CURRENT_DIR
            sed $OPTS "s/CA1_PRIVATE_KEY/${PRIV_KEY}/g" docker-compose-e2e.yaml
            cd crypto-config/peerOrganizations/org2.example.com/ca/
            PRIV_KEY=$(ls *_sk)
            cd $CURRENT_DIR
            sed $OPTS "s/CA2_PRIVATE_KEY/${PRIV_KEY}/g" docker-compose-e2e.yaml
    }
    
    ## Generates Org certs using cryptogen tool 生成证书
    function generateCerts (){
            #cryptogen工具地址
        CRYPTOGEN=$FABRIC_ROOT/release/$OS_ARCH/bin/cryptogen
            #文件存在
        if [ -f "$CRYPTOGEN" ]; then
                echo "Using cryptogen -> $CRYPTOGEN"
        else
            echo "Building cryptogen"
                #编译
            make -C $FABRIC_ROOT release
        fi
    
        echo
        echo "##########################################################"
        echo "##### Generate certificates using cryptogen tool #########"
        echo "##########################################################"
            #使用crypto-config.yaml生成这证书
        $CRYPTOGEN generate --config=./crypto-config.yaml
        echo
    }
    
    
    #Idemix是一个加密协议套件,它提供强大的身份验证以及隐私保护功能,
    #如匿名,无需披露交易者身份即可进行交易,以及不可链接性,即单个身份发送多个交易的能力,
    #而不会泄露交易是通过相同的身份发送的。Idemix流中涉及三个参与者:用户,发行者和验证者。
    
    function generateIdemixMaterial (){
        IDEMIXGEN=$FABRIC_ROOT/release/$OS_ARCH/bin/idemixgen
        CURDIR=`pwd`
        IDEMIXMATDIR=$CURDIR/crypto-config/idemix
    
        if [ -f "$IDEMIXGEN" ]; then
                echo "Using idemixgen -> $IDEMIXGEN"
        else
            echo "Building idemixgen"
            make -C $FABRIC_ROOT release
        fi
    
        echo
        echo "####################################################################"
        echo "##### Generate idemix crypto material using idemixgen tool #########"
        echo "####################################################################"
    
        mkdir -p $IDEMIXMATDIR
        cd $IDEMIXMATDIR
    
        # Generate the idemix issuer keys
        $IDEMIXGEN ca-keygen
    
        # Generate the idemix signer keys
        $IDEMIXGEN signerconfig -u OU1 -e OU1 -r 1
    
        cd $CURDIR
    }
    
    ## Generate orderer genesis block , channel configuration transaction and anchor peer update transactions
    # 创建创世区块
    function generateChannelArtifacts() {
           #使用configtxgen工具
        CONFIGTXGEN=$FABRIC_ROOT/release/$OS_ARCH/bin/configtxgen
        if [ -f "$CONFIGTXGEN" ]; then
                echo "Using configtxgen -> $CONFIGTXGEN"
        else
            echo "Building configtxgen"
            make -C $FABRIC_ROOT release
        fi
    
        echo "##########################################################"
        echo "#########  Generating Orderer Genesis block ##############"
        echo "##########################################################"
        # Note: For some unknown reason (at least for now) the block file can't be
        # named orderer.genesis.block or the orderer will fail to launch!
            #运行工具 使用configtx.yaml文件 对应profile名称
        $CONFIGTXGEN -profile TwoOrgsOrdererGenesis -channelID e2e-orderer-syschan -outputBlock ./channel-artifacts/genesis.block
    
        echo
        echo "#################################################################"
        echo "### Generating channel configuration transaction 'channel.tx' ###"
        echo "#################################################################"
             #创建channel.tx
        $CONFIGTXGEN -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/channel.tx -channelID $CHANNEL_NAME
    
        echo
        echo "#################################################################"
        echo "#######    Generating anchor peer update for Org1MSP   ##########"
        echo "#################################################################"
        $CONFIGTXGEN -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org1MSPanchors.tx -channelID $CHANNEL_NAME -asOrg Org1MSP
    
        echo
        echo "#################################################################"
        echo "#######    Generating anchor peer update for Org2MSP   ##########"
        echo "#################################################################"
        $CONFIGTXGEN -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org2MSPanchors.tx -channelID $CHANNEL_NAME -asOrg Org2MSP
        echo
    }
    
    #脚本逻辑
    generateCerts
    generateIdemixMaterial
    replacePrivateKey
    generateChannelArtifacts

    相关文章

      网友评论

          本文标题:generateArtifact.sh脚本分析

          本文链接:https://www.haomeiwen.com/subject/hhkehqtx.html