新加入的组织中的Hyperledger Fabric Chaincode实例化失败

时间:2019-08-28 15:20:08

标签: hyperledger-fabric

我们有一个2 Org Fabric网络。最初,我们正在研究的渠道仅定义了一个组织“ org1”,后来通过添加“ org2”扩展为拥有两个组织。

现在,我们要将链码添加到“ org2”中的对等方。

可以安装链码,但是当我们在“ org1”中实例化该链码时,无法在“ org2”中实例化它。

我们唯一可以在日志中看到的错误是一个八卦问题。 “ org2”中的对等点显然无法加入八卦网络。在“ org2”中启动对等方时,我们在对等方日志中看到以下消息:

2019-08-28 13:48:41.804 UTC [gossip.comm] Handshake -> WARN 21b Authentication failed: Could not acquire policy manager for channel mychannel
2019-08-28 13:48:41.804 UTC [gossip.gossip] func1 -> WARN 21c Deep probe of peer0-org1-ch:7051 failed: Could not acquire policy manager for channel mychannel

“ org2”中似乎存在一个潜在问题,即“无法获取策略管理器”。

这是无法实例化“ Org2”中的链码的根本原因吗?

什么是策略管理器,导致它在“ org2”中不可用?

请注意,我们的创始区块仅在知道“ org1”的情况下创建:

Profiles:
    MyConsOrdererGenesis:
        <<: *ChannelDefaults
        Orderer:
            <<: *OrdererDefaults
            Organizations:
                - *OrdererOrg
        Consortiums:
            MyConsortium:
                Organizations:
                    - *Org1
                    - *Org2
    MyChannel:
        <<: *ChannelDefaults
        Consortium: MyConsortium
        Application:
            <<: *ApplicationDefaults
            Organizations:
                - *Org1
                - *Org2

2 个答案:

答案 0 :(得分:0)

让我先说一下概念

在hyperledger Fabric中,人们可以将链码安装到对等端并实例化到只有时间的通道

采取这种情况:

初始设置:

一个组织,两个同伴和一个频道 如果假设您在两个对等节点上安装了链码abc并在通道上实例化了一次

以后,如果您将第二个组织添加到频道并加入第二个组织对等方,那么您只需安装即可,无需实例化。

在第二个组织对等方调用或查询时,将创建fly chaincode容器。

请确保您的同行中有以下提到的环境,以确保八卦能够正常工作

  - CORE_PEER_GOSSIP_BOOTSTRAP=[org1-peer1:7051,org1-peer2:7051] #<a list of peer endpoints within the peer's org>
  - CORE_PEER_GOSSIP_EXTERNALENDPOINT=org1-peer2:7051
  - CORE_PEER_GOSSIP_USELEADERELECTION=true
  - CORE_PEER_GOSSIP_ORGLEADER=false

我强烈建议更新锚点对等体,请检查此Anchor peer vs CORE_PEER_GOSSIP_EXTERNALENDPOINT?,我已经提到了有关更新锚点对等体的明确说明

答案 1 :(得分:0)

首先,它与Gossip初始化无关。每个通道只能实例化一次链码。意味着对于第二个组织,对于您的情况Org2,您只需要等待,直到同级同步并拉出已包含链码实例化事务的块即可。

现在,为了清楚起见,您需要实例化Gossip的原因有两个:

  1. 允许跨组织状态传输滞后于同级或在网络分区中某些组织无法到达订购服务的情况下。
  2. 启用通过八卦网络在组织域中分布的私有数据。

无论如何,失败与八卦本身无关。您只是不能实例化链码两次。

如果您想启用八卦,则只需更新两个组织的锚点对等点,例如为发布其锚点对等方的每个组织运行config update事务,这将用于建立跨组织域通信。