我的网络由2个组织组成,每个组织有2个对等方,1个CA(每个组织),1个独立订购者。
我在所有对等设备上安装了链代码,并通过CLI通过认证策略"AND('Org1.member', 'Org2.member')"
进行了实例化。
我在peer0.org1.example.com
peer chaincode instantiate -C mychannel -n mycc -P "AND('Org1.member', 'Org2.member')"
现在,当我尝试通过节点SDK调用请求时,我收到了所有成功的认可响应,但在发送给订购者后发生了ENDORSEMENT_POLICY_FAILURE
错误。
我使用渠道功能sendTransactionProposal
和verifyProposalResponse
通过compareProposalResponseResults
检查了收到的认可。
peer
和orderer
日志中没有提供额外信息来调试此错误。任何帮助将不胜感激。
我正在使用Hyperledger Fabric v1.0.1
和node sdk v1.0.0
来运行这些测试。
答案 0 :(得分:0)
verifyProposalResponse 和 compareProposalResponseResults 不会验证是否存在足够的认可。
compareProposalResponseResults - 检查一组提案的实用程序方法,以检查它们是否包含相同的认可结果写集。这将验证认可的同行都同意链码执行的结果。
它将检查所有提案响应是否包含完全相同的响应。假设您的链代码应该返回值X.它验证所有提案响应是否包含X而不包含任何其他内容。这是一种有价值的方法,可确保您不会在读写集中出现不匹配。
verifyProposalResponse - 验证单个提案响应的实用程序方法。它检查以下方面: 1.代言人的身份属于渠道的合法MSP,可以成功反序列化 2.认可签名可以通过背书人的身份证明成功验证。
所以你需要检查一下你是否从同行那里得到了足够的回应。虽然没有直接的方法来做到这一点。您可以尝试以下几种方式: