HyperLedger结构链代码未更新 [英] HyperLedger fabric chaincode not updated
问题描述
我正在尝试遵循此示例Hyperledger Fabric代码: https ://github.com/hyperledger/education/tree/master/LFS171x/fabric-material
I am trying to follow along this sample Hyperledger Fabric code: https://github.com/hyperledger/education/tree/master/LFS171x/fabric-material
最初,我用go文件chaincode/tuna-app/test.go替换了chaincode/tuna-app/tuna-chaincode.go. test.go的更改仅在于我们通过其initLedger函数调用在分类帐中初始化的内容.它运行良好,不需要在tuna-app/.startFabric.sh中进行任何更改.
Initially I replaced chaincode/tuna-app/tuna-chaincode.go with my go file chaincode/tuna-app/test.go. test.go had changes just in what we initialize in the ledger through its initLedger function call. It worked fine, with no changes required in tuna-app/.startFabric.sh.
现在,当我再次尝试通过其initLedger函数调用更改分类帐时,它没有发生.即使我评论了函数本身,它仍然显示了分类帐的旧内容.
Now when I again try to change the ledger through its initLedger function call, its not happening. Even if I comment the function itself, it still shows the old content of the ledger.
如何通过可见的更改更新链码?
How do I update my chaincode with visible changes?
startFabric.sh包含以下代码:
startFabric.sh contains the following code:
set -e
# don't rewrite paths for Windows Git Bash users
export MSYS_NO_PATHCONV=1
starttime=$(date +%s)
if [ ! -d ~/.hfc-key-store/ ]; then
mkdir ~/.hfc-key-store/
fi
# launch network; create channel and join peer to channel
cd ../basic-network
./start.sh
# Now launch the CLI container in order to install, instantiate chaincode
# and prime the ledger with our 10 tuna catches
docker-compose -f ./docker-compose.yml up -d cli
docker exec -e "CORE_PEER_LOCALMSPID=Org1MSP" -e "CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp" cli peer chaincode install -n tuna-app -v 1.0 -p github.com/test-app
docker exec -e "CORE_PEER_LOCALMSPID=Org1MSP" -e "CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp" cli peer chaincode instantiate -o orderer.example.com:7050 -C mychannel -n tuna-app -v 1.0 -c '{"Args":[""]}' -P "OR ('Org1MSP.member','Org2MSP.member')"
sleep 10
docker exec -e "CORE_PEER_LOCALMSPID=Org1MSP" -e "CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp" cli peer chaincode invoke -o orderer.example.com:7050 -C mychannel -n tuna-app -c '{"function":"initLedger","Args":[""]}'
printf "\nTotal execution time : $(($(date +%s) - starttime)) secs ...\n\n"
printf "\nStart with the registerAdmin.js, then registerUser.js, then server.js\n\n"
我尝试在对等链码实例化之后添加以下行:
I tried by adding the following line after peer chaincode instantiate :
docker exec -e "CORE_PEER_LOCALMSPID=Org1MSP" -e "CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp" cli peer chaincode upgrade -o orderer.example.com:7050 -C mychannel -n tuna-app -c '{"function":"initLedger","Args":[""]}'
但是会出现以下错误:
Error: Chaincode version is not provided for upgrade
当我将升级声明更改为:
When I change upgrade statement to:
docker exec -e "CORE_PEER_LOCALMSPID=Org1MSP" -e "CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp" cli peer chaincode upgrade -o orderer.example.com:7050 -C mychannel -n tuna-app -v 1.0 -c '{"function":"initLedger","Args":[""]}'
错误更改为:
Error: Error endorsing chaincode: rpc error: code = Unknown desc = chaincode error (status: 500, message: version already exists for chaincode with name 'tuna-app')
推荐答案
要反映链式代码中的更改,请执行以下步骤: 1.停止所有容器
To make the changes in the chaincode made reflect, following steps were taken: 1. Stop all the containers
docker stop $(docker ps -aq)
- 删除所有容器
docker rm -f $(docker ps -aq)
- 运行
docker images
时查找以下图像 输出之一将是其他超级分类帐二进制图像中的输出.
- Find the following image when you run
docker images
One of the output will be this among the other hyperledger binary images.
REPOSITORY TAG, IMAGE ID, CREATED, SIZE: dev-peer0.org1.example.com-tuna-app-1.0-b58eb592ed6ced10f52cc063bda0c303a4272089a3f9a99000d921f94b9bae9b, latest, 0919d7c15f0a, 3 minutes ago, 172MB
使用以下命令删除它:
docker rmi 0919d7c15f0a
使用./startFabric.sh、npm install,节点registerAdmin.js,节点registerUser.js和节点server.js再次运行结构.它应该可以工作
Run the fabric again using ./startFabric.sh, npm install, node registerAdmin.js, node registerUser.js and node server.js. It should work
这篇关于HyperLedger结构链代码未更新的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!