中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

fabric示例e2e_cli中network_setup.sh流程是怎么樣的

發布時間:2021-12-28 17:24:48 來源:億速云 閱讀:231 作者:小新 欄目:互聯網科技

這篇文章主要介紹了fabric示例e2e_cli中network_setup.sh流程是怎么樣的,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

fabric示例e2e_cli中network_setup.sh流程分析

network_setup.sh流程圖

  1. 調用generateArtifacts.sh

  2. docker-compose up啟動cli

  3. cli容器執行script.sh腳本

fabric示例e2e_cli中network_setup.sh流程是怎么樣的

network_setup.sh函數分析

validateArgs分析

function validateArgs () {
    #如果參數為空,報錯退出
	if [ -z "${UP_DOWN}" ]; then
		echo "Option up / down / restart not mentioned"
		printHelp
		exit 1
	fi
	if [ -z "${CH_NAME}" ]; then
	#如果第二個參數為空,創建默認名稱為'mychannel'的channel
		echo "setting to default channel 'mychannel'"
		CH_NAME=mychannel
	fi
}

函數networkUp分析

  1. 調用generateArtifacts.sh

  2. 調用docker-compose啟動容器

function networkUp () {
    #判斷是否存在crypto-config,如果存在,表示
    #如果不存在,則執行generateArtifacts.sh腳本
    if [ -f "./crypto-config" ]; then
      echo "crypto-config directory already exists."
    else
      #Generate all the artifacts that includes org certs, orderer genesis block,
      # channel configuration transaction
      source generateArtifacts.sh $CH_NAME
    fi

    #是否傳入了第4個參數為couchdb,如果是啟動參數帶上couchdb對應的docker-compose模板文件
    #實際命令:CHANNEL_NAME=mychannel TIMEOUT=10000 docker-compose -f docker-compose-cli.yaml -f COMPOSE_FILE_COUCH=docker-compose-couch.yaml up -d 2>&1
    #如果不是couchdb,則不帶上couchdb對應的yaml
    #實際命令為:CHANNEL_NAME=mychannel TIMEOUT=10000 docker-compose -f docker-compose-cli.yaml up -d 2>&1
    if [ "${IF_COUCHDB}" == "couchdb" ]; then
      CHANNEL_NAME=$CH_NAME TIMEOUT=$CLI_TIMEOUT docker-compose -f $COMPOSE_FILE -f $COMPOSE_FILE_COUCH up -d 2>&1
    else
      CHANNEL_NAME=$CH_NAME TIMEOUT=$CLI_TIMEOUT docker-compose -f $COMPOSE_FILE up -d 2>&1
    fi

    #判斷執行的返回值,如果不為0,輸出錯誤,并且退出
    if [ $? -ne 0 ]; then
	echo "ERROR !!!! Unable to pull the images "
	exit 1
    fi

    #查看容器cli的實時日志
    docker logs -f cli
}
generateArtifacts.sh函數分析

generateCerts replacePrivateKey generateChannelArtifacts

