Lifecycle of Hyperledger Fabric Chaincode Development and Deployment

On , by

In this example, we’ll be using the Fabcar Chaincode example provided by Fabric sample. [https://github.com/hyperledger/fabric-samples/tree/master/chaincode/fabcar/go] which uses the basic network [https://github.com/hyperledger/fabric-samples/tree/master/basic-network] as the Hyperledger Fabric network.

Here I assume that you’ve a good understanding about how Fabric works and how the docker instances for the Fabric network is managed.

Clone the Fabric sample#clone-the-fabric-sample

As the first step, clone the Fabric to your local machine by cloneing it.

git clone https://github.com/hyperledger/fabric-samples
cd fabric-samples

Starting the fabric network#starting-the-fabric-network

In order to start the fabcar chaincode, go into the fabcar folder and run the startFabric.sh script.

cd fabcard
./startFabric.sh

After this if you want to modify the chaincode and re-deploy you can use the cli container that is running along with the other services.

set -e
# don't rewrite paths for Windows Git Bash users

export MSYS_NO_PATHCONV=1
starttime=$(date +%s)
LANGUAGE=${1:-"golang"}
CC_SRC_PATH=github.com/fabcar/go
if [ "$LANGUAGE" = "node" -o "$LANGUAGE" = "NODE" ]; then
    CC_SRC_PATH=/opt/gopath/src/github.com/fabcar/node
fi

CC_VERSION=1.1
docker exec -e "CORE_PEER_LOCALMSPID=Org1MSP" -e "CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp" cli peer chaincode install -n fabcar -v $CC_VERSION -p "$CC_SRC_PATH" -l "$LANGUAGE"

docker exec -e "CORE_PEER_LOCALMSPID=Org1MSP" -e "CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp" cli peer chaincode upgrade -o orderer.example.com:7050 -C mychannel -n fabcar -l "$LANGUAGE" -v $CC_VERSION -c '{"Args":[""]}' -P "OR ('Org1MSP.member','Org2MSP.member')"

The above commands installs a new version of chaincode and upgrades the chaincode by calling the init function. Make sure you change the CC_VERSION everytime you call the script to update chaincode.

Also this will create a new image for each version, so make sure you delete the old images to avoid running out of storage.

Share this article on Twitter or LinkedIn
Previous Blog Post: Getting smart with React Navigation
Subscribe to Sudo vs Root

Our newsletter rolls out every month. No fluff. Pure content.

Comments and Discussions
Skcript https://www.skcript.com/svr/lifecycle-of-hyperledger-fabric-chaincode-development-and-deployment/ https://www.skcript.com/svrmedia/heroes/f/lifecycle-of-Hyperledger-fabric-chaincode-development-and-deployment.jpg