在超账结构中传播私人数据的问题

时间:2019-07-08 15:55:45

标签: hyperledger-fabric hyperledger-fabric-sdk-java

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

  • orderer.org0
  • peer0.org1
  • peer1.org1
  • peer0.org2

私人数据收集的定义如下:

---
- 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

为什么会这样?据我了解,因为在org0中有两个对等体,所以requiredPeerCount:1应该成立。

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

2019-07-08 16:17:03.725 UTC [gossip.discovery] sendMemResponse -> DEBU 2853 Entering endpoint:"peer0.org1.example.com:7051" pki_id:"\2057\365\305\215\007*\025\277[\313\270t\020\"\355\301\247\214 \r\267\350T\260\375+G\333a\202\246" 
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:"\030\001*O\n?\n\033peer0.org1.example.com:7051\032 \2057\365\305\215\007*\025\277[\313\270t\020\"\355\301\247\214 \r\267\350T\260\375+G\333a\202\246\022\014\010\333\256\243\376\211\323\336\327\025\020l" signature:"0E\002!\000\261sVO\351\007\346\302A-1\360\002j\233\013;\204e\245\320W\014\263\337y\303\273+\220\217\t\002 m\210\351\332\262\032\323\215\343\372t\24450\004\034\036\023IiaJ?9 O-m\365l\343\325" secret_envelope:<payload:"\n\033peer0.org1.example.com:7051" signature:"0E\002!\000\344\261\203.A\221\272\345\314\240\223~\342\001\206\343\206\021^\311\033\005Q\233%\370\014#\250\rf\230\002 *m\307Jh\312q\371\014\302w\000>\232g\227\233\003\372\205\357\363&L?\262yH\366\240\225I" > > alive:<payload:"\030\001*2\n\"\032 2\320\014\223K\373\265\215E\375f\261\324\021\356\244\330o\370u>l\322[\033\005\240\363R\236\334F\022\014\010\331\340\224\370\204\323\336\327\025\020j" signature:"0D\002 E@\032!\313#\331\211\\|\334)R/n\221\347%\226\265\214\032\353}\323\302D\271\355\245\366\021\002 rL\327\346\244\022\235\360-\376\350\235\003\262K#\"C\t{\324\370\231\"P\365\376\341\014wM*" secret_envelope:<payload:"\n\033peer1.org1.example.com:7051" signature:"0E\002!\000\3777\226V\000\212>\235\232\334 \022\231\371\010\370\256\037\231\340\001\225\305r7\324\317\356K1\200\321\002 \001\215\321!\263L\342s\233\014#\334q\264\332,\261xOm\317\2555\352\330\252\326R\307`\363?" > > 

2 个答案:

答案 0 :(得分:0)

私有数据收集定义中,键“ 策略”只能包装在“或”条件周围,也许这就是导致错误的原因。

这里的link解释得很好。

答案 1 :(得分:0)

该问题与本地八卦配置不当有关。进而导致我在configtx.yaml中错误的策略配置

我曾担任以下角色: 'Org1MSP.client' 'Org1MSP.peer'

但是看起来它们仅在配置NodeOU时才有效(请参阅https://hyperledger-fabric.readthedocs.io/en/release-1.4/msp.html#identity-classification)。在将它们替换为“ Org1MSP.member”后,它开始工作。