函數generateCerts分析
## Generates Org certs using cryptogen tool
function generateCerts (){
    #ubuntu上OS_ARCH為linux-amd64
    #OS X上OS_ARCH為darwin-amd64
    #fabric目錄對應的子目錄查找文件cryptogen
    #如果該文件存在
    #如果不存在執行make命令生成。不過這個make
	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

    #實際命令cryptogen generate --config=./crypto-config.yaml
    #TODO待完善
	echo
	echo "##########################################################"
	echo "##### Generate certificates using cryptogen tool #########"
	echo "##########################################################"
	$CRYPTOGEN generate --config=./crypto-config.yaml
	echo
}
replacePrivateKey
## Using docker-compose template replace private key file names with constants
function replacePrivateKey () {
    #如果是OS X系統參數為-it,否則為-i
    #或者-i前面加上"" -i也可以避免在OS X上報錯
	ARCH=`uname -s | grep Darwin`
	if [ "$ARCH" == "Darwin" ]; then
		OPTS="-it"
	else
		OPTS="-i"
	fi

    #拷貝docker-compose-e2e-template.yaml文件,并且新文件命名為docker-compose-e2e.yaml
	cp docker-compose-e2e-template.yaml docker-compose-e2e.yaml

        #獲取crypto-config/peerOrganizations/org1.example.com/ca/目錄下_sk結尾的文件名
        #把上述文件中的CA1_PRIVATE_KEY替換成上述文件名
        #-i直接修改文本文件內容
        #s替換指定字符,使用后綴 /g 標記會替換每一行中的所有匹配
        CURRENT_DIR=$PWD
        cd crypto-config/peerOrganizations/org1.example.com/ca/
        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
}
generateChannelArtifacts
## Generate orderer genesis block , channel configuration transaction and anchor peer update transactions
function generateChannelArtifacts() {
    #ubuntu上OS_ARCH為linux-amd64
    #OS X上OS_ARCH為darwin-amd64
    #fabric目錄對應的子目錄查找文件cryptogen
    #如果該文件存在
    #如果不存在執行make命令生成
	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

    #使用工具configtxgen生成創世區塊
    ##profile指定configtx.yaml中的配置項
    ##outputBlock執行生成文件路徑,protobuf序列化格式
    ##可以用工具以json格式查看,configtxgen -inspectBlock genesis.block
	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!
	$CONFIGTXGEN -profile TwoOrgsOrdererGenesis -outputBlock ./channel-artifacts/genesis.block

    ##使用工具configtxgen生成channel.tx
    ##outputCreateChannelTx指定生成的文件路徑,protobuf序列化格式
    ##可以用工具以json格式查看,configtxgen -inspectChannelCreateTx channel.tx
	echo
	echo "#################################################################"
	echo "### Generating channel configuration transaction 'channel.tx' ###"
	echo "#################################################################"
	$CONFIGTXGEN -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/channel.tx -channelID $CHANNEL_NAME

    #使用工具configtxgen生成Org1MSPanchors.tx
	echo
	echo "#################################################################"
	echo "#######    Generating anchor peer update for Org1MSP   ##########"
	echo "#################################################################"
	$CONFIGTXGEN -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org1MSPanchors.tx -channelID $CHANNEL_NAME -asOrg Org1MSP

    #使用工具configtxgen生成Org2MSPanchors.tx
	echo
	echo "#################################################################"
	echo "#######    Generating anchor peer update for Org2MSP   ##########"
	echo "#################################################################"
	$CONFIGTXGEN -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org2MSPanchors.tx -channelID $CHANNEL_NAME -asOrg Org2MSP
	echo
}
docker-compose啟動容器
啟動命令
CHANNEL_NAME=mychannel TIMEOUT=10000 docker-compose -f docker-compose-cli.yaml up -d 2>&1
script.sh分析
  1. 創建通道

  2. 加入通道

  3. 設置anchor

  4. 安裝chaincode

  5. 實例化chaincode

  6. 查詢/調用 chaincode

fabric示例e2e_cli中network_setup.sh流程是怎么樣的

感謝你能夠認真閱讀完這篇文章,希望小編分享的“fabric示例e2e_cli中network_setup.sh流程是怎么樣的”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

桑植县| 伊金霍洛旗| 中方县| 沅陵县| 扬中市| 安庆市| 呼伦贝尔市| 都昌县| 勃利县| 静宁县| 驻马店市| 泰和县| 仲巴县| 商洛市| 江西省| 沙雅县| 新野县| 兴隆县| 青阳县| 济宁市| 翼城县| 大庆市| 蕲春县| 镇康县| 柞水县| 合山市| 吐鲁番市| 延吉市| 韶关市| 鹿邑县| 桃江县| 濮阳市| 保靖县| 龙里县| 陆河县| 新乡县| 巢湖市| 阳曲县| 靖边县| 祁东县| 富裕县|