【问题标题】:ENDORSEMENT_POLICY_FAILURE error on on invocation of chaincode functions调用链码函数时出现 ENDORSEMENT_POLICY_FAILURE 错误
【发布时间】:2019-06-22 10:33:55
【问题描述】:

在没有指定背书策略的情况下实例化链码时,链码中的函数调用工作正常,并且可以在 couchdb 数据库中看到存储的数据。但是在链码实例化过程中明确指定背书策略为“AND ('mohaMSP.peer','ecMSP.peer')”时,链码函数的调用不会显示任何错误,但不会更新 couchdb 状态数据库。所以我检查了 peer0.moha.nid.com 上的日志,它显示了以下错误:

2019-01-29 09:46:00.851 UTC [valimpl] preprocessProtoBlock -> WARN cac6 Channel [nid-channel]: Block [7] Transaction index [0] TxId [bfed301afcaae5ad2ee8885c3cdbd39521827b25cabe92d6cf03f931da4ea391] marked as invalid by committer. Reason code [ENDORSEMENT_POLICY_FAILURE]

我已经在 peer0.ec.nid.com 和 peer0.moha.nid.com 上安装了链码(即在两个组织中)并验证了安装。如peer channel list 命令所示,共有三个节点加入了 nid 通道 - peer0.moha.nid.com、peer1.moha.nid.com、peer0.ec.nid.com。

here is docker-compose.yaml file to start the network

here is docker-compose-base.yaml file

here is peer-base.yaml file

我正在运行 fabric 1.2.1 容器并将它们标记为最新。

链码实例化命令:

peer chaincode instantiate -o orderer.nid.com:7050 -n car_reg -v 1 -C nid-channel -c '{"Args":[]}' -P "AND ('ecMSP.peer','mohaMSP.peer')"

【问题讨论】:

  • 你使用哪个命令来调用?
  • 对等链码调用 -o orderer.nid.com:7050 -C nid-channel -n car_reg -c '{"Args":["createCar","1","bmw"," gtx","blue","me"]}'
  • 在使用“AND”时尝试使用命令 - peer chaincode invoke -o orderer.example.com:7050 -C mychannel -n mycc --peerAddresses peer0.org1.example.com:7051 --peerAddresses peer0.org2.example.com:7051 -c '{"Args":["invoke","...."]}'
  • 是的,您必须这样做,如果您指定“AND”策略,则必须在命令中提供背书节点。检查 BYFN 我们在调用期间也指定了 --peeradd
  • @Harshit 是的,我忽略了它。现在它正在工作。谢谢

标签: docker hyperledger-fabric hyperledger ibm-blockchain


【解决方案1】:
  1. 如果您在实例化期间未指定背书策略,则背书策略默认为“频道中组织的任何成员”。即)“或('mohaMSP.member','ecMSP.member')”

  2. 当您明确指定背书策略“AND ('mohaMSP.peer','ecMSP.peer')”时,它会向每个 Org(mohaMSP、ecMSP)对等方请求一个签名。 因此,请检查两个 Org 是否都有背书节点..

欲了解更多信息,setting-chaincode-level-endorsement-policies

【讨论】:

  • 是的,两个组织都在其中一个节点上安装了链码。我想我在 yaml 文件上犯了一些错误,但即使多次检查它们,我也找不到错误
【解决方案2】:

试试这个:

-P "AND ('ecMSP.member','mohaMSP.member')"

也许您的同行没有“同行”角色。

查看此文档: Endorsement policy Identity Classification

【讨论】:

    【解决方案3】:

    我在调用链码函数期间缺少 --peerAddresses 参数。现在已经解决了。感谢@Harshit 的评论

    peer chaincode invoke -o orderer.nid.com:7050 -C nid-channel -n car_reg --peerAddresses peer0.moha.nid.com:7051 --peerAddresses peer0.ec.nid.com:7051 -c '{"Args":["createCar","1","bmw","tx","blue","me"]}'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多