mah*_*ima 2 go hyperledger hyperledger-fabric
我正在尝试遵循此示例 Hyperledger Fabric 代码: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 进行任何更改。
现在,当我再次尝试通过 initLedger 函数调用更改分类帐时,它没有发生。即使我评论函数本身,它仍然显示分类帐的旧内容。
如何使用可见的更改更新我的链代码?
startFabric.sh包含以下代码:
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"
Run Code Online (Sandbox Code Playgroud)
我尝试在对等链代码实例化之后添加以下行:
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":[""]}'
Run Code Online (Sandbox Code Playgroud)
但它给出了以下错误:
Error: Chaincode version is not provided for upgrade
Run Code Online (Sandbox Code Playgroud)
当我将升级语句更改为:
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":[""]}'
Run Code Online (Sandbox Code Playgroud)
错误更改为:
Error: Error endorsing chaincode: rpc error: code = Unknown desc = chaincode error (status: 500, message: version already exists for chaincode with name 'tuna-app')
Run Code Online (Sandbox Code Playgroud)
为了反映链码中所做的更改,采取了以下步骤: 1. 停止所有容器
docker stop $(docker ps -aq)
Run Code Online (Sandbox Code Playgroud)
docker rm -f $(docker ps -aq)
docker 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
Run Code Online (Sandbox Code Playgroud)
使用 ./startFabric.sh、npm install、node registerAdmin.js、node registerUser.js 和 Node server.js 再次运行结构。应该有效