New chaincode container is not launched after upgrade - hyperledger-fabric

I followed the instructions to upgrade chaincode from here. I executed all the steps successfully. I was able to see the committed chaincode information by the command peer lifecycle chaincode querycommitted --channelID mychannel --name mycc. The docker images are also created for new chaincode but the containers were not launched. The chaincode invoke and query commands also give old results.
I also tried deleting the old chaincode from peers and removing old chaincode containers, but it starts the old chaincode containers again when I run chaincode query or invoke command.
I use peer lifecycle chaincode commands in Hyperledger Fabric 2.0 on Ubuntu 16.04.

I solved the issue. The problem was with the value of --package-id option in peer lifecycle chaincode approveformyorg command. I used the approveForMyOrg function in utils.sh file that comes in first-network directory in fabric-samples. The mistake was I passed the PACKAGE_ID from the results of queryInstalled function which had all the installed chaincode packages. I made a following change in the sed command in that function.
PACKAGE_ID=`sed -n "/$CCNAME_$VERSION/{s/^Package ID: //; s/, Label:.*$//; p;}" log.txt`

Related

"Error getting endorser client for query" when trying cli interaction with hyperledger fabric example, despite successful installation

I'm currently trying to get the example for hyperledger fabric working. I get as far as starting the chaincode successfully using the deployCC script, and get the expected printout of all the cars after running the script. However, when I get to the next step of manually querying the network, I run into issue. I've run the exports for org1 as specified, and verified that the paths match and the tls cert and mspconfig exist in those locations. However, when I try to run the query command:
peer chaincode query -C mychannel -n fabcar -c '{"Args":["queryAllCars"]}'
I get the following error printout:
Error: error getting endorser client for query: endorser client failed to connect to 0.0.0.0:7051: failed to create new connection: context deadline exceeded
I would expect to get the same printout as at the end of the deployCC script, and I can't figure out why that isn't happening. Any help in diagnosing this is appreciated!
If it matters, I'm running this in a VM with Ubuntu 20.04. All the prerequisites are fresh installations of the latest versions from the last couple of days.
Liam, if you are able to see all the cars at the end of deployCC, then it might be an environment variables issue. Remember that you have to execute the peer chaincode query -C mychannel -n fabcar -c '{"Args":["queryAllCars"]}' command in the same terminal where you ran deployCC because the environment variables are all set in that window.
We can do a couple of things to confirm:
Paste the output from DeployCC at the end, right after (and including)
Querying chaincode on peer0.org1...
Using organization
Print the following environment variables from the terminal window where you are executing deployCC and from the terminal window where you are executing the peer chaincode query -C mychannel -n fabcar -c '{"Args":["queryAllCars"]}' command
CORE_PEER_LOCALMSPID,
CORE_PEER_TLS_ROOTCERT_FILE,
CORE_PEER_MSPCONFIGPATH,
CORE_PEER_ADDRESS.
See if they match?

What is the difference between "start the chaincode" and "install the chaincode"? -- Hyperledger Fabric

I was following the documentation to run the GO chaincode in fabric network. Chaincode for Developers
For installing the chaincode and running, it instruct to open 3 terminals:
Terminal 1 - Start the network
Terminal 2 - Build & start the chaincode
Terminal 3 - Use the chaincode (install, instantiate, invoke etc in peer)
Terminal 2 :
The chaincode is started with peer and chaincode logs indicating successful registration with the peer.
What exactly terminal 2 is doing as chaincode will install and instantiated in terminal 3?
What is the meaning of start the chaincode and chaincode registration with peer?
Thanks!
In "dev mode" chaincode is built and started by us as a user, where normally it's the peer who starts and maintains the chaincode.
So in the second terminal, we are building the chaincode on our own by running :
go build
whereas, you are right if we run peer chaincode instantiate peer builds the chaincode on its own but not in this case as we build it.
Moreover, we set the properties in the second terminal for use during chaincode install and instantiate as the chaincode has not yet been associated with any channel by running,
CORE_PEER_ADDRESS=peer:7052 CORE_CHAINCODE_ID_NAME=mycc:0 ./sacc
But yeah they have mentioned
Even though you are in --peer-chaincodedev mode, you still have to install the chaincode so the life-cycle system chaincode can go through its checks normally. This requirement may be removed in future when in --peer-chaincodedev mode.
Lets hope its soon :)

define the path to the chaincode hyperledger-fabric

