您好,登錄后才能下訂單哦!
這篇文章主要介紹了fabric示例e2e_cli中network_setup.sh流程是怎么樣的,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
調(diào)用generateArtifacts.sh
docker-compose up啟動cli
cli容器執(zhí)行script.sh腳本
function validateArgs () { #如果參數(shù)為空,報錯退出 if [ -z "${UP_DOWN}" ]; then echo "Option up / down / restart not mentioned" printHelp exit 1 fi if [ -z "${CH_NAME}" ]; then #如果第二個參數(shù)為空,創(chuàng)建默認名稱為'mychannel'的channel echo "setting to default channel 'mychannel'" CH_NAME=mychannel fi }
調(diào)用generateArtifacts.sh
調(diào)用docker-compose啟動容器
function networkUp () { #判斷是否存在crypto-config,如果存在,表示 #如果不存在,則執(zhí)行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個參數(shù)為couchdb,如果是啟動參數(shù)帶上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 #判斷執(zhí)行的返回值,如果不為0,輸出錯誤,并且退出 if [ $? -ne 0 ]; then echo "ERROR !!!! Unable to pull the images " exit 1 fi #查看容器cli的實時日志 docker logs -f cli }
generateCerts replacePrivateKey generateChannelArtifacts
## Generates Org certs using cryptogen tool function generateCerts (){ #ubuntu上OS_ARCH為linux-amd64 #OS X上OS_ARCH為darwin-amd64 #fabric目錄對應的子目錄查找文件cryptogen #如果該文件存在 #如果不存在執(zhí)行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 }
## Using docker-compose template replace private key file names with constants function replacePrivateKey () { #如果是OS X系統(tǒng)參數(shù)為-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結(jié)尾的文件名 #把上述文件中的CA1_PRIVATE_KEY替換成上述文件名 #-i直接修改文本文件內(nè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 }
## 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 #如果該文件存在 #如果不存在執(zhí)行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生成創(chuàng)世區(qū)塊 ##profile指定configtx.yaml中的配置項 ##outputBlock執(zhí)行生成文件路徑,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 }
CHANNEL_NAME=mychannel TIMEOUT=10000 docker-compose -f docker-compose-cli.yaml up -d 2>&1
創(chuàng)建通道
加入通道
設置anchor
安裝chaincode
實例化chaincode
查詢/調(diào)用 chaincode
感謝你能夠認真閱讀完這篇文章,希望小編分享的“fabric示例e2e_cli中network_setup.sh流程是怎么樣的”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業(yè)資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。