Tip |
---|
Step - by - step guide on how to Install Insights Enterprise - Hyperledger Fabric Network. |
Installing Hyperledger Network covers the initial setup procedures including Installation, Configurations (Hardware, Software, and Network) and various Commands. Please note that these instructions are only for Linux (Debian & Ubuntu).
Prerequisites
title | Hardware Configuration |
---|
Note |
---|
Configuration varies depending on the work load. |
title | Software |
---|
- Docker 17.06.2-ce or greater, Docker Compose 1.14.0 or greater , curl
- Go 1.11.x
- Python 3.x
- Node.js Runtime 8.x and NPM 5.x
- git (git bash to clone the repo)
Tip |
---|
Step - by - step guide on how to Install Insights Advanced - Hyperledger Fabric Network. |
Installing Hyperledger Network covers the initial setup procedures including Installation, Configurations (Hardware, Software, and Network) and various Commands. Please note that these instructions are only for Linux (RHEL 7).
Prerequisites
Expand | ||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||
|
Expand | ||
---|---|---|
| ||
Refer the link to know the Software component version for latest fabric network: https://hyperledger-fabric.readthedocs.io/en/latest/prereqs.html Fabric Version Specific. Change the version in the URL for other versions: https://hyperledger-fabric.readthedocs.io/en/release-1.4/prereqs.html Docker, Docker Compose and curlOn RHEL/CentOS7:Docker - https://docs.docker.com/engine/install/centos/
vi /lib/systemd/system/docker.service ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H unix:///var/run/docker.sock :wq
Example: usermod -aG docker ec2-user
Docker Compose
Reference: https://docs.docker.com/install/linux/docker-ce/ubuntu/ cURLDownload the latest version of cURL (curl) tool if it is not installed - https://curl.haxx.se/download.html GO
PythonAs of Ubuntu 16.04 LTS (xenial), both python 2 and python3 by default. Recommended to use python3. Check and then install if required.
set alias to respectiive python version in ~/.bashrc to avoid error while installing the module. alias pip=pip3 alias python=python3.5 (OR) update-alternatives --install /usr/bin/python python /usr/bin/python3.5 10 Reference: https://wiki.ubuntu.com/Python Node.js Runtime and NPM |
Expand | ||
---|---|---|
| ||
Environment variable INSIGHTS_HOME and $INSIGHTS_HOME/.InSights/server-config.json
Refer here for installation steps if required. |
Expand | ||
---|---|---|
| ||
Following port must be opened to access the fabric network from fabric sdk. Source : fabric sdk instance where our Insights is running Destination: fabric network installed instance - hyperledger network Example Ports: You can change these ports based on availability and configuration in fabric network. Then, enable connectivity to those ports.
|
Expand | ||
---|---|---|
| ||
List active container: docker ps List active/exited container: docker ps -a List docker images: docker images Check container logs: docker logs <container-id> Connect to Container: docker exec -it <container-id> bash Remove docker container: docker rmi -f <contianer-id> Remove docker images: docker rmi -f <image-name/id> Reference: https://docs.docker.com/engine/reference/commandline/docker/ |
Expand | ||
---|---|---|
| ||
Make sure you've done all the Prerequisites. Raft Ordering Service introduced in 1.4.1 (Reference: https://hyperledger-fabric.readthedocs.io/en/latest//whatsnew.html) Ensure docker images are pulled as per raft supported version ( https://github.com/hyperledger/fabric/releases ) Network Architecture
Setup the Network
Docker, Docker Compose and curl
Reference: https://docs.docker.com/install/linux/docker-ce/ubuntu/ GO
PythonAs of Ubuntu 16.04 LTS (xenial), both python 2 and python3 by default. Recommended to use python3. Check and then install if required.
set alias to respectiive python version in ~/.bashrc to avoid error while installing the module. alias pip=pip3 alias python=python3.5 (OR) update-alternatives --install /usr/bin/python python /usr/bin/python3.5 10 Reference: https://wiki.ubuntu.com/Python Node.js Runtime and NPM |
Expand | ||
---|---|---|
| ||
Following port must be opened to access the fabric network from fabric sdk. Source : fabric sdk instance Destination: fabric network installed instance Example Ports: You can change these ports based on availability and configuration in fabric network. Then, enable connectivity to those ports.
|
Please browse through the below sections to setup specific Fabric Network.
Panel | ||||||
---|---|---|---|---|---|---|
| ||||||
Different types of hyperledger fabric network Expand | | |||||
|
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
FABRIC_VERSION=<hyperledger_fabric_version>
COMPOSE_PROJECT_NAME=<your_project_name>
DOMAIN=<your_company.com>
CHANNEL_NAME=<channelname>
CHANNEL_FILE_NAME=<channel_transaction_filename.tx>
GENESIS_FILE_NAME=<genesis_filename.block>
CHANNEL_ARTIFACTS_PATH=<folder_path_for_storing_artifacts>
CA_USER_ENROLLMENT=<admin_username_to_be_enrolled>
CA_ENROLLMENT_SECRET=<admin_password>
TIME_ZONE=<Continent/City> |
network.sh - Generate the crypto-material, start/stop/restart the network.
./network.sh -m download
./network.sh -m upStart for the first time:
Start/Stop the Network :
./network.sh -m start./network.sh -m stopRecreate the containers without losing the data.
./network.sh -m recreateClean and Remove the Network.
./network.sh -m downVerify if all the docker containers are running
docker psOptional Step for information: Create and Join channel in Anchor peer - peer0.org1 :
Get into peer0.org1 container: docker exec -it peer0.org1.<DOMAIN> bash
Create: peer channel create -o orderer.<DOMAIN>:7050 -c mychannel -f /var/hyperledger/configs/channel.tx
Join: peer channel join -o orderer.<DOMAIN> -b mychannel.blockGet into peer0.org1 container: docker exec -it peer0.org1.<DOMAIN> bash
Fetch block: peer channel fetch 0 mychannel.block --channelID mychannel --orderer orderer.<DOMAIN>:7050Join channel: peer channel join -o orderer.<DOMAIN> -b mychannel.block
Install,Instantiate the chaincode in Anchor peer - peer0. Get into respective peer containers and use the below install command to install chaincode in other peers.Get into peer0.org1 container: docker exec -it peer0.org1.<DOMAIN> bash
Install: peer chaincode install -n insightsAuditing -p /chaincode/src/nodejs -l node -v 1.0
If your network is in dev mode (To find the mode of your network, go to docker-compose-base/docker-compose-base.yaml and search for "peer node". If the command used is "peer node start --peer-chaincodedev=true" then you are in dev mode)
Execute the following command to run the chaincode in dev mode (Ensure the chaincode name and peer0 port is correct) :
Code Block |
---|
CORE_CHAINCODE_ID_NAME="insightsAuditing:1.0" node --inspect tool_chaincode.js --peer.address grpc://peer0.org1.<DOMAIN>:7052 |
Instantiate: peer chaincode instantiate -n insightsAuditing -v 1.0 -c '{"Args":["init"]}' -C mychannel
b. If your network is in prod mode (To find the mode of your network, go to docker-compose-base/docker-compose-base.yaml and search for "peer node". If the command used is "peer node start" then you are in prod mode)
Instantiate: peer chaincode instantiate -n insightsAuditing -v 1.0 -c '{"Args":["init"]}' -C mychannel
15. Get into ca container. Create user to connect from fabric sdk by using admin. Fabric sdk network connection requires the user's cert details to get connected to the fabric network.
docker exec -it ca.org1.<DOMAIN> bash
fabric-ca-client enroll -u http://Admin:<password>@localhost:7054
fabric-ca-client register -u "http://localhost:7054" --id.name "newusername" --id.secret "password" --id.type "client" --id.affiliation "org1.department1"
fabric-ca-client enroll -u "http://newusername:password@localhost:7054"
16. Test the Chaincode. Either insert record manually or let the data gets inserted via PlatformAuditEngine. Then, query as shown below. Modify ASSET-ID with your Asset ID value.
Query: peer chaincode query -n insightsAuditing -c '{"Args":["GetAssetDetails","ASSET-ID"]}' -C mychannel
title | Kafka Fabric Network |
---|
Make sure you've done all the Prerequisites
Network Architecture
- 3 Orderers
- 2 Organizations
- 4 peers, 2 for each organization
- 4 couchdb for each peer
- 2 ca, 1 for each organization
- 4 Kafka broker instances
- 3 Zookeper instances
- 1 cli (Optional)
Setup the Network
/etc/environment
(for a system-wide installation) or $HOME/.bashprofile
: export GOPATH=/opt/gopath
Source if you set this in the same linux sesison then, source /etc/environment (OR) source $HOME/.bashprofileConfiguration: Values like DOMAIN, CORE_PEER configs,etc ... can be modified in .env file based on your requirement.
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
COMPOSE_PROJECT_NAME=<name_of_your_network>
CONFIGTX_ORDERER_BATCHSIZE_MAXMESSAGECOUNT=10
CONFIGTX_ORDERER_BATCHTIMEOUT=2s
KAFKA_DEFAULT_REPLICATION_FACTOR=3
CORE_LOGGING_GOSSIP=WARNING
ORDERER_GENERAL_TLS_ENABLED=false
ORDERER_GENERAL_TLS_PRIVATEKEY=/var/hyperledger/tls/server.key
ORDERER_GENERAL_TLS_CERTIFICATE=/var/hyperledger/tls/server.crt
ORDERER_TLS_CLIENTAUTHREQUIRED=false
CORE_PEER_TLS_ENABLED=false
CORE_PEER_TLS_CERT_FILE=/var/hyperledger/tls/server.crt
CORE_PEER_TLS_KEY_FILE=/var/hyperledger/tls/server.key
CORE_PEER_TLS_CLIENTAUTHREQUIRED=false
CORE_PEER_GOSSIP_ORGLEADER_PEER0_ORG1=false
CORE_PEER_GOSSIP_USELEADERELECTION_PEER0_ORG1=true
CORE_PEER_GOSSIP_ORGLEADER_PEER0_ORG2=false
CORE_PEER_GOSSIP_USELEADERELECTION_PEER0_ORG2=true
CORE_PEER_GOSSIP_ORGLEADER_PEER0_ORG3=false
CORE_PEER_GOSSIP_USELEADERELECTION_PEER0_ORG3=true
CORE_PEER_GOSSIP_ORGLEADER_PEER1_ORG1=false
CORE_PEER_GOSSIP_USELEADERELECTION_PEER1_ORG1=true
CORE_PEER_GOSSIP_ORGLEADER_PEER1_ORG2=false
CORE_PEER_GOSSIP_USELEADERELECTION_PEER1_ORG2=true
CORE_PEER_GOSSIP_ORGLEADER_PEER1_ORG3=false
CORE_PEER_GOSSIP_USELEADERELECTION_PEER1_ORG3=true
ORDERER_ABSOLUTEMAXBYTES=10 MB
ORDERER_PREFERREDMAXBYTES=512 KB
KAFKA_MESSAGE_MAX_BYTES=1000012 B
KAFKA_REPLICA_FETCH_MAX_BYTES=1048576 B
KAFKA_REPLICA_FETCH_RESPONSE_MAX_BYTES=10485760 B
CORE_PEER_NETWORKID=net
DOMAIN=<your_company_domain>
FABRIC_CA_SERVER_TLS_ENABLED=false |
chmod 777 *.sh
./generate.sh <channelname> <DOMAIN>
For Example: ./generate.sh mychannel cogdevops.comStart/Restart the Network :
./start.shVerify if all the docker containers are running
docker psGet into peer0.org1 container: docker exec -it peer0.org1.<DOMAIN> bash
Create: peer channel create -o orderer0.<DOMAIN>:7050 -c mychannel -f /var/hyperledger/configs/channel.tx
Join channel: peer channel join -o orderer0.<DOMAIN> -b mychannel.blockFetch the block and join channel in other peers:Get into peer0.org1 container: docker exec -it peer0.org1.<DOMAIN> bash
Fetch block: peer channel fetch 0 mychannel.block --channelID mychannel --orderer orderer0.<DOMAIN>:7050Join: peer channel join -o orderer0.<DOMAIN> -b mychannel.block
Get into peer0.org1 container: docker exec -it peer0.org1.<DOMAIN> bash
Install: peer chaincode install -n insightsAuditing -p /chaincode/src/nodejs -l node -v 1.0
Instantiate: peer chaincode instantiate -n insightsAuditing -v 1.0 -c '{"Args":["init"]}' -C mychannel
docker exec -it ca.org1.<DOMAIN> bash
fabric-ca-client enroll -u http://Admin:<password>@localhost:7054
fabric-ca-client register -u "http://localhost:7054" --id.name "newusername" --id.secret "password" --id.type "client" --id.affiliation "org1.department1"
fabric-ca-client enroll -u "http://newusername:password@localhost:7054"
Query: peer chaincode query -n insightsAuditing -c '{"Args":["GetAssetDetails","ASSET-ID"]}' -C mychannel
title | Raft (etcd/raft) Fabric Network |
---|
Make sure you've done all the Prerequisites
Network Architecture
- 5 Orderers
- 2 Organizations
- 4 peers, 2 for each organization
- 4 couchdb, one for each peer
- 2 certificate authority(CA), one for each organization
- 1 cli (Optional)
Setup the Network
/etc/environment
(for a system-wide installation) or $HOME/.bashprofile
: export GOPATH=/usr/local/go.
Source if you set this in the same linux sesison then, source /etc/environment (OR) source $HOME/.bashprofileKeep the hyperledger fabric source under GOPATH with the steps mentioned below:
No Format |
---|
cd $GOPATH/src/github.com/
mkdir hyperledger
cd hyperledger
git clone https://github.com/hyperledger/fabric.git |
Navigate to your home directory or any convenient directory and clone the Hyperledger_Raft branch from our repo:
Code Block | ||
---|---|---|
| ||
git clone -b Hyperledger_Raft https://github.com/TheCognizantFoundry/Insights.git |
Give permissions to all the executables and shell files which will easily bring up/down the network:
chmod 777 *.sh
chmod -R 755 bin
./generate.sh <channelname> <DOMAIN>
For Example: ./generate.sh mychannel cogdevops.comEdit the values(DOMAIN, CA_ORG*_KEYFILE etc.) inside the .env file. Refer the list below to know more about the variables of .env:
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
COMPOSE_PROJECT_NAME=<name_of_your_network>
IMAGE_TAG=<docker_image_tag_to_be_used_for_spawning_containers>
DOMAIN=<yourCompany_domain_name>
ORDERER_GENERAL_TLS_ENABLED=true
CORE_PEER_TLS_ENABLED=true
FABRIC_CA_SERVER_TLS_ENABLED=true
ORDERER_TLS_CLIENTAUTHREQUIRED=true
CA_ORG1_KEYFILE=<name of the keyfile residing inside crypto-config/peerOrganizations/org1.cogdevops.com/ca/>
CA_ORG2_KEYFILE=<name of the keyfile residing inside crypto-config/peerOrganizations/org2.cogdevops.com/ca/> |
Some of the fields are pre-populated with default values. you may change the values as per requirement. The IMAGE_TAG must be > 1.4.1 or latest to have raft setup.
Start the Network :
./start.sh <channelname> <DOMAIN>
Note |
---|
You must use the same channelname and DOMAIN which you used in step 6. |
If you want to learn more about how the network is setup, then do not execute the start.sh. In stead, run the below commands manually from your terminal:
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
#Replace $CHANNEL_NAME and $DOMAIN with your channelname and domain respectively.
#setup the network
docker-compose -f docker-compose-cli.yaml -f docker-compose-couch.yaml -f docker-compose-etcdraft2.yaml up -d
sleep 15
#create the channel
docker exec -it peer0.org1.$DOMAIN peer channel create -o orderer.$DOMAIN:7050 -c $CHANNEL_NAME -f ./channel-artifacts/channel.tx --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/$DOMAIN/orderers/orderer.$DOMAIN/msp/tlscacerts/tlsca.$DOMAIN-cert.pem
#join org1 anchor peer peer0.org1
docker exec -it peer0.org1.$DOMAIN peer channel join -b $CHANNEL_NAME.block
#join org2 anchor peer0.org2
docker exec -it peer0.org2.$DOMAIN peer channel fetch 0 $CHANNEL_NAME.block -c $CHANNEL_NAME -o orderer.$DOMAIN:7050 --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/$DOMAIN/orderers/orderer.$DOMAIN/msp/tlscacerts/tlsca.$DOMAIN-cert.pem
docker exec -it peer0.org2.$DOMAIN peer channel join -b $CHANNEL_NAME.block
#join org1 & org2
docker exec -it peer0.org1.$DOMAIN peer channel update -o orderer.$DOMAIN:7050 -c $CHANNEL_NAME -f ./channel-artifacts/Org1MSPanchors.tx --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/$DOMAIN/orderers/orderer.$DOMAIN/msp/tlscacerts/tlsca.$DOMAIN-cert.pem
docker exec -it peer0.org2.$DOMAIN peer channel update -o orderer.$DOMAIN:7050 -c $CHANNEL_NAME -f ./channel-artifacts/Org2MSPanchors.tx --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/$DOMAIN/orderers/orderer.$DOMAIN/msp/tlscacerts/tlsca.$DOMAIN-cert.pem
#join the other peers to the channel
docker exec -it peer1.org1.$DOMAIN peer channel fetch 0 $CHANNEL_NAME.block -c $CHANNEL_NAME -o orderer.$DOMAIN:7050 --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/$DOMAIN/orderers/orderer.$DOMAIN/msp/tlscacerts/tlsca.$DOMAIN-cert.pem
docker exec -it peer1.org1.$DOMAIN peer channel join -b $CHANNEL_NAME.block
docker exec -it peer1.org2.$DOMAIN peer channel fetch 0 $CHANNEL_NAME.block -c $CHANNEL_NAME -o orderer.$DOMAIN:7050 --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/$DOMAIN/orderers/orderer.$DOMAIN/msp/tlscacerts/tlsca.$DOMAIN-cert.pem
docker exec -it peer1.org2.$DOMAIN peer channel join -b $CHANNEL_NAME.block
#install the chaincode into the anchor peers
docker exec -it peer0.org1.$DOMAIN peer chaincode install -n insightsAudit -v 1.0 -l node -p /chaincode/src/nodejs/
docker exec -it peer0.org2.$DOMAIN peer chaincode install -n insightsAudit -v 1.0 -l node -p /chaincode/src/nodejs/
#install into the other peers
docker exec -it peer1.org1.$DOMAIN peer chaincode install -n insightsAudit -v 1.0 -l node -p /chaincode/src/nodejs/
docker exec -it peer1.org2.$DOMAIN peer chaincode install -n insightsAudit -v 1.0 -l node -p /chaincode/src/nodejs/
#instantiate the chaincode inside one of the anchor (here we are doing for peer0.org1)
docker exec -it peer0.org1.$DOMAIN peer chaincode instantiate -o orderer.$DOMAIN:7050 --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/$DOMAIN/orderers/orderer.$DOMAIN/msp/tlscacerts/tlsca.$DOMAIN-cert.pem -C $CHANNEL_NAME -n insightsAudit -l node -v 1.0 -c '{"Args":["Init"]}' |
Verify if all the docker containers are running:
docker ps -a
Info |
---|
You will notice some extra containers running other than the ones mentioned in the network architecture with names like this: dev-peer0.org1.cogdevops.com-insightsAudit-1.0. It is an expected behaviour for the fabric-network. These containers will get spawned whenever chaincode is instantiated in a peer. Since the start.sh script will instantiate the chaincode inside peer0 by default, therefore this container will get spawned. |
At this point your raft setup is complete. Steps mentioned hereafter are for registration and enrollment of a user to be used with SDK.
- Enroll the admin: fabric-ca-client enroll -u https://Admin:adminpw@localhost:7054 --tls.certfiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.<DOMAIN>/ca/ca.org1.<DOMAIN>-cert.pem
- Now register a new user: fabric-ca-client register -u https://localhost:7054 --id.name "newusername" --id.secret "password" --id.type "client" --id.affiliation "org1.department1" --tls.certfiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.<DOMAIN>/ca/ca.org1.<DOMAIN>-cert.pem
- Verify the registration by listing the available users: fabric-ca-client identity list -u https://localhost:7054 --tls.certfiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.<DOMAIN>/ca/ca.org1.<DOMAIN>-cert.pem
You should see the new user inside this list if registration is successful.
12. Test the Chaincode. Either insert record manually or let the data gets inserted via PlatformAuditEngine. Then run the below query inside any of the peers. Modify assetID with your Asset ID value and channelname should be the same one used in step 8.
Query: peer chaincode query -n insightsAuditing -c '{"Args":["GetAssetDetails","<assetID>"]}' -C <channelname>- untar the file insights-fabric-network.tar.gz .
cd /home/ec2-user/hyperledger
tar -zxvf insights-fabric-network.tar.gz
cd /home/ec2-user/hyperledger/insights-fabric-network
- Following directories (bin , config , insights-network) are available to start the network.
Give permissions to all the executable and shell files which will easily bring up/down the network:
chmod 777 *.sh
chmod -R 755 bin- Get into the directory insights-network : cd /home/ec2-user/hyperledger/insights-fabric-network/insights-network
Required configurations and scripts are already updated for the DOMAIN - cogdevops.com .
Info title References - Hyperledger Config Files Architecture - https://hyperledger-fabric.readthedocs.io/en/latest/architecture.html
/home/ec2-user/hyperledger/insights-fabric-network/insights-network/.env
Code Block language bash theme Emacs title .env COMPOSE_PROJECT_NAME=hyperledger IMAGE_TAG=latest SYS_CHANNEL=system-channel DOMAIN=<yourdomain>
- Start the network by using the following command. Specify the fabric version, fabric-ca version and couch db as state database :
Code Block language bash theme Emacs title Start fabric network cd /home/ec2-user/hyperledger/insights-fabric-network/insights-network ./network.sh up -ca -s couchdb -i 2.2.0 -cai 1.4.8
network.sh internally calls the required scripts to perform the following actions: TLS Enabled, required certs, register and enroll users (fabric-ca) - both admin and other users;- these details required to connect from Java sdk while connecting network , pull necessary docker images and start the containers.
Verify if all the docker containers are running:
docker ps -a
Create channel. Following script will create channel , join and update for all peers.
Code Block language bash theme Emacs title Create Channel cd /home/ec2-user/hyperledger/insights-fabric-network/insights-network ./network.sh createChannel -c insightschannel
Info title Hint: Change permission/ownership to non-root user for the directory channel-artifacts if you face any issues in channel creation due to permissions restricted by root user.
Copy (Specify github location for chaincode) the chaincode/contract to the directory /home/ec2-user/hyperledger/insights-fabric-network/insights-network. Directory structure after chaincode copy is : /home/ec2-user/hyperledger/insights-fabric-network/insights-network/chaincode/src/nodejs
Deploy Smart Contract (Chaincode): Run the following command to deploy the smart contract/chaincode.
Code Block language bash theme Emacs title Deploy Smart Contract (Chaincode) cd /home/ec2-user/hyperledger/insights-fabric-network/insights-network ./network.sh deployCC -ccn insightsaudit -ccp ./chaincode/src/nodejs/ -ccv 1 -ccl javascript
Note: ccl parameter can either javascript or typescript. Both will refer to CC_RUNTIME_LANGUAGE=node inside scripts/deployCC.sh file
Info You will notice some extra containers running other than the ones mentioned in the network architecture with names like this: dev-peer0.org1.<yourdomain>-insightsaudit_1-xxxxxxxxxxxxxxxx , dev-peer1.org1.<yourdomain>-insightsaudit_1-xxxxxxxxxxxxxxxx, dev-peer0.org2.<yourdomain>-insightsaudit_1-xxxxxxxxxxxxxxxx , dev-peer1.org2.<yourdomain>-insightsaudit_1-xxxxxxxxxxxxxxxx . It is an expected behavior for the fabric-network. These containers will get spawned whenever chaincode is instantiated(deployed) in a peer.
Set the environments in host machine where you have deployed your network(Don't to get into any peer container). to operate via Org1 or Org2.
Info title Important Note Set either ORG1 or ORG2 in one terminal. Open 2 terminal window then set ORG1 in first terminal and Org2 in second terminal. If you attempt to set continuously then latest one will override all the previous ones.
Code Block language bash theme Emacs title ORG1 admin export PATH=${PWD}/../bin:${PWD}:$PATH export FABRIC_CFG_PATH=$PWD/../config/ export CORE_PEER_TLS_ENABLED=true export CORE_PEER_LOCALMSPID="Org1MSP" export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org1.<yourdomain>/peers/peer0.org1.<yourdomain>/tls/ca.crt export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org1.<yourdomain>/users/Admin@org1.<yourdomain>/msp export CORE_PEER_ADDRESS=localhost:7051
Code Block language bash theme Emacs title ORG2 admin export PATH=${PWD}/../bin:${PWD}:$PATH export FABRIC_CFG_PATH=$PWD/../config/ export CORE_PEER_LOCALMSPID="Org2MSP" export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org2.<yourdomain>/peers/peer0.org2.<yourdomain>/tls/ca.crt export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org2.<yourdomain>/users/Admin@org2.<yourdomain>/msp export CORE_PEER_ADDRESS=localhost:9051
Info title Note Latest fabric version has feature to execute peer lifecycle commands in host machine itself by setting respective org env variables as specified above.
Sanity testing. Test the Chaincode. Either insert record manually or let the data gets inserted via PlatformEngine with digitalSignature validation. Use the following command to verify network and smart contract functionality are deployed successfully or not.
Before executing the below command in host machine. You must have either ORG1 admin env variables or ORG2 admin env variables set in the terminal.
Manual insertion and read:
Code Block language bash title Instantiate(write) to Smart Contract insightsaudit peer chaincode invoke -o localhost:7050 --ordererTLSHostnameOverride orderer0.<yourdomain> -C insightschannel -n insightsaudit --tls --cafile ${PWD}/organizations/ordererOrganizations/<yourdomain>/orderers/orderer0.<yourdomain>/msp/tlscacerts/tlsca.<yourdomain>-cert.pem --peerAddresses localhost:7051 --tlsRootCertFiles ${PWD}/organizations/peerOrganizations/org1.<yourdomain>/peers/peer0.org1.<yourdomain>/tls/ca.crt --peerAddresses localhost:9051 --tlsRootCertFiles ${PWD}/organizations/peerOrganizations/org2.<yourdomain>/peers/peer0.org2.<yourdomain>/tls/ca.crt -c '{"Args":["Instantiate","{\"almAssetID\":\"IN-1\",\"property\":\"ALM\",\"phase\":\"Plan\",\"toolName\":\"JIRA\",\"toolstatus\":\"Done\",\"priority\":\"Medium\",\"sprintNames\":[\"IN Sprint 1\"],\"issueType\":\"Story\",\"attachments\":\"https://<jirahostnameurl>/secure/attachment/10017/test.txt\",\"projectName\":\"InsightsAuditing Testing\",\"createdTime\": 1557741850.0,\"issueAPI\": \"https://bcdevops.atlassian.net/rest/api/2/issue/10013\",\"timestamp\":1557751850.0,\"date\":\"2019-05-13\",\"uplink\":\"null\",\"downlink\":{\"jiraKeys\":\"IN-1\"}}"]}'
Code Block language bash title Read from Smart Contract - insightsaudit peer chaincode query -n insightsaudit -c '{"Args":["GetAssetDetails","IN-1"]}' -C insightschannel
Expand | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
Prerequisites:
Configuration Steps:
|
Expand | |||||
---|---|---|---|---|---|
| |||||
Prerequisites:
Configure digitalSignature:
The tool agents(written in python) will perform the following:
PlatformEngine with Audit enabled does the following:
|