earlution

Fabric Network Setup Automation v0.4

Oct 10th, 2024
7
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #!/bin/bash
  2.  
  3. echo "Navigating to the Projects directory..."
  4. cd ~/Projects/
  5.  
  6. echo "Setting up environment variables for Fabric binaries and configuration files..."
  7. export PATH=${PWD}/../bin:$PATH
  8. export FABRIC_CFG_PATH=$PWD/../config/
  9.  
  10. echo "Checking if Homebrew is installed..."
  11. if ! command -v brew &> /dev/null
  12. then
  13.     echo "Homebrew could not be found. Please install Homebrew and rerun the script."
  14.     exit 1
  15. fi
  16.  
  17. echo "Installing Go language..."
  18. brew install go
  19. if [ $? -ne 0 ]; then
  20.     echo "Error installing Go. Exiting."
  21.     exit 1
  22. fi
  23.  
  24. echo "Verifying Go installation..."
  25. go version
  26. if [ $? -ne 0 ]; then
  27.     echo "Go installation verification failed. Exiting."
  28.     exit 1
  29. fi
  30.  
  31. echo "Cloning Hyperledger Fabric samples..."
  32. git clone https://github.com/hyperledger/fabric-samples.git
  33. if [ $? -ne 0 ]; then
  34.     echo "Error cloning fabric-samples repository. Exiting."
  35.     exit 1
  36. fi
  37.  
  38. echo "Downloading Fabric binaries and Docker images..."
  39. curl -sSL https://bit.ly/2ysbOFE | bash -s
  40. if [ $? -ne 0 ]; then
  41.     echo "Error downloading Fabric binaries and Docker images. Exiting."
  42.     exit 1
  43. fi
  44.  
  45. echo "Navigating to the test network directory..."
  46. cd fabric-samples/test-network
  47.  
  48. echo "Bringing up the Fabric test network..."
  49. ./network.sh up createChannel
  50. if [ $? -ne 0 ]; then
  51.     echo "Error bringing up Fabric network. Exiting."
  52.     exit 1
  53. fi
  54.  
  55. echo "Setting environment variables for Org1..."
  56. export CORE_PEER_TLS_ENABLED=true
  57. export CORE_PEER_LOCALMSPID="Org1MSP"
  58. export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
  59. export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
  60. export CORE_PEER_ADDRESS=localhost:7051
  61. peer lifecycle chaincode querycommitted --channelID mychannel --name basic
  62.  
  63. echo "Package and install chaincode on Org1..."
  64. peer lifecycle chaincode package basic.tar.gz --path ../asset-transfer-basic/chaincode-go --lang golang --label basic_1.0
  65. if [ $? -ne 0 ]; then
  66.     echo "Error packaging chaincode. Exiting."
  67.     exit 1
  68. fi
  69. peer lifecycle chaincode install basic.tar.gz
  70. if [ $? -ne 0 ]; then
  71.     echo "Error installing chaincode. Exiting."
  72.     exit 1
  73. fi
  74.  
  75. echo "Querying chaincode committed status for Org1..."
  76. echo "Verify that the correct sequence number is outputted."
  77. export CORE_PEER_LOCALMSPID="Org1MSP"
  78. export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
  79. export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
  80. export CORE_PEER_ADDRESS=localhost:7051
  81.  
  82.  | grep -q 'Version: 1.0, Sequence: 1, Endorsement Plugin: escc, Validation Plugin: vscc, Approvals: \[Org1MSP: true\]'
  83. if [ $? -ne 0 ]; then
  84.     echo "Error: Chaincode is not committed with expected parameters for Org1. Exiting."
  85.     exit 1
  86. fi
  87.  
  88. echo "Setting environment variables for Org2..."
  89. export CORE_PEER_LOCALMSPID="Org2MSP"
  90. export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt
  91. export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp
  92. export CORE_PEER_ADDRESS=localhost:9051
  93.  
  94. echo "Package and install chaincode on Org2..."
  95. peer lifecycle chaincode install basic.tar.gz
  96.  
  97. echo "Querying chaincode committed status for Org2..."
  98. echo "Verify that the correct sequence number is outputted."
  99. export CORE_PEER_LOCALMSPID="Org2MSP"
  100. export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt
  101. export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp
  102. export CORE_PEER_ADDRESS=localhost:9051
  103.  
  104.  | grep -q 'Version: 1.0, Sequence: 1, Endorsement Plugin: escc, Validation Plugin: vscc, Approvals: \[Org2MSP: true\]'
  105. if [ $? -ne 0 ]; then
  106.     echo "Error: Chaincode is not committed with expected parameters for Org2. Exiting."
  107.     exit 1
  108. fi
  109.  
  110. echo "Approve chaincode definition for Org1..."
  111. export PACKAGE_ID=$(peer lifecycle chaincode queryinstalled | grep -o 'Package ID: \S*' | awk '{print $3}')
  112. export CORE_PEER_LOCALMSPID="Org1MSP"
  113. export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
  114. export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
  115. export CORE_PEER_ADDRESS=localhost:7051
  116.  
  117. peer lifecycle chaincode approveformyorg -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --channelID mychannel --name basic --version 1.0 --package-id $PACKAGE_ID --sequence 1 --tls --cafile ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem
  118. if [ $? -ne 0 ]; then
  119.     echo "Error approving chaincode definition. Exiting."
  120.     exit 1
  121. fi
  122.  
  123. Echo "Approve chaincode definition for Org2..."
  124. export CORE_PEER_LOCALMSPID="Org2MSP"
  125. export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt
  126. export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp
  127. export CORE_PEER_ADDRESS=localhost:9051
  128.  
  129. peer lifecycle chaincode approveformyorg -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --channelID mychannel --name basic --version 1.0 --package-id $PACKAGE_ID --sequence 1 --tls --cafile ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem
  130.  
  131. echo "Commit chaincode definition to the channel..."
  132. peer lifecycle chaincode commit -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --channelID mychannel --name basic --version 1.0 --sequence 1 --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.com/tls/ca.crt --peerAddresses localhost:9051 --tlsRootCertFiles ${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt
  133. if [ $? -ne 0 ]; then
  134.     echo "Error committing chaincode definition. Exiting."
  135.     exit 1
  136. fi
  137.  
  138. echo "Invoking chaincode transaction..."
  139. 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":["CreateAsset","asset1","blue","5","Tom","100"]}' --peerAddresses localhost:7051 --tlsRootCertFiles ${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddresses localhost:9051 --tlsRootCertFiles ${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt
  140. if [ $? -ne 0 ]; then
  141.     echo "Error invoking chaincode transaction. Exiting."
  142.     exit 1
  143. fi
  144.  
Add Comment
Please, Sign In to add comment