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}-chaincode
Install 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 queryinstalled
You should see the following output,
Installed chaincodes on peer:
Package ID: cyliu-chaincode:146fb9941bc5ea850274ed72c23ce43451a4bc5ad7213b3d63db8419ef39e481, Label: cyliu-chaincode
Repeat 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 queryinstalled
And 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 queryinstalled
Approve 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 1
Repeat 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 1
Also 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 1
To 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 1
You 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: true
If 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}-chaincode
You 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?