Fabric Chaincode Deployment Guide
Fabric Chaincode Deployment Guide
Step 1: Prerequisites
Docker and Docker Compose installed.
Fabric samples downloaded from https://github.com/hyperledger/fabric-samples
Go (1.18+) installed for chaincode development.
Step 2: Cleanup
cd fabric-samples/test-network
./network.sh down
docker system prune -af --volumes
export PATH=${PWD}/../bin:$PATH
export FABRIC_CFG_PATH=$PWD/../config/
export CORE_PEER_LOCALMSPID="Org1MSP"
export CORE_PEER_ADDRESS=localhost:7051
export CORE_PEER_TLS_ENABLED=true
export
CORE_PEER_MSPCONFIGPATH=$PWD/organizations/peerOrganizations/org1.example
.com/users/Admin@org1.example.com/msp
export
CORE_PEER_TLS_ROOTCERT_FILE=$PWD/organizations/peerOrganizations/org1.exam
ple.com/peers/peer0.org1.example.com/tls/ca.crt
export CORE_PEER_LOCALMSPID="Org2MSP"
export CORE_PEER_TLS_ENABLED=true
export CORE_PEER_ADDRESS=localhost:9051
export
CORE_PEER_MSPCONFIGPATH=$PWD/organizations/peerOrganizations/org2.example
.com/users/Admin@org2.example.com/msp
export
CORE_PEER_TLS_ROOTCERT_FILE=$PWD/organizations/peerOrganizations/org2.exam
ple.com/peers/peer0.org2.example.com/tls/ca.crt
peer lifecycle chaincode install freshkv.tar.gz
Step 8: Query Installed Chaincode
export CORE_PEER_LOCALMSPID="Org1MSP"
export CORE_PEER_ADDRESS=localhost:7051
export CORE_PEER_TLS_ENABLED=true
export
CORE_PEER_MSPCONFIGPATH=$PWD/organizations/peerOrganizations/org1.example.co
m/users/Admin@org1.example.com/msp
export
CORE_PEER_TLS_ROOTCERT_FILE=$PWD/organizations/peerOrganizations/org1.example.
com/peers/peer0.org1.example.com/tls/ca.crt
--channelID mychannel \
--name freshkv \
--version 1.0 \
--package-id freshkv_1:<your_package_id> \
--sequence 1 \
--signature-policy "OR('Org1MSP.peer','Org2MSP.peer')" \
--tls \
--orderer localhost:7050 \
--ordererTLSHostnameOverride orderer.example.com \
--cafile
"$PWD/organizations/ordererOrganizations/example.com/orderers/orderer.example.com
/msp/tlscacerts/tlsca.example.com-cert.pem"
export CORE_PEER_LOCALMSPID="Org2MSP"
export CORE_PEER_TLS_ENABLED=true
export CORE_PEER_ADDRESS=localhost:9051
export
CORE_PEER_MSPCONFIGPATH=$PWD/organizations/peerOrganizations/org2.example.co
m/users/Admin@org2.example.com/msp
export
CORE_PEER_TLS_ROOTCERT_FILE=$PWD/organizations/peerOrganizations/org2.example.
com/peers/peer0.org2.example.com/tls/ca.crt
--channelID mychannel \
--name freshkv \
--version 1.0 \
--package-id freshkv_1:<your_package_id> \
--sequence 1 \
--signature-policy "OR('Org1MSP.peer','Org2MSP.peer')" \
--tls \
--orderer localhost:7050 \
--ordererTLSHostnameOverride orderer.example.com \
--cafile
"$PWD/organizations/ordererOrganizations/example.com/orderers/orderer.example.com
/msp/tlscacerts/tlsca.example.com-cert.pem"
Step 10: Commit Chaincode
--channelID mychannel \
--name freshkv \
--version 1.0 \
--sequence 1 \
--signature-policy "OR('Org1MSP.peer','Org2MSP.peer')" \
--tls \
--orderer localhost:7050 \
--ordererTLSHostnameOverride orderer.example.com \
--cafile
"$PWD/organizations/ordererOrganizations/example.com/orderers/orderer.example.com
/msp/tlscacerts/tlsca.example.com-cert.pem" \
--peerAddresses localhost:7051 \
--tlsRootCertFiles
"$PWD/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.co
m/tls/ca.crt" \
--peerAddresses localhost:9051 \
--tlsRootCertFiles
"$PWD/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.co
m/tls/ca.crt"
export CORE_PEER_TLS_ENABLED=true
export CORE_PEER_ADDRESS=localhost:9051
export
CORE_PEER_MSPCONFIGPATH=$PWD/organizations/peerOrganizations/org2.example.co
m/users/Admin@org2.example.com/msp
export
CORE_PEER_TLS_ROOTCERT_FILE=$PWD/organizations/peerOrganizations/org2.example.
com/peers/peer0.org2.example.com/tls/ca.crt
--ordererTLSHostnameOverride orderer.example.com \
--tls \
--cafile
"$PWD/organizations/ordererOrganizations/example.com/orderers/orderer.example.com
/msp/tlscacerts/tlsca.example.com-cert.pem" \
--peerAddresses localhost:7051 \
--tlsRootCertFiles
"$PWD/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.co
m/tls/ca.crt" \
-c '{"function":"InitLedger","Args":[]}'