fabric-链码一键部署

fabric-链码一键部署,第1张

buildCC.sh
#!/bin/bash
. env.sh
. optChannel.sh

usage="Usage: $(basename -c command)
-c
package             - 打包链码
install             - 安装链码
queryInstall         - 查询已安装链码
approve             - 审核链码
checkreadiness         - 查看链码是否就绪
commit                 - 提交链码
querycommitted      - 查询通道已提交的链码
initCC              - 初始化链码

-p 链码程序包目录(默认'')
-b 安装的链码包(tar.gz文件)
-i 链码ID,approve必传参数(asset_1:dc86a23bd13a23292567b853ac87479702e670b70d33413bfe5f547df7726717)
-n 链码名称(asset)
-v 链码版本(1)
-s 链码序号(1)
-t 通道名称(mychannel)
-l 链码标签(asset_1)
"

command=$1

ccpath=''
ccid=''
name=''
version=1
sequence=1
channelID=''
label=''

while getopts ":c:p:b:i:n:v:s:t:l:" opt
    do
     case $opt in
         c)
         command=$OPTARG
         ;;
         p)
         ccpath=$OPTARG
         ;;
         b)
         package=$OPTARG
         ;;
         i)
         ccid=$OPTARG
         ;;
         n)
         name=$OPTARG
         ;;
         v)
         version=$OPTARG
         ;;
         s)
         sequence=$OPTARG
         ;;
         t)
         channelID=$OPTARG
         ;;
         l)
         label=$OPTARG
         ;;
         ?)
         echo "未知参数"
         exit 1;;
     esac
done


echo  "参数列表:$@"

