Deploying the Smart Contract
A Step-by-Step guideline for deploying the smart contract.
Installation and approval of Chaincode
Smart Contracts are officially called as chaincode in Fabric. A peer node can install a smart contract, meaning the smart contract is physically installed to the peer node.
After installation, the chaincode should be approved by all organizations in the channel. Once a smart contract is approved and committed, the smart contract is now active.
The functions in the smart contract can be invoked as transactions. However, only those nodes who have installed the same smart contract can invoke functions (transactions).
Create a Fabric smart contract package using Fabric command "peer"
In terminal 1,
peer lifecycle chaincode package ~/${USER}-chaincode.gz \
--path ~/fabric_lab_code \
--lang golang \
--label ${USER}-chaincodeInstall your smart contract package on each peer
In terminal 1,
# Install the packaged smart contract
peer lifecycle chaincode install ~/${USER}-chaincode.gz
# Verify if the smart contract is installed
peer lifecycle chaincode queryinstalledYou should see the following output,
Installed chaincodes on peer:
Package ID: cyliu-chaincode:146fb9941bc5ea850274ed72c23ce43451a4bc5ad7213b3d63db8419ef39e481, Label: cyliu-chaincodeRepeat the command in terminal 2.
# Install the packaged smart contract
peer lifecycle chaincode install ~/${USER}-chaincode.gz
# Verify if the smart contract is installed
peer lifecycle chaincode queryinstalledAnd also terminal 3,
# Install the packaged smart contract
peer lifecycle chaincode install ~/${USER}-chaincode.gz
# Verify if the smart contract is installed
peer lifecycle chaincode queryinstalledApprove the installed smart contract on each peer
In terminal 1,
#Grep the package id of your smart contract
PACKAGEID=$(peer lifecycle chaincode queryinstalled | grep ${USER}-chaincode | sed -n 's/.*Package ID: \(.*\),.*/\1/p')
#Approve your smart contract
peer lifecycle chaincode approveformyorg -o node-1:7050 \
--name ${USER}-chaincode --channelID ${USER}-channel \
--package-id ${PACKAGEID} --version 0 --sequence 1Repeat in terminal 2,
#Grep the package id of your smart contract
PACKAGEID=$(peer lifecycle chaincode queryinstalled | grep ${USER}-chaincode | sed -n 's/.*Package ID: \(.*\),.*/\1/p')
#Approve your smart contract
peer lifecycle chaincode approveformyorg -o node-1:7050 \
--name ${USER}-chaincode --channelID ${USER}-channel \
--package-id ${PACKAGEID} --version 0 --sequence 1Also in terminal 3
#Grep the package id of your smart contract
PACKAGEID=$(peer lifecycle chaincode queryinstalled | grep ${USER}-chaincode | sed -n 's/.*Package ID: \(.*\),.*/\1/p')
#Approve your smart contract
peer lifecycle chaincode approveformyorg -o node-1:7050 \
--name ${USER}-chaincode --channelID ${USER}-channel \
--package-id ${PACKAGEID} --version 0 --sequence 1To verify if all peers approve your smart contract. Execute the following command in terminal 1.
peer lifecycle chaincode checkcommitreadiness -o node-1:7050 \
--name ${USER}-chaincode --channelID ${USER}-channel --version 0 \
--sequence 1You should see the following output
Chaincode definition for chaincode 'cyliu-chaincode', version '0', sequence '1' on channel 'cyliu-channel' approval status by org:
greatinsurance: true
police: true
smartinsurance: trueIf any organization show false, wait a few seconds and execute the command again until all organization show true
Execute the following command to commit the approved smart contract
peer lifecycle chaincode commit -o node-1:7050 \
--name ${USER}-chaincode --channelID ${USER}-channel \
--version 0 --sequence 1 \
--peerAddresses node-1:7051 \
--peerAddresses node-2:7051 \
--peerAddresses node-3:7051
#Verify the commited smart contract
peer lifecycle chaincode querycommitted \
--channelID ${USER}-channel --name ${USER}-chaincodeYou should see the following output
Committed chaincode definition for chaincode 'cyliu-chaincode' on channel 'cyliu-channel':
Version: 0, Sequence: 1, Endorsement Plugin: escc, Validation Plugin: vscc, Approvals: [greatinsurance: true, police: true, smartinsurance: true]Now your smart contract is ready.
Last updated
Was this helpful?