Chaincode path does not exist - hyperledger-fabric

Problem:
I have set up a Hyperledger Fabric network. When I try to install a chaincode it is only installed in the first peer. But when I try to install chaincode on other peers it was failed by saying that chaincode does not exist.
This is the command I issued on the first peer.
peer chaincode install -n fabcar -v 1.0.0 -l node -p /opt/gopath/src/github.com/chaincode/fabcar/javascript-low-level
This is the output after the command.
2020-03-01 07:27:26.245 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 001 Using default escc
2020-03-01 07:27:26.245 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 002 Using default vscc
2020-03-01 07:27:26.705 UTC [chaincodeCmd] install -> INFO 003 Installed remotely response:
This is the command I issued on the second peer.
CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/doctor.hrm.com/users/Admin#doctor.hrm.com/msp CORE_PEER_ADDRESS=peer1.doctor.hrm.com:10051 CORE_PEER_LOCALMSPID="DoctorMSP" CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/doctor.hrm.com/peers/peer1.doctor.hrm.com/tls/ca.crt peer chaincode install -n fabcar -v 1.0.0 -l node -p /opt/gopath/src/github.com/fabcar/javascript-low-level
This is the error that was given to me.
2020-03-01 07:34:28.268 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 001 Using default escc
2020-03-01 07:34:28.268 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 002 Using default vscc
Error: error getting chaincode code fabcar: path to chaincode does not exist: /opt/gopath/src/github.com/fabcar/javascript-low-level
Can someone help me with this to find the issue?

Check your GOPATH set in cli container docker-compose.yaml file.
If GOPATH=/opt/gopath then you should give path inside src folder. So you should give path in peer chaincode install as github.com/fabcar/javascript-low-level
so your command will be
peer chaincode install -n fabcar -v 1.0.0 -l node -p github.com/chaincode/fabcar/javascript-low-level
so check your GOPATH set in cli container of docker-compose.yaml and accordingly set the path in peer chaincode install command

Related

Upgrading chaincode in hyperledger fabric gives no errors, but doesn't reflect changes

I'm trying to update a chaincode with a 3 nodes blockchain using Hyperledger Fabric 1.4.4, raft and multi ordering.
I'm using ansible to deploy the BC : https://github.com/Altoros/Ansible-Fabric-Starter
What I'm trying to do is upgrading the chaincode.
I first log in the cli container in a node:
ubuntu#ip-172-31-46-199:~$ docker exec -it cli.org0.domain bash
root#56e6868e66a0:/etc/hyperledger/artifacts# export CORE_PEER_ADDRESS=peer0.org0.domain:7051 && peer chaincode install -n main -v 1.0.1 -p main -l golang
2021-03-18 16:54:45.475 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 001 Using default escc
2021-03-18 16:54:45.475 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 002 Using default vscc
2021-03-18 16:54:47.599 UTC [chaincodeCmd] install -> INFO 003 Installed remotely response:<status:200 payload:"OK" >
root#56e6868e66a0:/etc/hyperledger/artifacts# export CORE_PEER_ADDRESS=peer0.org0.domain:7051 && peer chaincode upgrade -n main -v 1.0.1 -c "{\"Args\":[\"GetMeasuresBetween\",\"2019-03-29T12:00:00Z\", \"2019-03-29T14:00:00Z\"]}" -o orderer2.domain:7050 -C org0 --tls --cafile /etc/hyperledger/artifacts/crypto-config/ordererOrganizations/domain/tlsca/tlsca.domain-cert.pem
2021-03-18 17:03:09.896 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 001 Using default escc
2021-03-18 17:03:09.897 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 002 Using default vscc
Everything seems to be working.
But when I try to invoke the chaincode where I changed a debug message
peer chaincode invoke --cafile /etc/hyperledger/artifacts/crypto-config/ordererOrganizations/domain/tlsca/tlsca.domain-cert.pem --tls -o orderer2.domain:7050 -C org0 -n main -c "{\"Args\":[\"AddMeasure\",\"ACC00000000\",\"23547901584620111112\",\"Conso\",\"BASE\",\"1010\",\"2019-11-01T08:30:01Z\"]}"
it is also working well, but I cannot see in the logs the new debug message, only seeing old one.
Is it something I am missing ? When invoking the chaincode, will it always take the latest version ?
After you install the new version on each peer, you need to then perform an upgrade operation (analogous to doing install and instantiate when you deployed the initial version of the chaincode).

Error: could not send: EOF on instantiating chaincode

I am getting
Error: could not send: EOF
on instantiating chaincode in HF. I followed the correct steps for installing binaries, images etc.
After installation I used following command in the first-network directory to install and instantiate chaincode:
./byfn.sh generate
./byfn.sh up
docker exec -it cli bash
peer chaincode install -n fabcar -v 1.0 -p github.com/chaincode/fabcar/javascript -l node
On executing last command this is the output that I got:
2019-03-28 09:22:04.047 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 001 Using default escc
2019-03-28 09:22:04.048 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 002 Using default vscc
2019-03-28 09:22:04.950 UTC [chaincodeCmd] install -> INFO 003 Installed remotely response:<status:200 payload:"OK" >
then I used the command to instantiate chaincode which is:
peer chaincode instantiate -n fabcar -v 1.0 -C mychannel -c '{"Args":[]}' -l node
And the output was an error like this:
2019-03-28 09:23:25.743 UTC [chaincodeCmd] InitCmdFactory -> INFO 001 Retrieved channel (mychannel) orderer endpoint: orderer.example.com:7050
2019-03-28 09:23:25.747 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 002 Using default escc
2019-03-28 09:23:25.747 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 003 Using default vscc
Error: could not send: EOF
I think I missed something but I am not sure.
Can anyone tell where I went wrong. Thanks in advance.
I found that adding the TLS certificate options to the instantiate command worked for me. I am using Golang for my chaincode language
Install: (for reference)
peer chaincode install \
-n mycc \
-v 1.0 \
-p myorg/chaincode
Instantiate:
peer chaincode instantiate \
-C mychannel \
-n mycc \
-v 1.0 \
-c '{"Args":["wallet","123"]}' \
--tls true \
--cafile /myorg/hyperledger/fabric/peer/crypto-config/ordererOrganizations/myorg.org/orderers/orderer.myorg.org/msp/tlscacerts/tlsca.myorg.org-cert.pem
I didn't have to specify the following options though including them did not break anything:
-P "OR ('MYORGMSP.peer')" \
-l golang \
I changed the CLI container to mount my crypto material at /myorg/hyperledger/fabric/peer/crypto-config which differs from the default location used by other examples.

