hyperledger fabric 中私有数据传播的问题

Issue with dissemenation of private data in hyperledger fabric

我的网络结构非常简单,有两个对等组织和一个订购者。

私人数据收集定义如下:

---
- StaticCollectionConfig:
    name: topSecret
    SignaturePolicyEnvelope:
      identities:
        - org1member:
            role:
              name: member
              mspId: Org1MSP
      policy:
        1-of:
          - signed-by: org1member
  requiredPeerCount: 1
  maximumPeerCount: 1
  blockToLive: 0
  memberOnlyRead: true

因此,它应该只允许 org1 成员允许使用私人数据。

实际上,如果我 运行 对 org1 的对等点执行一些与 PrivateData 相关的操作,它会在对等点日志中抛出以下错误:

[gossip.privdata] func1 -> ERRO 84e Failed disseminating private RWSet for TxID <TxId> , namespace mychcode collection topSecret : Requested to send to at least 1 peers, but know only of 0 suitable peers to distributed private collection

为什么会这样?根据我的理解, requiredPeerCount: 1 应该成立,因为我在 org0.

中有两个同行

P.S。内部八卦已配置,可以在日志中看到以下消息

2019-07-08 16:17:03.725 UTC [gossip.discovery] sendMemResponse -> DEBU 2853 Entering endpoint:"peer0.org1.example.com:7051" pki_id:"57555[=12=]7*57[30t0\"5174 \r70T05+G3a26" 
2019-07-08 16:17:03.725 UTC [gossip.comm] Send -> DEBU 2854 Entering, sending GossipMessage: Channel: , nonce: 0, tag: EMPTY MembershipResponse with Alive: 2, Dead: 0, Envelope: 509 bytes, Signature: 0 bytes to  1 peers
2019-07-08 16:17:03.725 UTC [gossip.comm] sendToEndpoint -> DEBU 2855 Entering, Sending to peer0.org1.example.com:7051 , msg: GossipMessage: Channel: , nonce: 0, tag: EMPTY MembershipResponse with Alive: 2, Dead: 0, Envelope: 509 bytes, Signature: 0 bytes
2019-07-08 16:17:03.725 UTC [gossip.discovery] sendMemResponse -> DEBU 2856 Exiting, replying with alive:<payload:"0[=12=]1*O\n?\n3peer0.org1.example.com:70512 57555[=12=]7*57[30t0\"5174 \r70T05+G3a262403636136750l" signature:"0E[=12=]2![=12=]01sVO1[=12=]762A-10[=12=]2j33;4e50W437y33+07\t[=12=]2 m012223532t450[=12=]4463IiaJ?9 O-m5l35" secret_envelope:<payload:"\n3peer0.org1.example.com:7051" signature:"0E[=12=]2![=12=]0413.A125403~2[=12=]16361^13[=12=]5Q3%04#0\rf0[=12=]2 *m7Jh2q142w[=12=]0>2g73[=12=]32573&L?2yH605I" > > alive:<payload:"0[=12=]1*2\n\"2 2043K355E5f141640o0u>l2[3[=12=]503R64F2401040436750j" signature:"0D[=12=]2 E@2!3#11\|4)R/n17%65423}32D15561[=12=]2 rL764250-605[=12=]32K#\"C\t{401\"P5614wM*" secret_envelope:<payload:"\n3peer1.org1.example.com:7051" signature:"0E[=12=]2![=12=]0776V[=12=]02>524 211006710[=12=]155r7476K101[=12=]2 [=12=]151!3L2s34#4q42,1xOm7552026R7`3?" > > 

私有数据收集定义中,键策略只能围绕一个或条件,也许这就是造成错误的原因错误。

这里是 link 解释得很好。

该问题与本地八卦的一些错误配置有关。这反过来又导致了我在 configtx.yaml

中的错误策略配置

我使用了以下角色: 'Org1MSP.client' 'Org1MSP.peer'

但看起来它们只有在配置了 NodeOU 后才能工作(参见 https://hyperledger-fabric.readthedocs.io/en/release-1.4/msp.html#identity-classification)。在我用 'Org1MSP.member' 替换它们后,它开始工作了。