Gossip 数据传输协议

Hyperledger Fabric通过在交易执行(endorsement和committing)peer节点和交易ordering节点之间划分工作负载来优化块链网络性能,安全性和可扩展性。网络操作的这种解耦需要一个安全,可信的和可扩展的数据传播协议,以确保数据的完整性和一致性。为了满足这些要求,Hyperledger Fabric实现了Gossip数据传播协议。

Gossip协议

Peer利用gossip以可扩展的方式广播分类帐和channel数据。Gossip消息是连续的,channel上的每个peer都在不断接收来自多个peer的当前和一致的分类帐数据。每个gossip消息被签名,从而拜占庭人员发送伪造的消息会容易地识别出来,并且将消息分发到不想要的目标以被阻止。受延迟,网络分区或导致丢失的块的其他因素影响,peer最终将通过联系拥有这些丢失块的peer将同步到当前分类帐状态。

基于Gossip-based数据传播协议在Hyperledger Fabric网络上执行三个主要功能:

  1. 管理peer发现和通道成员资格,通过不断识别可用成员peer,并最终检测已脱机的peer。
  2. 在channel上的所有peer上传播分类帐数据。任何与channel其他部分不同步的数据都可以通过复制正确的数据来识别缺失的块和同步自身。
  3. 通过允许对账本数据的点对点状态传输更新,使新连接的peer达到速度要求。

Gossip-based的广播通过peer接收来自该channel上的其他peer的消息,然后将这些消息转发到channel上的多个随机选择的peer,其中该数量是可配置的常数。Peer也可以执行pull机制,而不是等待发送消息。该带有channel成员资格循环重复,分类帐和状态信息不断保持实时性和同步。为了传播新区块,该channel的leader peer从ordering服务中提取数据,并向peer中发起gossip传输。

Gossip消息

在线peer通过不断地广播“alive”消息来指示它们的可用性,每个消息包含公钥基础设施(PKI) ID和消息中发送者的签名。Peer通过收集这些alive的消息来维持渠道成员资格; 如果没有peer从特定对等体接收到活动消息,则该“死”对等体最终从信道成员资格中清除。由于“活着”消息是加密签名的,所以恶意peer不能伪造其他peer,因为它们缺少根证书颁发机构(CA)授权的签名密钥。

除了接收到的消息的自动转发之外,状态协调进程通过channel上的peer同步全局状态。每个peer不断地从channel上的其他peer中提取块,以便在识别出差异时修复自己的状态。由于不需要固定连接来维护基于gossip的数据传播,因此该流程可以可靠地为共享分类帐提供数据一致性和完整性,包括对崩溃节点的容错。

由于channel被隔离,一个channel上的peer不能在其他channel上发送消息或共享信息。虽然任何peer可以属于多个channel,但是分区消息通过基于peer的channel订阅应用消息路由策略来防止块被传播到不在channel中的peer。

注意
1. 点对点消息的安全性由peer TLS层处理,并且不需要签名。Peer通过其由CA分配的证书进行身份验证。虽然也使用TLS证书,但是,是在gossip层中验证的peer的证书。分类帐块由ordering服务签名,然后交付给channel的header peer。
2. 认证由peer的成员服务提供商(MSP)管理。当peer首次连接到channel时,TLS会话将与会员身份绑定。这本质上是对每个peer进行身份验证,并对网络和channle中的成员进行身份验证。

如有转载请注明出处

===================================

[英文原版]

Gossip data dissemination protocol

你可能感兴趣的:(fabric,区块链,fabric)