I'am trying to change the change code for the hyperledger fabric "first-network", I want to put an other one.
Ididn't find where to define it and what to change.
I know that i have to change the name and put the path to the new chaincode, but i didn't find where
You can find that in docker-compose files folder chaincode (fabric-samples/chaincode) is mounted to /opt/gopath/src/github.com/chaincode
and in the script.sh variable CC_SRC_PATH is set to github.com/chaincode/chaincode_example02/go/ , so if you want to use your own chaincode in the first-network solution you should put it to folder chaincode and set up CC_SRC_PATH
this varibles is used in utils.sh file
peer chaincode install -n mycc -v ${VERSION} -l ${LANGUAGE} -p ${CC_SRC_PATH} >&log.txt

Create and join channel error ; Hypereldger fabric tutorial

I'm trying to a tutorial of hyperledger fabric on Mac. (http://hyperledger-fabric.readthedocs.io/en/latest/build_network.html#create-join-channel)
At 'Create & Join Channel' part, I have 2 questions.
1.I typed export CHANNEL_NAME=mychannel, but there is apparently no change. What does this command mean?
2.And later, I typedpeer channel create -o orderer.example.com:7050 -c mychannel -f ./channel-artifacts/channel.tx --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 , the following error occurred. What if I do, the problem will be resolved?(There seems to be no such directory, so do I have to create? )
[main] main -> ERRO 001 Cannot run peer because cannot init crypto, missing /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin#org1.example.com/msp folder
Accordingly, I use Mac and installed all of the guided resources yesterday or day before yesterday, so I think resource version is correct.
I'd appreciate if you could answer these questions.
Question 1: export CHANNEL_NAME=mychannel Sets the CHANNEL_NAME variable to "mychannel".
Following that tutorial you linked, this just sets the variable ($CHANNEL_NAME) they have in their command:
peer channel create -o orderer.example.com:7050 -c $CHANNEL_NAME
However, you are right when you say changing that does nothing because you have hardcoded "mychannel" in your peer channel create command. Both your way and the tutorial way will have the same end result.
Question 2: The directory below points to where the peer certificates for the MSP are supposed to be, in your example. These files are generated with the ../bin/cryptogen generate --config=./crypto-config.yaml command from the tutorial. The error message is saying that the peer is unable to start due to that directory not existing, or containing the needed certs. I would ensure the peer container has those certs in that location, one way would be to Docker exec into it.
/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin#org1.example.com/msp

"channel [{channel-name}]: MSP error: channel doesn't exist" warning fails the instantiation of chaincode on Hyperledger Fabric

I'm trying to run the Hyperledger Fabric network, which consists of a single orderer, a single peer, and a cli. To learn the procedure of launching Hyperledger Fabric network, from creating crypto-related artifacts to running cli as a docker container, I execute them one by one.
Everything is okay, but when I try to instantiate the installed chaincode, the peer produces channel [reputationch]: MSP error: channel doesn't exist (reputationch is my channel name) and the instantiation has been failed.
(Check the below screenshot)
I'm not sure that this warning on the peer node causes the failure of the instantiation of chaincode, but I guess it is the reason.
My crypto-config.yaml and configtx.yaml are like below. They are nothing special because I just modified some names based on the official example.
crytp-config.yaml and configtx.yaml
And the script to create crypto-related artifacts based on the above yaml files is:
script to create crypto-related artifacts
My running scripts to launch an orderer, a peer, and a cli are like below. It calls docker commands.
running scripts to launch an orderer, a peer, and a cli
After I launch a cli, I connect the cli using docker exec -it cli bash. Then, I run three commands, which work well without an error or a warning:
peer channel create -o orderer.operator.com:7050 -c reputationch -f ./channel-artifacts/reputation-channel.tx
peer channel update -o orderer.operator.com:7050 -c reputationch -f ./channel-artifacts/Company1anchors.tx
peer chaincode install -n mycc -v 1.0 -p github.com/hyperledger/fabric/examples/chaincode/go/
Then, the following command is failed.
peer chaincode instantiate -o orderer.operator.com:7050 -C reputationch -n mycc -v 1.0 -c '{"Args":["init","a", "100", "b","200"]}' -P "OR ('Company1MSP.peer')"
My version information is:
macOS: macOS High Sierra 10.13.3
Go: 1.10
Docker: Version 18.03.0-ce-mac59 (23608)
Hyperledger Fabric: 1.1
cryptogen: 1.1.0
configtxgen: 1.1.0
Any kind of comment or help will be very great for me. Thanks.
Basically you also need your peers to join your channels. Which it seems like you are not doing here. If your peers do not join any channel, you will be getting this error. Make sure that your peers join channel before installing chaincode.
peer channel join -b $CHANNEL_NAME.block

Resources