From 9255bf940d03022d76e8ac6d462f6b91b0fa1057 Mon Sep 17 00:00:00 2001 From: Dhiran Kumar Yadav <97027545+dhiran-gen@users.noreply.github.com> Date: Sun, 23 Feb 2025 19:03:48 +0530 Subject: [PATCH] Create issue.md added instruction what i faced while setting up foirst network Signed-off-by: Dhiran Kumar Yadav <97027545+dhiran-gen@users.noreply.github.com> --- learn/day1/issue.md | 136 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 136 insertions(+) create mode 100644 learn/day1/issue.md diff --git a/learn/day1/issue.md b/learn/day1/issue.md new file mode 100644 index 00000000..da18e593 --- /dev/null +++ b/learn/day1/issue.md @@ -0,0 +1,136 @@ +# Hyperledger Fabric Test Network Setup + +## Prerequisites +Ensure you have the following installed before proceeding: +- **Docker** (Latest stable version) +- **Docker Compose** +- **Go** (>=1.20) +- **Node.js & NPM** (For chaincode development, optional) +- **jq, wget, curl** +- **Hyperledger Fabric binaries and samples** + +--- + +## 1️⃣ Download Hyperledger Fabric Binaries & Samples +If you faced issues with missing peer binaries, ensure you download them correctly: + +```bash +curl -sSL https://bit.ly/2ysbOFE | bash -s -- 2.5.0 +``` +This will download the **Fabric binaries**, **Docker images**, and **samples** for version `2.5.0`. + +If you need a different version, replace `2.5.0` with the desired version. + +--- + +## 2️⃣ Export Environment Variables +After downloading, set the environment variables to ensure Fabric binaries are accessible: + +```bash +export PATH=$PATH:$HOME/go/fabric-samples/bin +export FABRIC_CFG_PATH=$HOME/go/fabric-samples/config +``` + +To make these exports permanent, add them to your **~/.bashrc** or **~/.zshrc** file: +```bash +echo 'export PATH=$PATH:$HOME/go/fabric-samples/bin' >> ~/.zshrc +echo 'export FABRIC_CFG_PATH=$HOME/go/fabric-samples/config' >> ~/.zshrc +source ~/.zshrc +``` + +--- + +## 3️⃣ Start the Fabric Network +Navigate to the **test-network** directory: +```bash +cd ~/go/fabric-samples/test-network +``` +Then start the network with: +```bash +./network.sh down +./network.sh up createChannel -ca +``` +This will: +- Bring up the Fabric network (Orderer + Peers) +- Create a channel (`mychannel`) +- Use Certificate Authorities (CAs) for identity management + +--- + +## 4️⃣ Deploy Chaincode +To deploy the **basic** chaincode: +```bash +./network.sh deployCC -ccn basic -ccp ../asset-transfer-basic/chaincode-go -ccl go +``` + +Verify the deployment: +```bash +peer chaincode query -C mychannel -n basic -c '{"Args":["GetAllAssets"]}' +``` + +--- + +## 5️⃣ Set Organization Environment Variables +To interact with the network as **Org1**, export these variables: +```bash +export CORE_PEER_TLS_ENABLED=true +export CORE_PEER_LOCALMSPID="Org1MSP" +export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt +export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp +export CORE_PEER_ADDRESS=localhost:7051 +``` +For **Org2**, use: +```bash +export CORE_PEER_LOCALMSPID="Org2MSP" +export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt +export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp +export CORE_PEER_ADDRESS=localhost:9051 +``` + +--- + +## 6️⃣ Invoke Chaincode +To **initialize the ledger**: +```bash +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 -C mychannel -n basic -c '{"Args":["InitLedger"]}' +``` +⚠️ **Note:** Do NOT use `--isInit` as the new Fabric chaincode model doesn't require it. + +To **query the ledger**: +```bash +peer chaincode query -C mychannel -n basic -c '{"Args":["GetAllAssets"]}' +``` + +--- + +## 7️⃣ Shutdown the Network +To stop and clean up everything: +```bash +./network.sh down +``` + +This will: +- Remove all containers +- Delete crypto materials and channel artifacts + +--- + +## Troubleshooting + +### 🛑 `peer: command not found` +- Ensure the Fabric binaries are added to `PATH`. +- Run: `export PATH=$PATH:$HOME/go/fabric-samples/bin` + +### 🛑 `Config File "core" Not Found` +- Ensure `FABRIC_CFG_PATH` is set correctly. +- Run: `export FABRIC_CFG_PATH=$HOME/go/fabric-samples/config` + +### 🛑 `Cannot run peer because cannot init crypto` +- The MSP path is incorrect or missing. +- Verify it exists: `ls -l $FABRIC_CFG_PATH/msp` +- Try regenerating the MSP: `./network.sh down && ./network.sh up createChannel -ca` + +--- + +This README provides a clear step-by-step guide to setting up and troubleshooting your Hyperledger Fabric network. 🚀 +