需要传播给至少 1 个同行,但只知道 0 个符合条件的同行

Required to disseminate to at least 1 peers, but know of only 0 eligible peers

我们有一个带有 1 个通道的 hyperledger fabric 2.1 设置,通道中有 2 个组织。我们已经为两个组织定义了锚节点,并且我们还提到了 CORE_PEER_GOSSIP_EXTERNALENDPOINT 节点。我们有一个使用私有数据收集的链码,收集策略如下

[
  {
    "name": "Org1_testChannel_PDC",
    "policy": "OR ('Org1.member', 'Org2.member')",
    "requiredPeerCount": 1,
    "maxPeerCount": 2,
    "memberOnlyRead": true,
    "memberOnlyWrite": true,
    "blockToLive": 0,
    "endorsementPolicy": {
       "signaturePolicy": "OR('Org1.member', 'Org2.member')"
     }
  },
  {
    "name": "Org1_Secret_PDC",
    "policy": "OR ('Org1.member')",
    "requiredPeerCount": 0,
    "maxPeerCount": 1,
    "memberOnlyRead": true,
    "memberOnlyWrite": true,
    "blockToLive": 0,
    "endorsementPolicy": {
       "signaturePolicy": "OR('Org1.member')"
     }
  }
]

链码提交成功。但是,当我们尝试使用 Org1_testChannel_PDC 集合从 Org1 的对等节点进行交易时,我们收到了一个错误。我们还在交易中提到了 Org2 的 peer1,但我们仍然遇到错误。

Error: endorsement failure during invoke. response: status:500 message:"error in simulation: failed to distribute private collection, txID d9be8f15bf8a941d49aea96e369c7b00cb0b21b35c09a8c41380f6609a7754b9, channel testchannel: could not build private data dissemination plan for chaincode testcc and collection Org1_testChannel_PDC: required to disseminate to at least 1 peers, but know of only 0 eligible peers

此错误表明背书对等方无法将私有数据传达给足够多的(在您的情况下是另外 1 个)对等方。这通常是八卦端点配置不正确的症状。

您可以使用 service discovery CLI 来查询您的对等点以找到它知道的网络中的其他对等点。如果对等列表比您预期的要短,则八卦配置不正确。确保锚点对等地址和端口正确解析并对应于所需的对等点,确保对等点的 TLS 证书有效地链接到通道配置中定义的 TLS CA,并确保对等点的外部端点设置为 true。一旦解决了任何潜在的八卦网络配置问题,您的 PDC 分发就应该开始工作了。