0% found this document useful (0 votes)
1 views7 pages

Fabric Chaincode Deployment Guide

This guide outlines the steps for deploying and testing a simple key-value chaincode in Hyperledger Fabric version 2.5 and above. It includes prerequisites, network setup, chaincode preparation, installation on organizations, approval of chaincode definitions, committing chaincode, invoking, and querying chaincode. The document provides detailed commands for each step to ensure a successful deployment.

Uploaded by

ganesh
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
1 views7 pages

Fabric Chaincode Deployment Guide

This guide outlines the steps for deploying and testing a simple key-value chaincode in Hyperledger Fabric version 2.5 and above. It includes prerequisites, network setup, chaincode preparation, installation on organizations, approval of chaincode definitions, committing chaincode, invoking, and querying chaincode. The document provides detailed commands for each step to ensure a successful deployment.

Uploaded by

ganesh
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 7

Hyperledger Fabric Chaincode

Deployment (Latest Version)


This guide provides a fully working setup for deploying and testing a simple key-value
chaincode in Hyperledger Fabric (v2.5+).

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

Step 3: Start Network


./network.sh up createChannel -ca

Step 4: Prepare Chaincode


mkdir -p ../chaincode/freshkv/go
cd ../chaincode/freshkv/go
go mod init freshkv
go get github.com/hyperledger/fabric-contract-api-go/contractapi
Create freshkv.go with Put/Get methods
Run:
go mod tidy

Step 5: Prepare Chaincode


cd ~/fabric-samples/test-network
./network.sh down
./network.sh up createChannel -ca
Step 6: Package Chaincode
cd ~/fabric-samples/test-network

set peer path

export PATH=${PWD}/../bin:$PATH
export FABRIC_CFG_PATH=$PWD/../config/

peer lifecycle chaincode package freshkv.tar.gz \


--path ../chaincode/freshkv/go \
--lang golang --label freshkv_1

Step 7: Install Chaincode on Org1 and Org2


 Set Org1 environment and run install

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

peer lifecycle chaincode install freshkv.tar.gz

 Set Org2 environment and run install

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

peer lifecycle chaincode queryinstalled

Step 9: Approve Chaincode Definition

Approve for Org 1:

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

peer lifecycle chaincode approveformyorg \

--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"

Now Org 2 , approval

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

peer lifecycle chaincode approveformyorg \

--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

peer lifecycle chaincode commit \

--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"

Step 12: Invoke Chaincode

Set terminal to Org 1:


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

Invoke the chaincode


peer chaincode invoke -o localhost:7050 \

--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 mychannel -n freshkv --waitForEvent \

-c '{"function":"InitLedger","Args":[]}'

Step 13: Query Chaincode

peer chaincode query -C mychannel -n freshkv -c '{"function":"GetAllKeys","Args":[]}'

peer chaincode invoke -o localhost:7050 \


--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 mychannel -n freshkv --waitForEvent \
-c '{"function":"Put","Args":["user1","Alice"]}'

peer chaincode query -C mychannel -n freshkv -c '{"function":"Get","Args":["user1"]}'

peer chaincode query -C mychannel -n freshkv -c '{"function":"GetHistoryForKey","Args":


["user1"]}'

peer chaincode invoke -o localhost:7050 \


--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 mychannel -n freshkv --waitForEvent \
-c '{"function":"Put","Args":["user1","Bob"]}'

peer chaincode query -C mychannel -n freshkv -c '{"function":"GetHistoryForKey","Args":


["user1"]}'

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy