Skip to content

chaihanij/hyperledger-fabric-application

Repository files navigation

HYPERLEDGER FABRIC APPLICATION

Generating Certs

STEP 1. Start CA Server

docker-compose -f docker-compose-ca.yaml up

STEP 2. Genereate Certification.

docker exec -it ca-client /etc/hyperledger/fabric-ca-client/scripts/gen-certs.sh

STEP 3.

docker cp ca-client:/etc/hyperledger/fabric-ca-client/crypto-config ./crypto-config

Generating Network Artifacts

STEP 1. Generating Artifacts

configtxgen -profile OrdererGenesis -channelID syschannel -outputBlock ./orderer/genesis.block
configtxgen -profile MainChannel -outputCreateChannelTx ./channels/mainchannel.tx -channelID mainchannel
configtxgen -profile MainChannel -outputAnchorPeersUpdate ./channels/org1-anchors.tx -channelID mainchannel -asOrg org1
configtxgen -profile MainChannel -outputAnchorPeersUpdate ./channels/org2-anchors.tx -channelID mainchannel -asOrg org2

STEP 2. Start services.

docker-compose up

STEP 3. Create Channel

docker exec cli-peer0-org1 bash -c 'peer channel create -c mainchannel -f ./channels/mainchannel.tx -o orderer0-service:7050 --tls --cafile=/etc/hyperledger/orderers/msp/tlscacerts/ca-root-7054.pem'

STEP 4. Join block

docker exec cli-peer0-org1 bash -c 'peer channel join -b mainchannel.block'
docker exec cli-peer0-org1 bash -c 'cp mainchannel.block ./channels/mainchannel.block'
docker exec cli-peer1-org1 bash -c 'peer channel join -b ./channels/mainchannel.block'
docker exec cli-peer0-org2 bash -c 'peer channel join -b ./channels/mainchannel.block'
docker exec cli-peer1-org2 bash -c 'peer channel join -b ./channels/mainchannel.block'

STEP 4. Update the transection to encrypt

docker exec cli-peer0-org1 bash -c 'peer channel update -o orderer0-service:7050 --tls --cafile=/etc/hyperledger/orderers/msp/tlscacerts/ca-root-7054.pem -c mainchannel -f ./channels/org1-anchors.tx'
docker exec cli-peer0-org2 bash -c 'peer channel update -o orderer0-service:7050 --tls --cafile=/etc/hyperledger/orderers/msp/tlscacerts/ca-root-7054.pem -c mainchannel -f ./channels/org2-anchors.tx'

STEP 5. Install Chaincode please wait step 4 15 second

docker exec cli-peer0-org1 bash -c 'peer chaincode install -p rawresources -n rawresources -v 0'
docker exec cli-peer1-org1 bash -c 'peer chaincode install -p rawresources -n rawresources -v 0'
docker exec cli-peer0-org2 bash -c 'peer chaincode install -p rawresources -n rawresources -v 0'
docker exec cli-peer1-org2 bash -c 'peer chaincode install -p rawresources -n rawresources -v 0'

STEP 6. Test Network

docker exec cli-peer0-org1 bash -c "peer chaincode instantiate -C mainchannel -n rawresources -v 0 -c '{\"Args\":[]}' -o orderer0-service:7050 --tls --cafile=/etc/hyperledger/orderers/msp/tlscacerts/ca-root-7054.pem"

in contrainner

Store Data

docker exec -it cli-peer0-org1 bash

peer chaincode invoke -C mainchannel -n rawresources -c '{"Args":["store", "{\"id\": \"1\",\"name\":\"Iron Ore\",\"weight\":42000}"]}' -o orderer0-service:7050 --tls --cafile=/etc/hyperledger/orderers/msp/tlscacerts/ca-root-7054.pem

peer chaincode invoke -C mainchannel -n rawresources -c '{"Args":["store", "{\"id\": \"2\",\"name\":\"Iron Ore\",\"weight\":20000}"]}' -o orderer0-service:7050 --tls --cafile=/etc/hyperledger/orderers/msp/tlscacerts/ca-root-7054.pem

peer chaincode invoke -C mainchannel -n rawresources -c '{"Args":["store", "{\"id\": \"3\",\"name\":\"Iron Ore\",\"weight\":10000}"]}' -o orderer0-service:7050 --tls --cafile=/etc/hyperledger/orderers/msp/tlscacerts/ca-root-7054.pem

