在Hyperledger Fabric中,当我尝试调用时,出现以下错误:存在“ fabcar”的链码定义,但未安装链码

时间:2020-03-30 21:15:17

标签: hyperledger-fabric chaincode

我遵循了2个不同的教程

https://github.com/swetharepakula/Fabric101Workshop

https://hyperledger-fabric.readthedocs.io/en/release-2.0/deploy_chaincode.html

两次查询安装时,它都显示 fabcar已安装并且成功提交,但是在两次尝试调用时,我都收到以下信息:

错误:调用期间认可失败。回复:状态:500 消息:“确保已成功定义chaincode fabcar 在频道mychannel上,然后重试:“ fabcar”的链码定义 存在,但未安装chaincode”。

我尝试更改CORE_PEER_GOSSIP_USELEADERELECTION=true,但是这阻止了我的一个对等节点的启动。

我正在Mac上工作,并且节点正在docker中运行,任何帮助将不胜感激。

5 个答案:

答案 0 :(得分:0)

您将必须先安装链码,然后再调用它。您可以按照此link中提到的步骤进行操作 为了安装,实例化然后调用链码。

答案 1 :(得分:0)

似乎您的链码未安装在所有组织的对等点上,而是将其安装在组织的对等点上并尝试从不存在该对等点的另一个对等点进行查询。 并遵循文档中的chaincode生命周期(6个步骤)。

https://hyperledger-fabric.readthedocs.io/en/release-2.0/commands/peerlifecycle.html

答案 2 :(得分:0)

使用Go打包链码时,我遇到了同样的问题。然后,我重新启动了测试网络,并尝试使用Java打包chaincode,问题已解决。

答案 3 :(得分:0)

我在批准其中一个组织时使用了错误的packageID时遇到了此错误

使用approveformyorg时,请检查您分别使用$PACKAGE_ID_ORG1$PACKAGE_ID_ORG2

在org1上:

peer lifecycle chaincode approveformyorg \
     --channelID $CHANNEL_NAME \
     --name $CHAINCODE_NAME --version $CC_VERSION \
     --package-id $PACKAGE_ID_ORG1 \
     --sequence $CC_SEQ -o orderer:7050 --tls --cafile $ORDERER_TLS_CA

在org2上:

peer lifecycle chaincode approveformyorg \
     --channelID $CHANNEL_NAME \
     --name $CHAINCODE_NAME --version $CC_VERSION \
     --package-id $PACKAGE_ID_ORG2 \
     --sequence $CC_SEQ -o orderer:7050 --tls --cafile 

否则,它将给我以下信息:

在org1上:

bash-5.0# peer lifecycle chaincode queryapproved -C bankscochannel -n fabcar
Approved chaincode definition for chaincode 'fabcar' on channel 'bankscochannel':
sequence: 1, version: 1.0, init-required: false, package-id: fabcar-v1:002d3fc291572c3e8bc52fea3b228cbd1877ab87669978759fc75f51f893a0dd, endorsement plugin: escc, validation plugin: vscc

bash-5.0# peer lifecycle chaincode querycommitted -C bankscochannel
Committed chaincode definitions on channel 'bankscochannel':
Name: fabcar, Version: 1.0, Sequence: 1, Endorsement Plugin: escc, Validation Plugin: vscc

bash-5.0# peer lifecycle chaincode queryinstalled
Installed chaincodes on peer:
Package ID: fabcar-v1:002d3fc291572c3e8bc52fea3b228cbd1877ab87669978759fc75f51f893a0dd, Label: fabcar-v1

0n org2:

bash-5.0# peer lifecycle chaincode queryapproved -C bankscochannel -n fabcar
Approved chaincode definition for chaincode 'fabcar' on channel 'bankscochannel':
sequence: 1, version: 1.0, init-required: false, package-id: fabcar-v1:002d3fc291572c3e8bc52fea3b228cbd1877ab87669978759fc75f51f893a0dd, endorsement plugin: escc, validation plugin: vscc

bash-5.0#  peer lifecycle chaincode querycommitted -C bankscochannel
Committed chaincode definitions on channel 'bankscochannel':
Name: fabcar, Version: 1.0, Sequence: 1, Endorsement Plugin: escc, Validation Plugin: vscc

bash-5.0# peer lifecycle chaincode queryinstalled 
Installed chaincodes on peer:
Package ID: fabcar-v1:c4430b8d45ee5bca03233272da19aafab73d41c973861adfab8d349c70d950e3, Label: fabcar-v1

请注意,在控制台输出中,两个peer lifecycle chaincode queryapproved的结果都返回了不正确的相同package_id

答案 4 :(得分:0)

您在批准链码定义时可能没有设置正确的 --package-id

我遇到了同样的问题,因为你,那是因为我已经把uncorrect --package-id 1ec5f659f7b95978829202e4201cd969ccb0952a9c87a1bb51c9588b518923a1 ,但正确的--package-id值应 sacc_1.0:1ec5f659f7b95978829202e4201cd969ccb0952a9c87a1bb51c9588b518923a1

参考https://hyperledger-fabric.readthedocs.io/en/release-2.2/deploy_chaincode.html#invoke-failure