LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 行情分析 > 技术科普 | 什么是LBFT 2.0共识算法?

技术科普 | 什么是LBFT 2.0共识算法?

2019-12-20 CPChain物信链 来源:区块链网络

一个成功的公链生态离不开一套良好的共识机制。


与大多数Pow、Pos、DPos共识机制不同,CPChain公链系统采用CPChain技术团队独创的DPoR混合共识机制


DPoR共识协议是适用于公有区块链的两阶段混合共识协议,基于信誉度评估模型从多个维度评价网络中的参与节点,在此基础上开发开放授权协议,以及准入控制算法,实现动态委员会选举。委员会内部通过LBFT2.0共识协议快速共识并出块。


四类节点

在LBFT2.0中,整个系统主要由四类节点构成:出块节点委员会、预备出块者、验证者节点委员、普通节点。


出块委员会成员由每一届内固定数量的荣誉节点选举产生,其中包含以下属性:

  • 出块委员会成员根据候选人的荣誉参数和随机种子选出;

  • 每一任在任期的成员轮流承担着在该任期内出块的职责;

  • 出块人指的是分配给当前轮次中出新块的成员;

  • 出块者的不当行为将面临来自验证者的弹劾机制,验证者将因提议的失败而惩罚该出块者。


验证委员会指的是对可以进行出块的出块委员会成员进行验证的一组用户。它具有以下特性:

  • 所有验证者共同组成验证人委员会;

  • 验证者委员会由CPChain基金会,政府和公司提名的节点组成;

  • 某些异常情况外,验证委员会中的验证节点将不会出块;

  • 验证委员会遵循CPChain所设计的LBFT 2.0协议,以达成共识;

  • 验证委员会成员数量总是等于3f + 1,其中f是拜占庭节点的数量。


预备出块者节点是一组比较特殊的RNoder,它具有以下特性:

  • 该节点具有较高的RPT(荣誉度)和良好的出块记录。

  • 预备出块节点主要扮演以下两个角色:当出块者节点数量不足时作为备份;组成一定比例的验证者委员会以确保吞吐量。


其余节点均为普通节点,一旦一名普通用户获得荣誉节点的资格,就可以宣称自己是参与委员会竞选的候选人。候选人当选后,将于后续任期内加入出块委员会。


正常和异常情况

在深入解释案例处理程序之前,让我们介绍一个重要的概念定额。法定人数是验证者委员会成员的子集,以便可以在某种状态下在此法定人数之间达成共识。这些法定人数具有两个重要属性:


交集:任何两个法定人数共有至少一个忠诚的验证者。

可用性:总是有一个仲裁,没有错误的验证器。


仲裁成员在同一块中认可信息时,将收集仲裁证书。有两个证书,准备证书(P-certificate)和提交证书(C-certificate),它们分别指示存在一个同意prepare消息和commit消息的仲裁。


正常情况


块生成

  • 普通节点参与出块节点竞选,并获得竞选资格,进入出块节点候选列表;

  • 在定期选举中当选后,候选节点进入出块节点委员会;

  • 关于其出块的块号,提议者生成一个区块并广播给验证委员会的所有验证者;


区块验证

一旦接收到一个新生成的区块,验证委员会中的验证者将按照以下步骤对该块进行验证。

  • 块验证过程中要仔细检查该申请人的标识、时间戳等;

  • 如果验证通过,此验证者将向验证委员会中的其他验证者广播一条PREPARE消息;

  • 一旦接收到2f + 1 PREPARE消息(P-certificate),验证者即向其他验证者广播提交消息;

  • 一旦接收到2f + 1条(验证通过)提交消息(C-certificate),验证者就将该区块插入本地链,并将验证消息连同这2f + 1验证者的签名广播给所有用户;

  • 一旦验证者在块高中首次接收到验证消息,它将向所有节点广播相同的消息;

  • 任何用户收到具有足够签名的验证消息后,都将该块插入本地链。


弹劾机制

在LBFT 2.0中,弹劾是一个关键的异常处理程序,当提议者发生出块故障或无响应时启动弹劾机制。它是一个基于PBFT(实用拜占庭容错算法)的两阶段协议,分为准备和提交阶段。当验证者触发其弹劾机制时,它将代表出块故障(或没有响应)的提议者生成一个块。与正常出块流程相比,弹劾机制具有更高的优先级。换句话说,除了验证消息外,弹劾机制中的验证者不处理任何正常的案例消息。


弹劾机制围绕以下两种情况开展:

  • 验证者定时器超时;

  • 处于空闲状态的验证者接收到来自提案者的非法块。


计时器超时的原因有很多,比如提案者未给予响应、双花攻击和时间戳不正确。非法区块可以是具有不正当交易和标识的区块。


弹劾程序的步骤如下:

  • 委员会中的验证者生成弹劾块;

  • 此块被用作弹劾准备消息,广播给委员会中的所有验证者;

  • 一旦接收到具有相同头部和主体的f + 1条弹劾准备消息,验证者v就向其他验证者广播弹劾提交消息;

  • 一旦接收到f + 1条弹劾提交消息,验证者将向所有用户广播携带着f+1个签名的弹劾验证消息;

  • 任何验证者第一次接收到弹劾验证消息,即插入弹劾块并向所有节点广播相同的该消息;

  • 如果所有用户均接收到弹劾验证消息,则将该块插入本地链。

—-

编译者/作者:CPChain物信链

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...