Hyperledger fabric 背书\u策略\u调用链码时失败,即使事务对象包含足够的背书

Hyperledger fabric 背书\u策略\u调用链码时失败,即使事务对象包含足够的背书,hyperledger-fabric,hyperledger,hyperledger-chaincode,Hyperledger Fabric,Hyperledger,Hyperledger Chaincode,我在hyperledger fabric 1.4.4上与5个组织a、B、C、D、E建立了一个网络。我用这5个组织创建了一个渠道,并在组织a和组织B上安装了我的链码,因为只有它们是背书政策的一部分 这是背书政策: {“身份”:[{“角色”:“成员”,“mspId”:“AMSP”}},{“角色”:{“名称”:“成员”,“mspId”:“BMSP”},{“角色”:{“名称”:“成员”,“mspId”:“CMSP”},{“角色”:{“名称”:“成员”,“mspId”:“DMSP”},{“角色”:{“名

我在hyperledger fabric 1.4.4上与5个组织a、B、C、D、E建立了一个网络。我用这5个组织创建了一个渠道,并在组织a和组织B上安装了我的链码,因为只有它们是背书政策的一部分

这是背书政策:


{“身份”:[{“角色”:“成员”,“mspId”:“AMSP”}},{“角色”:{“名称”:“成员”,“mspId”:“BMSP”},{“角色”:{“名称”:“成员”,“mspId”:“CMSP”},{“角色”:{“名称”:“成员”,“mspId”:“DMSP”},{“角色”:{“名称”:“成员”,“mspId”:“EMSP”},{“策略”:{“2-of”:“签名人”:0},{“签名人”},{
背书政策失败的原因有很多。首先,你没有足够的签名,这是你说你已经检查过的。另一个原因是并非所有签名都与发送的提案匹配

在1.4网关API中,在将提案发送给订购方之前,会接收提案,而不会进行比较,以查看它们是否都匹配。SDK将发送收到的所有签名和其中一个提案。在每个对等方的单个提案响应上创建签名

如果这些方案不匹配(这意味着您的链码是不确定的),那么其中一个签名就可以了,但另一个不会,因为它与发送给订购方的方案不匹配

我会检查您的链码是否是确定性的,因为每个对等方都可能生成不同的响应。例如,非确定性链码的一个示例是它创建一个新日期并将其存储在世界状态。每个对等方将创建稍微不同的日期值,从而产生不同的响应