Please tell me how to solve path to chaincode does not exist

What I did:
Get into the cli container.
Make channel.
Join channel.
What I'm doing:
peer chaincode install.
I want to install the Chaincode which I have made and is on the GitHub.
So I think it can be installed like example02.
I didn't change the code in docker-compose-cli.yaml and others as well.
When I use the command "peer Chaincode install", it says "path to chaincode does not exist".
root#7fdb5cf9a746:/opt/gopath/src/github.com/hyperledger/fabric/peer#
peer chaincode install -n mycc -v 1.0 -p github.com/Gela-Gunp/OriginChaincodeForMe
2019-01-22 07:48:52.599 UTC [msp] GetLocalMSP -> DEBU 001 Returning existing local MSP
2019-01-22 07:48:52.599 UTC [msp] GetDefaultSigningIdentity -> DEBU 002 Obtaining default signing identity
2019-01-22 07:48:52.599 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 003 Using default escc
2019-01-22 07:48:52.599 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 004 Using default vscc
Error: Error getting chaincode code chaincode: path to chaincode does not exist: github.com/Gela-Gunp/OriginChaincodeForMe
Maybe I should do something before Chaincode install.
But I don't know what that is.
#gelatine, in your chaincode install command "-p" flag indicates your chaincode's source path (Note: local path)..
It can be like your command, but you should have those directories mounted inside your cli container. Also don't forget to take care of the GOPATH env variable :p
Please go thorough the Fabric chaincode reference docs:
Fabric Chaincode for developers

Unable to install Hyperledger Fabric Marbles chaincode from a repository to a peer

I'm using this Hyperledger Fabric tutorial, I am block on the step 1 of part Install chaincode on all peers
When I run the command peer chaincode install -n marblesp -v 1.0 -p github.com/chaincode/marbles02_private/go/I have the following result containing an error :
2018-12-10 13:19:37.515 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 001 Using default escc
2018-12-10 13:19:37.515 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 002 Using default vscc
Error: Error getting chaincode code chaincode: path to chaincode does not exist: /opt/gopath/src/github.com/fabric-samples/chaincode/marbles02_private
Could you help me please? thanks
Do you have the chaincodes in this path? Be sure you have the chaincode in this path.
Do you have Go installed? If yes, do you export the Go path?
Try with this:
export PATH=$PATH:/usr/local/go/bin

Instantiation of signed chaincode packages in Hyperledger Fabric

I am trying to apply the packaging method for the chaincode which enables me to enforce signatures from multiple organizations and make sure that chaincode cannot be effectively instantiated if signatures from relevant participants in the channel are not collected.
a) From Org1 context:
# peer chaincode package -n mycc -p github.com/chaincode/chaincode_example02/go/ -v 1 -s -S -i "AND('Org1.admin','Org2.admin')" ccpack.out
2018-12-03 22:49:46.032 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 001 Using default escc
2018-12-03 22:49:46.032 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 002 Using default vscc
root#bdc554f0a918:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer chaincode signpackage ccpack.out signedccpack.out
Wrote signed package to signedccpack.out successfully
root#bdc554f0a918:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer chaincode install signedccpack.out
2018-12-03 22:50:21.125 UTC [chaincodeCmd] install -> INFO 001 Installed remotely response:<status:200 payload:"OK" >
b) From Org2 context:
root#bdc554f0a918:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer chaincode signpackage ccpack.out signedccpack.out
Wrote signed package to signedccpack.out successfully
root#bdc554f0a918:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer chaincode install signedccpack.out
2018-12-03 22:50:32.414 UTC [chaincodeCmd] install -> INFO 001 Installed remotely response:<status:200 payload:"OK" >
c) From either Org context:
root#bdc554f0a918:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer chaincode instantiate -o orderer.example.com:7050 --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C channel1 -n mycc -v 1.0 -c '{"Args":["init","a", "100", "b","200"]}' -P "AND ('Org1MSP.peer','Org2MSP.peer')"
2018-12-03 22:50:42.946 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 001 Using default escc
2018-12-03 22:50:42.950 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 002 Using default vscc
Error: could not assemble transaction, err proposal response was not successful, error code 500, msg cannot get package for chaincode (mycc:1.0)
d) The chaincode is present on Org1 Peer 1:
root#af99b3698322:/var/hyperledger/production/chaincodes# ls
mycc.1
e) The chaincode is present on Org2 Peer 1:
root#2fd1355259a8:/var/hyperledger/production/chaincodes# ls
mycc.1
Any recommendations as to the process or the cli syntax structure would be greatly appreciated.

Resources