http://www.www.tnmanning.com

探索拜占庭容错共识(BFT)的预投票和预提交

自2018年末推出以来,Lisk改进建议(或LIPs)与Lisk社区密切合作,帮助改善了生态系统。我们通过这个过程引入的许多网络特性之一是新的拜占庭容错(BFT)共识系统。在这篇博客文章中,我们已经讨论了Lisk协议共识算法的优点。在Lisk SDK 3.0.0中实现它之前,我想关注BFT共识的一个重要方面——计算块终结的过程,即保证某个特定块永远不会被还原。

BFT的主要好处是什么?

在深入讨论这个主题之前,让我们快速浏览一下BFT在大发3d上改进的基本关键特性。

1. 安全性:如果网络中超过 2/3 的活动委托诚实地遵循协议,则两个冲突块永远无法在链上最终确定。
2. 活性:即使 1/3 的活动委托脱机,新块仍可在网络上完成。
3. 问责制:如果代表违反议定书,他/她将对此负责。

这是BFT为协议提供的三个高级值。它试图尽快从分叉中恢复过来,以更好地完成网络链的增长。这些特性都需要更广泛的理解。在这里,我们将更多地关注实现细节。

使用BFT共识,每个节点不仅仅维护了大发3d。它还在内存中维护额外的元数据,以便根据算法定义的规则验证块。此信息还将部分保存在大发3d本身上,以确保节点在崩溃时可以重建内存中的数据集。对于每个块,我们额外保留到大发3d的一个属性是委托之前锻造的高度和锻造该块时预投票的最大高度。与此同时,每个节点将保持最终确定的高度,因此在链恢复的情况下,已经确定的块不能被恢复。
让我们进入今天的主题——代表们为块投票。

为块进行民主投票

在Lisk生态系统中,投票并不是什么新鲜事——它是所有授权的权益关系证明(DPoS)协商共识算法的核心。LSK代币持有者可以为代表投票,然后,根据他们的投票,系统选择有资格为特定一轮铸造新区块的最高代表。以前,投票制度只用于为代表投票。随着BFT的引入,这一概念得到了扩展。现在,每个委托者将为每个块投一票,唯一的区别是这些票将由各个节点维护和保存。只有少数计算出来的属性将与网络共享,而不是与整个投票分类账共享。系统中的数学公式和协议检查将确保每个节点投出适当的选票。

与任何投票系统一样,基本规则是,作为一个代表,您只能对特定高度的块投一次票。由于两个块不能在同一高度上存在,所以实际上可以为每个块投一次票。这个过程称为预投票。收集到块⅔以上的选票(多数)有资格获得下一轮的投票。

第二轮投票称为预提交,规则相同 - 一名代表可以预先提交一个块,合格的块即意味着已经获得了超过2/3的所有预投票。最终确定的最高块将被视为链的最终高度。所有高度低于最终确定的块也将被视为最终确定块,在任何情况下都不能还原。

还有一些其他的规则:

1. 代表不能预先投票,也不能预先提交他们没有参与的那轮投票的区块。这样做是为了避免垃圾投票。因此,我们需要跟踪委托何时开始活动。
2. 代表不能提预投票和预提交超过两轮,以提高整个系统的性能。

示例场景#1—四个委托,都是伪造的

为了更好地理解这个概念,让我们举一个小例子。假设网络中有四个活动的委托。完成任何块——至少⅔(三个代表)必须同意。

探索拜占庭容错共识(BFT)的预投票和预提交

4名代表-全部锻造

让我们通过一个数据模拟来进一步理解这一点。

1. 应用大发3d时,需要检查以下信息: 代表先前伪造的高度、已获得⅔的大发3d中最高高度以及上一次委托处于活动状态的轮数

2. 委托检查前预提交和使所有导向块⅔票为止。考虑到规则,该委托不能两次预提交相同的块。委托也不能预先提交未激活的块。此外,由于性能原因,我们不会在链的当前高度之后的超过两轮执行这些预提交。

3.在每个块上,委托将对所有块进行预投票。考虑到委托不能对同一个块进行两次预投票的规则。代表不能在不活跃的时候提前投票。此外,出于性能原因,我们不会从当前链的高度执行超过两轮的预提交。

4. 如图所示,链中的第一个块在高度6处有三个预提交。这意味着该块已经完成,并且永远不会被还原。

5. 链中的其余块显然应用于链。为了解决网络中的分叉问题,可以适当恢复这些分叉。

6. 你可能会注意到的块⅔选票增加前的预提交。拥有更多预投票的块将有更多的预提交,并且有更多的机会被最终确定。

有一个重要的事实需要记住——终结性不是针对单个块的,而是针对特定块的高度。如果完成了一个块,这意味着它下面的所有块也都完成了。由于委托列表(确定锻造顺序的列表)中的更改,最终结果并不总是按顺序递增的。这意味着有可能有几个块没有完成,但是下一个块将会更早完成。在这种情况下,所有先前的块,高度低于刚刚完成的块,也将被视为完成。

示例场景#2—四个委托,缺少插槽

为了进一步理解这个预投票和预提交流程,让我们以具有相同四个代表的模拟为例,但是这一次代表开始丢失他们的插槽。这导致链的最终性没有平稳地增长,而是在最终块之间有间隙。

探索拜占庭容错共识(BFT)的预投票和预提交

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。