#  ./buildCC.sh -c package -b asset.tar.gz -p '' -l asset_1  
package(){
    echo '打包链码开始'

    JAR_NAME=`ll chaincode/|grep .jar | awk '{print $9}'`
    echo "链码名称->$JAR_NAME"

    setO1P1
    echo ${CLI} --- ${ORG_HOST}
    ssh ${ORG_HOST} "rm -rf ${CRYPTO_ROOT_PATH_MACHINE}chaincode/*"
    scp -r ./chaincode/${JAR_NAME} root@${ORG_HOST}:${CRYPTO_ROOT_PATH_MACHINE}
    ssh ${ORG_HOST} "docker exec ${CLI} bash -c \"cd /opt/gopath/src/github.com/hyperledger/fabric/chaincode && rm -rf *.tar.gz &&  peer lifecycle chaincode package ${package} --path /opt/gopath/src/github.com/hyperledger/fabric/chaincode/${ccpath} --lang java --label $\""

    setO2P1
    echo ${CLI} --- ${ORG_HOST}
    ssh ${ORG_HOST} "rm -rf ${CRYPTO_ROOT_PATH_MACHINE}chaincode/*"
    scp -r ./chaincode/${JAR_NAME} root@${ORG_HOST}:${CRYPTO_ROOT_PATH_MACHINE}
    ssh ${ORG_HOST} "docker exec ${CLI} bash -c \"cd /opt/gopath/src/github.com/hyperledger/fabric/chaincode && rm -rf *.tar.gz &&  peer lifecycle chaincode package ${package} --path /opt/gopath/src/github.com/hyperledger/fabric/chaincode/${ccpath} --lang java --label $
\""     echo '打包链码结束' } #./buildCC.sh -c install -p '' -b asset.tar.gz install(){     echo '安装链码开始'     setO1P1     ssh ${ORG_HOST} "docker exec ${CLI} bash -c \"cd /opt/gopath/src/github.com/hyperledger/fabric/chaincode/${ccpath} && peer lifecycle chaincode install ${package}\""     setO1P2     ssh ${ORG_HOST} "docker exec ${CLI} bash -c \"cd /opt/gopath/src/github.com/hyperledger/fabric/chaincode/${ccpath} && peer lifecycle chaincode install ${package}\""     setO2P1     ssh ${ORG_HOST} "docker exec ${CLI} bash -c \"cd /opt/gopath/src/github.com/hyperledger/fabric/chaincode/${ccpath} && peer lifecycle chaincode install ${package}\""     setO2P2     ssh ${ORG_HOST} "docker exec ${CLI} bash -c \"cd /opt/gopath/src/github.com/hyperledger/fabric/chaincode/${ccpath} && peer lifecycle chaincode install ${package}\""     echo '安装链码结束' } #./buildCC.sh -c queryInstall queryInstall(){     echo '查询已安装链码开始'     setO1P1     ssh ${ORG_HOST} "docker exec ${CLI} bash -c 'peer lifecycle chaincode queryinstalled'"     setO1P2     ssh ${ORG_HOST} "docker exec ${CLI} bash -c 'peer lifecycle chaincode queryinstalled'"     setO2P1     ssh ${ORG_HOST} "docker exec ${CLI} bash -c 'peer lifecycle chaincode queryinstalled'"     setO2P2     ssh ${ORG_HOST} "docker exec ${CLI} bash -c 'peer lifecycle chaincode queryinstalled'"     echo '查询已安装链码结束' } #./buildCC.sh -c approve -i asset_1:7f3c911c109fedad19809578f9b9146756e4142821b3ff697b1979566b3e482f -n asset -v 1 -s 1 -t mychannel -n asset approve(){     echo '批准链码开始'     echo "ccid=${ccid}"     setO1P1     ssh ${ORG_HOST} "docker exec ${CLI}  peer lifecycle chaincode approveformyorg --channelID ${channelID} --name ${name} --version ${version} --init-required --package-id ${ccid} --sequence ${sequence} --tls true --cafile $ORDERER_TLS_CA_CERT"     #setO1P2     #ssh ${ORG_HOST} "docker exec ${CLI}  peer lifecycle chaincode approveformyorg --channelID ${channelID} --name ${name} --version ${version} --init-required --package-id ${ccid} --sequence ${sequence} --tls true --cafile $ORDERER_TLS_CA_CERT"     setO2P1     ssh ${ORG_HOST} "docker exec ${CLI}  peer lifecycle chaincode approveformyorg --channelID ${channelID} --name ${name} --version ${version} --init-required --package-id ${ccid} --sequence ${sequence} --tls true --cafile $ORDERER_TLS_CA_CERT"     #setO2P2     #ssh ${ORG_HOST} "docker exec ${CLI}  peer lifecycle chaincode approveformyorg --channelID ${channelID} --name ${name} --version ${version} --init-required --package-id ${ccid} --sequence ${sequence} --tls true --cafile $ORDERER_TLS_CA_CERT"     echo '批准链码结束' } #./buildCC.sh -c checkreadiness -v 1 -s 1 -t mychannel -n asset checkreadiness(){     echo '查看链码是否就绪开始'     echo "ccid=${ccid}"     setO1P1     ssh ${ORG_HOST} "docker exec ${CLI}  bash -c  \"peer lifecycle chaincode checkcommitreadiness --channelID ${channelID} --name ${name} --version ${version} --sequence ${sequence} --tls true --cafile $ORDERER_TLS_CA_CERT --output json\""     # setO1P2     # ssh ${ORG_HOST} "docker exec ${CLI}  bash -c  \"peer lifecycle chaincode checkcommitreadiness --channelID ${channelID} --name ${name} --version ${version} --sequence ${sequence} --tls true --cafile $ORDERER_TLS_CA_CERT --output json\""     setO2P1     ssh ${ORG_HOST} "docker exec ${CLI}  bash -c  \"peer lifecycle chaincode checkcommitreadiness --channelID ${channelID} --name ${name} --version ${version} --sequence ${sequence} --tls true --cafile $ORDERER_TLS_CA_CERT --output json\""     # setO2P2     # ssh ${ORG_HOST} "docker exec ${CLI}  bash -c  \"peer lifecycle chaincode checkcommitreadiness --channelID ${channelID} --name ${name} --version ${version} --sequence ${sequence} --tls true --cafile $ORDERER_TLS_CA_CERT --output json\""     echo '查看链码是否就绪结束' } #./buildCC.sh -c commit -v 1 -s 1 -t mychannel -n asset commit(){     echo '提交链码开始'     setO1P1     shell_str="docker exec ${CLI} peer lifecycle chaincode commit -o ${ORDERER_ADDRESS} --channelID ${channelID} --name ${name} --version ${version} --sequence ${sequence} --init-required --tls --cafile ${ORDERER_TLS_CA_CERT} --waitForEvent --peerAddresses ${CORE_PEER_ADDRESS} --tlsRootCertFiles ${CORE_PEER_TLS_CERT_FILE}"     setO2P1     shell_str="$shell_str --peerAddresses ${CORE_PEER_ADDRESS} --tlsRootCertFiles ${CORE_PEER_TLS_CERT_FILE}"     #执行拼接好的脚本     setO1P1     echo "拼接好的提交链码脚本:ssh ${ORG_HOST} $shell_str"     ssh ${ORG_HOST} "$shell_str"     echo '提交链码结束' } #./buildCC.sh -c queryCommited  -t mychannel -n asset queryCommited(){     echo '查询通道已提交链码开始'     setO1P1     ssh ${ORG_HOST} "docker exec ${CLI} peer lifecycle chaincode querycommitted -o ${ORDERER_ADDRESS} --channelID ${channelID} --name ${name} --tls --cafile ${ORDERER_TLS_CA_CERT} --peerAddresses ${CORE_PEER_ADDRESS} --tlsRootCertFiles ${CORE_PEER_TLS_CERT_FILE}"     setO2P1     ssh ${ORG_HOST} "docker exec ${CLI} peer lifecycle chaincode querycommitted -o ${ORDERER_ADDRESS} --channelID ${channelID} --name ${name} --tls --cafile ${ORDERER_TLS_CA_CERT} --peerAddresses ${CORE_PEER_ADDRESS} --tlsRootCertFiles ${CORE_PEER_TLS_CERT_FILE}"     echo '查询通道已提交链码结束' } #./buildCC.sh -c initCC  -t mychannel -n asset initCC(){     echo '初始化链码开始'     setO1P1     shell_str="docker exec ${CLI} peer chaincode invoke -o ${ORDERER_ADDRESS} --isInit --ordererTLSHostnameOverride ${ORDERER1_DOMAIN} --tls true --cafile ${ORDERER_TLS_CA_CERT} -C ${channelID} -n ${name} --peerAddresses ${CORE_PEER_ADDRESS} --tlsRootCertFiles ${CORE_PEER_TLS_CERT_FILE}"     setO1P2     shell_str="$shell_str --peerAddresses ${CORE_PEER_ADDRESS} --tlsRootCertFiles ${CORE_PEER_TLS_CERT_FILE} "     setO2P1     shell_str="$shell_str --peerAddresses ${CORE_PEER_ADDRESS} --tlsRootCertFiles ${CORE_PEER_TLS_CERT_FILE} "     setO2P2     shell_str="$shell_str --peerAddresses ${CORE_PEER_ADDRESS} --tlsRootCertFiles ${CORE_PEER_TLS_CERT_FILE} "     setO1P1     echo "拼接好的初始化链码脚本: ${ORG_HOST} $shell_str -c '{\"function\":\"createCat\",\"Args\":[\"cat-00000001\",\"cat-init-test\",\"15\",\"blue\",\"mianyin\"]}'"     ssh ${ORG_HOST} "$shell_str -c '{\"function\":\"createCat\",\"Args\":[\"cat-00000001\",\"cat-init-test\",\"15\",\"blue\",\"mianyin\"]}'"     echo '初始化链码结束' } case $command in     package)         package         ;;     install)         install         ;;     queryInstall)         queryInstall         ;;     approve)         approve         ;;     checkreadiness)         checkreadiness         ;;     commit)         commit         ;;     queryCommited)         queryCommited         ;;     initCC)         initCC         ;;     *)         echo "Error command"         echo "$usage"         ;; esac
 
