我们有一个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
答案 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的原因有两个:
无论如何,失败与八卦本身无关。您只是不能实例化链码两次。
如果您想启用八卦,则只需更新两个组织的锚点对等点,例如为发布其锚点对等方的每个组织运行config update事务,这将用于建立跨组织域通信。