mirror of
https://github.com/hyperledger/fabric-samples.git
synced 2026-06-17 23:45:10 +00:00
164 lines
4.2 KiB
Bash
Executable file
164 lines
4.2 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
|
|
CHANNEL_NAME="$1"
|
|
DELAY="$2"
|
|
MAX_RETRY="$3"
|
|
VERBOSE="$4"
|
|
: ${CHANNEL_NAME:="mychannel"}
|
|
: ${DELAY:="3"}
|
|
: ${MAX_RETRY:="5"}
|
|
: ${VERBOSE:="false"}
|
|
|
|
# import utils
|
|
. scripts/envVar.sh
|
|
|
|
if [ ! -d "channel-artifacts" ]; then
|
|
mkdir channel-artifacts
|
|
fi
|
|
|
|
createChannelTx() {
|
|
|
|
set -x
|
|
configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/${CHANNEL_NAME}.tx -channelID $CHANNEL_NAME
|
|
res=$?
|
|
set +x
|
|
if [ $res -ne 0 ]; then
|
|
echo "Failed to generate channel configuration transaction..."
|
|
exit 1
|
|
fi
|
|
echo
|
|
|
|
}
|
|
|
|
createAncorPeerTx() {
|
|
|
|
for orgmsp in Org1MSP Org2MSP; do
|
|
|
|
echo "####### Generating anchor peer update for ${orgmsp} ##########"
|
|
set -x
|
|
configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/${orgmsp}anchors.tx -channelID $CHANNEL_NAME -asOrg ${orgmsp}
|
|
res=$?
|
|
set +x
|
|
if [ $res -ne 0 ]; then
|
|
echo "Failed to generate anchor peer update for ${orgmsp}..."
|
|
exit 1
|
|
fi
|
|
echo
|
|
done
|
|
}
|
|
|
|
createChannel() {
|
|
setGlobals 1
|
|
|
|
# Poll in case the raft leader is not set yet
|
|
local rc=1
|
|
local COUNTER=1
|
|
while [ $rc -ne 0 -a $COUNTER -lt $MAX_RETRY ] ; do
|
|
sleep $DELAY
|
|
if [ -z "$CORE_PEER_TLS_ENABLED" -o "$CORE_PEER_TLS_ENABLED" = "false" ]; then
|
|
set -x
|
|
peer channel create -o localhost:7050 -c $CHANNEL_NAME -f ./channel-artifacts/${CHANNEL_NAME}.tx --outputBlock ./channel-artifacts/${CHANNEL_NAME}.block >&log.txt
|
|
res=$?
|
|
set +x
|
|
else
|
|
set -x
|
|
peer channel create -o localhost:7050 -c $CHANNEL_NAME --ordererTLSHostnameOverride orderer.example.com -f ./channel-artifacts/${CHANNEL_NAME}.tx --outputBlock ./channel-artifacts/${CHANNEL_NAME}.block --tls $CORE_PEER_TLS_ENABLED --cafile $ORDERER_CA >&log.txt
|
|
res=$?
|
|
set +x
|
|
fi
|
|
let rc=$res
|
|
COUNTER=$(expr $COUNTER + 1)
|
|
done
|
|
cat log.txt
|
|
verifyResult $res "Channel creation failed"
|
|
echo
|
|
echo "===================== Channel '$CHANNEL_NAME' created ===================== "
|
|
echo
|
|
}
|
|
|
|
# queryCommitted ORG
|
|
joinChannel() {
|
|
ORG=$1
|
|
setGlobals $ORG
|
|
local rc=1
|
|
local COUNTER=1
|
|
## Sometimes Join takes time, hence retry
|
|
while [ $rc -ne 0 -a $COUNTER -lt $MAX_RETRY ] ; do
|
|
sleep $DELAY
|
|
set -x
|
|
peer channel join -b ./channel-artifacts/$CHANNEL_NAME.block >&log.txt
|
|
res=$?
|
|
set +x
|
|
let rc=$res
|
|
COUNTER=$(expr $COUNTER + 1)
|
|
done
|
|
cat log.txt
|
|
echo
|
|
verifyResult $res "After $MAX_RETRY attempts, peer0.org${ORG} has failed to join channel '$CHANNEL_NAME' "
|
|
}
|
|
|
|
updateAnchorPeers() {
|
|
ORG=$1
|
|
setGlobals $ORG
|
|
|
|
if [ -z "$CORE_PEER_TLS_ENABLED" -o "$CORE_PEER_TLS_ENABLED" = "false" ]; then
|
|
set -x
|
|
peer channel update -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com -c $CHANNEL_NAME -f ./channel-artifacts/${CORE_PEER_LOCALMSPID}anchors.tx >&log.txt
|
|
res=$?
|
|
set +x
|
|
else
|
|
set -x
|
|
peer channel update -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com -c $CHANNEL_NAME -f ./channel-artifacts/${CORE_PEER_LOCALMSPID}anchors.tx --tls $CORE_PEER_TLS_ENABLED --cafile $ORDERER_CA >&log.txt
|
|
res=$?
|
|
set +x
|
|
fi
|
|
cat log.txt
|
|
verifyResult $res "Anchor peer update failed"
|
|
echo "===================== Anchor peers updated for org '$CORE_PEER_LOCALMSPID' on channel '$CHANNEL_NAME' ===================== "
|
|
sleep $DELAY
|
|
echo
|
|
}
|
|
|
|
verifyResult() {
|
|
if [ $1 -ne 0 ]; then
|
|
echo "!!!!!!!!!!!!!!! "$2" !!!!!!!!!!!!!!!!"
|
|
echo "========= ERROR !!! FAILED to execute End-2-End Scenario ==========="
|
|
echo
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
FABRIC_CFG_PATH=${PWD}/configtx
|
|
|
|
## Create channeltx
|
|
echo "### Generating channel configuration transaction '${CHANNEL_NAME}.tx' ###"
|
|
createChannelTx
|
|
|
|
## Create anchorpeertx
|
|
echo "### Generating channel configuration transaction '${CHANNEL_NAME}.tx' ###"
|
|
createAncorPeerTx
|
|
|
|
FABRIC_CFG_PATH=$PWD/../config/
|
|
|
|
## Create channel
|
|
echo "Creating channel "$CHANNEL_NAME
|
|
createChannel
|
|
|
|
## Join all the peers to the channel
|
|
echo "Join Org1 peers to the channel..."
|
|
joinChannel 1
|
|
echo "Join Org2 peers to the channel..."
|
|
joinChannel 2
|
|
|
|
## Set the anchor peers for each org in the channel
|
|
echo "Updating anchor peers for org1..."
|
|
updateAnchorPeers 1
|
|
echo "Updating anchor peers for org2..."
|
|
updateAnchorPeers 2
|
|
|
|
echo
|
|
echo "========= Channel successfully joined =========== "
|
|
echo
|
|
|
|
exit 0
|