deployCC.sh 
#!/bin/bash usage="Usage: ./deployCC.sh [channel_id] [chaincode_id] [version]; eg: ./deployCC.sh yljk-channel yljk_code 10" if [ $# != 3 ] ; then  echo $usage  exit 1 fi export CHANNEL_ID=$1 export CHANNEL_CODE_NAME=$2 export VERTION=$3 export SEQUENCE=$3 export CHAINCODE_PREFIX=${CHANNEL_CODE_NAME}_${VERTION} ./buildCC.sh -c package -b ${CHANNEL_CODE_NAME}.tar.gz -p '' -l ${CHANNEL_CODE_NAME}_${VERTION} && ./buildCC.sh -c install -p '' -b ${CHANNEL_CODE_NAME}.tar.gz && export CHAINCODE_ID=`./buildCC.sh -c queryInstall > queryInstallinfo && sed -n "/${CHAINCODE_PREFIX}/p" queryInstallinfo |sed -n '$p'|sed 's/^Package.*ID\: //g'|sed 's/,.*//g'` && echo "将要安装的链码ID-------------$CHAINCODE_ID" && ./buildCC.sh -c approve -i ${CHAINCODE_ID} -n ${CHANNEL_CODE_NAME} -v ${VERTION} -s ${SEQUENCE} -t ${CHANNEL_ID} && ./buildCC.sh -c checkreadiness -v ${VERTION} -s ${SEQUENCE} -t ${CHANNEL_ID} -n ${CHANNEL_CODE_NAME} && ./buildCC.sh -c commit -v ${VERTION} -s ${SEQUENCE} -t ${CHANNEL_ID} -n ${CHANNEL_CODE_NAME} && ./buildCC.sh -c queryCommited  -t ${CHANNEL_ID} -n ${CHANNEL_CODE_NAME} && ./buildCC.sh -c initCC  -t ${CHANNEL_ID} -n ${CHANNEL_CODE_NAME} 

欢迎分享,转载请注明来源:

内存溢出

原文地址:

http://outofmemory.cn/zaji/2992140.html
大数据
(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
拉丝模具 拉丝模具 一级用户组
solidty实现默克尔树空投
上一篇
2022-09-23
Bitcoinwin (BCW): 借贷平台Celsius隐瞒亏损3.5万枚ETH 或资不抵债
2022-09-23

发表评论
请登录后评论... 登录
提交

    评论列表(0条)
保存
{label} {label}