Hyperledger fabric Hyperledger fabric 2.0:链码提交失败,错误为';本组织不同意链码定义';

Hyperledger fabric Hyperledger fabric 2.0:链码提交失败,错误为';本组织不同意链码定义';,hyperledger-fabric,hyperledger,Hyperledger Fabric,Hyperledger,我试图学习HLF2.0链码生命周期,我的网络配置如下 两个Org,每个Org有一个对等点 作为订购服务的筏(共3个订单) 按照官方文件安装链码 当我尝试提交链码时,出现以下错误 Error: proposal failed with status: 500 - failed to invoke backing implementation of 'CommitChaincodeDefinition': chaincode definition not agreed to by this org

我试图学习HLF2.0链码生命周期,我的网络配置如下

  • 两个Org,每个Org有一个对等点
  • 作为订购服务的筏(共3个订单)
  • 按照官方文件安装链码

    当我尝试提交链码时,出现以下错误

    Error: proposal failed with status: 500 - failed to invoke backing implementation of 'CommitChaincodeDefinition': chaincode definition not agreed to by this org (LeftOrgMSP)
    
    然而,当我检查承诺时

    {
        "approvals": {
            "LeftOrgMSP": true,
            "RightOrgMSP": false
        }
    }
    
    我得到的
    LeftOrgMSP
    为真

    更新

    组织审批命令

    peer lifecycle chaincode approveformyorg -o  orderer1.base.order:7050 --channelID basechannel --name fabcar --version 1.0 --package-id $CC_PACKAGE_ID --sequence 1 --tls \
    --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/base.order/orderers/orderer1.base.order/msp/tlscacerts/tlsca.base.order-cert.pem
    
    命令提交

    peer lifecycle chaincode commit -o orderer1.base.order:7050 --channelID basechannel \
     --name fabcar --version 1.0 \
     --sequence 1  --tls true \
     --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/base.order/orderers/orderer1.base.order/msp/tlscacerts/tlsca.base.order-cert.pem \
     --peerAddresses peer1.base.left:7051  \
     --tlsRootCertFiles   /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/base.left/peers/peer1.base.left/tls/ca.crt
    

    部署chaincode的整个过程包括4个步骤:

  • 打包链码
  • 在您的组织对等点上安装它-在您的情况下是LeftOrg和RightOrg
  • 批准组织的链码定义,以及
  • 将链码定义提交到频道
  • 安装-当您安装链码时,是否在两个Org上都安装了它?如果是这样,成功安装将返回包标识符(ID),它是包标签(fabcar_X)与链码包散列的组合。我假设这就是您在$CC_PACKAGE_ID中存储的内容,请确认该值是否准确

    成功安装后,向对等方查询已安装的链码,以查看结果是否匹配。cmd是:

    peer lifecycle chaincode queryinstalled
    
    批准和检查提交就绪性-提交就绪性的目的是帮助您验证是否有足够的渠道成员批准了链码定义,以满足批准策略(默认情况下为多数),然后才能将定义提交给渠道。看起来您只批准了LeftOrg的链码,但仍然需要批准RightOrg的链码(尽管您的日志消息似乎另有说明,因此可能还有更多内容)。我将对RightOrg执行approve,然后检查两个Org上的提交准备情况以确认

    接下来是提交

    并且,如果提交成功,请确认定义已在两个组织上成功提交

    peer lifecycle chaincode querycommitted
    

    如果您想了解更多信息,我有一个解决方案。

    部署chaincode的整个过程包括4个步骤:

  • 打包链码
  • 在您的组织对等点上安装它-在您的情况下是LeftOrg和RightOrg
  • 批准组织的链码定义,以及
  • 将链码定义提交到频道
  • 安装-当您安装链码时,是否在两个Org上都安装了它?如果是这样,成功安装将返回包标识符(ID),它是包标签(fabcar_X)与链码包散列的组合。我假设这就是您在$CC_PACKAGE_ID中存储的内容,请确认该值是否准确

    成功安装后,向对等方查询已安装的链码,以查看结果是否匹配。cmd是:

    peer lifecycle chaincode queryinstalled
    
    批准和检查提交就绪性-提交就绪性的目的是帮助您验证是否有足够的渠道成员批准了链码定义,以满足批准策略(默认情况下为多数),然后才能将定义提交给渠道。看起来您只批准了LeftOrg的链码,但仍然需要批准RightOrg的链码(尽管您的日志消息似乎另有说明,因此可能还有更多内容)。我将对RightOrg执行approve,然后检查两个Org上的提交准备情况以确认

    接下来是提交

    并且,如果提交成功,请确认定义已在两个组织上成功提交

    peer lifecycle chaincode querycommitted
    

    如果您想了解更多信息,我有一个链接。

    您是否使用批准的相同序列和版本提交链码?是的,版本相同@laharris我已更新我的命令您是否使用批准的相同序列和版本提交链码?是的,版本相同@laharris我已更新我的命令获得CommitterDyness true但提交链码我收到了相同的错误(此组织不同意链码定义(LeftOrgMSP))现在我获得了CommitterDyness true但提交了链码我收到了相同的错误(此组织不同意链码定义(LeftOrgMSP))