八卦数据传播协议
Hyperledger Fabric优化了区块链网络性能,安全性,通过跨交易执行(认可和提交)对等点和交易排序节点划分工作负载来实现可伸缩性。这种网络操作的分离需要安全,可靠且可扩展的数据传播协议以确保数据的完整性和一致性。为了满足这些条件,Fabric实现了八卦数据传播协议。
八卦协议
对等点利用八卦以可扩展的方式广播分类帐和通道数据,八卦消息是连续的,并且通道上的每个对等点不断地从多个对等点接收当前和一致的分类帐数据,每个八卦的消息都已签名,从而允许拜占庭参与者轻松识别发送伪造消息,并防止将消息分发给不需要的目标。受延迟,网络分区或导致错过块的其他原因影响的对等点最终将通过联系拥有这些丢失块的对等点同步到当前分类帐状态。
基于八卦的数据传播协议在Fabric网络上执行三个主要功能:
- 管理对等点发现和通道成员资格,通过不断识别可用的成员对等点,并最终检测已脱机的对等点。
- 在通道中的所有对等点中传播分类帐数据,具有与通道其余部分不同步的数据的任何对等点识别丢失的块并通过复制正确的数据来同步自身。
- 通过允许分类帐数据的点对点状态传输更新,使新连接的对等点加速。
基于八卦的广播操作是由对等点接收通道中其他对等点的消息,然后将这些消息转发给该通道上的多个随机选择的对等点,其中此数量是可配置常量。对等点也可以使用拉取机制而不是等待消息的传递,这个循环重复,通道成员资格、分类帐和状态信息的结果不断保持最新和同步。用于传播新块,通道上的领导对等点从排序服务中拉取数据,并向其自己组织中的对等点发起八卦传播。
领导选举
领导选举机制用于为每个组织选择一个对等点,该对等点将与排序服务保持连接并发起在其自己组织的对等点之间分发新到达的区块,利用领导选举为系统提供了有效利用排序服务带宽的能力,领导选举模块有两种可能的操作模式:
- 静态的 – 系统管理员手动将组织中的一个对等点配置为领导,例如一个与排序服务保持开放连接。
- 动态点 – 对等点执行领导选举程序选择组织中的一个对等点成为领导,从排序服务中拉取块,并将块传播给组织中的其他对等点。
静态领导选举
使用静态领导选举允许在组织内手动定义一组领导对等点,可以将单个节点定义为领导或所有可用的对等点,应该考虑到这一点 – 使用太多的对等点连接到排序服务可能会导致带宽利用效率低下,要启用静态领导选举模式,请在core.yaml
部分中配置以下参数:
peer:
# Gossip related configuration
gossip:
useLeaderElection: false
orgLeader: true
或者,可以使用环境变量配置和覆盖这些参数:
export CORE_PEER_GOSSIP_USELEADERELECTION=false
export CORE_PEER_GOSSIP_ORGLEADER=true
以下配置将使对等点处于待机模式,即对等点不会尝试成为领导:
export CORE_PEER_GOSSIP_USELEADERELECTION=false
export CORE_PEER_GOSSIP_ORGLEADER=false
将CORE_PEER_GOSSIP_USELEADERELECTION
和CORE_PEER_GOSSIP_USELEADERELECTION
设置为true
值是不明确的,将导致错误。
在静态配置组织中,管理员负责在出现故障或崩溃时提供领导节点的高可用性。