define the path to the chaincode hyperledger-fabric - 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

Related

New chaincode container is not launched after upgrade

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`

how can I find policies hyperledger fabric on service without configtx?

I want to know polcies without configtx.yaml when hyperledger server is running. Because, I want to test how the permissions change as each layer of policy changes.
Is there any peer command for finding policies?
You should be able to use peer channel fetch config command. Something similar to:
peer channel fetch config myconfig.pb -o <my-orderer-and-port> -c <my-channel-name> --tls --cafile ordercafile.tls
This will return you a Protobuf file (myconfig.pb) and you can decode this into json using the configxlator command (you may need to download this binary as part of the fabric binaries). For example:
configtxlator proto_decode --input myconfig.pb --type common.Block --output ./myconfig.json
This will be a long JSON file but you might be able to use diff between versions and see if your changes have been applied.

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

How to Install two different chaincodes in two different channels

I created two channels named:
first
second
I want to install two different chaincodes in the two channels how can I achieve this????
Installation of one chaincode code into specific channel not very different from doing the same, e.g. installing two chaincodes into two separate channels, please consider read official tutorial. In fact the chaincode installation is out of channel context, installation is the process of literally moving chaincode bytes into peer file system.
Basically the operation is fairly simple you just need to specify different channel names and different chaincodes, something like this:
peer chaincode install -o localhost:7050 -n chaincode1 -v 1.0 -p github.com/chaincodes/chaincode1
and then the second one:
peer chaincode install -o localhost:7050 -n chaincode2 -v 1.0 -p github.com/chaincodes/chaincode2
above will move both chaincodes bytes into peer's file system. Next you just need to instantiate chaincodes in context of right channel:
peer chaincode instantiate -o localhost:7050 -n chaincode1 -v 1.0 -C first -c '{"Args":[]}'
and to instantiate second chaincode for second channel:
peer chaincode instantiate -o localhost:7050 -n chaincode2 -v 1.0 -C second -c '{"Args":[]}'
You can find some more explanatory examples in fabric-samples repository.

Resources