Query Data

docker exec cli-peer0-org1 bash -c "peer chaincode query -C mainchannel -n rawresources -c '{\"Args\":[\"index\",\"\",\"\"]}' -o orderer0-service:7050 --tls --cafile=/etc/hyperledger/orderers/msp/tlscacerts/ca-root-7054.pem"

docker exec cli-peer1-org1 bash -c "peer chaincode query -C mainchannel -n rawresources -c '{\"Args\":[\"index\",\"\",\"\"]}' -o orderer0-service:7050 --tls --cafile=/etc/hyperledger/orderers/msp/tlscacerts/ca-root-7054.pem"

docker exec cli-peer0-org2 bash -c "peer chaincode query -C mainchannel -n rawresources -c '{\"Args\":[\"index\",\"\",\"\"]}' -o orderer0-service:7050 --tls --cafile=/etc/hyperledger/orderers/msp/tlscacerts/ca-root-7054.pem"

docker exec cli-peer1-org2 bash -c "peer chaincode query -C mainchannel -n rawresources -c '{\"Args\":[\"index\",\"\",\"\"]}' -o orderer0-service:7050 --tls --cafile=/etc/hyperledger/orderers/msp/tlscacerts/ca-root-7054.pem"

Update Data

docker exec -it cli-peer0-org1 bash

peer chaincode invoke -C mainchannel -n rawresources -c '{"Args":["update", "3",  "{\"id\": \"3\",\"name\":\"Iron Ore\",\"weight\":20000, \"visible\": true }"]}' -o orderer0-service:7050 --tls --cafile=/etc/hyperledger/orderers/msp/tlscacerts/ca-root-7054.pem

Update Chaincode

GET Current Block

check from channel

docker exec cli-peer0-org1 bash -c "peer channel getinfo -c mainchannel --tls --cafile=/etc/hyperledger/orderers/msp/tlscacerts/ca-root-7054.pem"

or check from log

docker logs peer0-org1-service 2>&1 |grep 'Received block'
docker exec cli-peer0-org1 bash -c 'peer chaincode install -p rawresources -n rawresources -v 2'
docker exec cli-peer1-org1 bash -c 'peer chaincode install -p rawresources -n rawresources -v 2'
docker exec cli-peer0-org2 bash -c 'peer chaincode install -p rawresources -n rawresources -v 2'
docker exec cli-peer1-org2 bash -c 'peer chaincode install -p rawresources -n rawresources -v 2'

*** Upgrade Channel

docker exec cli-peer0-org1 bash -c "peer chaincode upgrade -C mainchannel -n rawresources -v 2 -c '{"Args":[]}' -o orderer0-service:7050 --tls --cafile=/etc/hyperledger/orderers/msp/tlscacerts/ca-root-7054.pem"
  • Remark testing invoke or query
docker exec -it cli-peer0-org1 bash

peer chaincode invoke -C mainchannel -n rawresources -c '{"Args":["store", "{"id":2,"name":"Iron Ore","weight":20000}"]}' -o orderer0-service:7050 --tls --cafile=/etc/hyperledger/orderers/msp/tlscacerts/ca-root-7054.pem peer chaincode invoke -C mainchannel -n rawresources -c '{"Args":["store", "{"id":3,"name":"Iron Ore","weight":10000}"]}' -o orderer0-service:7050 --tls --cafile=/etc/hyperledger/orderers/msp/tlscacerts/ca-root-7054.pem

peer chaincode query -C mainchannel -n rawresources -c '{"Args":["queryString", "{"selector":{ "weight": { "$gt":5000 } }}"]}' -o orderer0-service:7050 --tls --cafile=/etc/hyperledger/orderers/msp/tlscacerts/ca-root-7054.pem

Application client

Run application

cd back-end

HYPERLEDGER_CONFIG_PATH=/Users/kongnb2k/Entronica/learn/hyperledger-fabric-application/back-end/hyperledger/config.yaml go run main.go

Query Data

curl --location --request GET 'http://localhost:3000/v1/rawresources'

Invoke Data

curl --location --request POST 'http://localhost:3000/v1/rawresources' \
--header 'Content-Type: application/json' \
--data-raw '{
    "name": "ENTRONICA",
    "weight": 10000
}'

About

Demo hyperledger fabric network and application

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages