每个区块链协议都使用共识算法来维护区块链。在区块链领域中最著名的是比特币的Nakamoto共识,它基于工作量证明(PoW)。它仅以概率方式获得最终结果,从而实现了很大程度的分散,其中多个分支可以相互竞争并随着时间的推移逐渐演变为一个分支。另一个极端源自传统的拜占庭协议(BA)。它们通过限制分散程度来保证即时的结果。 Aergo的DPoS共识主要位于上述两者之间的中间地带。它代表的特殊权利,以生成块一组选出的块生产者(BPS)的,同时允许在有限的范围内的重组。根据PoS共识并仅保留有限数量的BP,它可以解决功率共识中发现的性能问题和过多的能耗问题。本文详细介绍了在Aergo区块链中实现的DPoS。在本文的其余部分中,除非另有说明,否则“ DPoS”是指指在Aergo区块链中实现的DPoS。 Aergo上的DPoS块是在DPoS中生产的,并且数量有限?称为活动组件制造商(BP)的节点允许生成模块。他们是通过利益相关者之间的投票过程选出的。时间平均划分为多个时隙,每个时隙最多生成一个块。通过投票分数将活动BP安排在这些时隙上,并依次生成块。为了简单起见,让我们考虑一个BP活动的示例。它们是按投票分数的降序排列的A,B,C和D。块间隔为1秒。如果一切正常,则区块链将继续执行,如图1所示。每个方框中的字母是砌块的制造者。在此,每个BP每4秒生成一个块。但是,当没有及时接收到当前块时,下一个BP应该生成它。例如,假设A生成块“ 1”,然后B在生成块“ 2”之前崩溃。在这种情况下,C应生成块“ 2”。而不是B来生成块2。图2:B崩溃时阻止生产。因为B不具有与时隙“ 1”的冲突相对应的块,所以B不存在。和“ 5”,块在时间上不均匀地分布。块“ 1”之间的时间间隔为“ 1”。并阻止“ 2”大约是正常块(1s)的两倍(2s)。另一方面,DPoS允许进行分叉和重组,如比特币。假设B由于网络故障而与其他BP断开连接。即使在这种情况下,B和其他(A,C,D)也不会停止生产块。他们各自管理自己的区块链,如图3所示。图3:分叉由网络划分指导; B和(A,C,D)彼此断开。注意,时隙“ 1”与“ 1”相对应。和“ 5”表示主链上的空节点是空的,因为(A,C,D)网络未拆分。接收到B生成的块。 B管理的下行链是侧链,因为它比另一个短。当主链的高度达到7时,侧链的高度仍然只有3。因此,根据最长链规则,一旦网络问题解决并将主链的块发送到B,B便知道它的链比另一个短。最后,它将遵循主链(重组)。结束:最后一个不可逆的块。如果一个块连接到区块链,则可以视为铸造的块本身。在此基础上,提出了最后不可逆块(LIB)的概念。一旦一个块成为库,则禁止对其进行任何重组。因此,可以保证库和上一个块的确定性。在正常情况下,除了初始引导期外,该库会不断更新为更高的编号。从技术上讲,库的确定分为两个阶段:1.当大多数(⅔+)BP连接到区块链时,可以自由提议第一个。 2.当添加来自其他大多数BP的块时,建议的库最终成为最终库。最初,团体投票的范围没有限制。换句话说,连接到链的块被视为对块本身和所有父块进行投票。但是,后来的更改是为了避免LIBs³发生冲突。在修改后的版本中,BP X生成的块仅确定BP X生成的最后一个块之后的范围。图4:最后一个不可逆块如图4所示,是在4个BP的情况下确定的。这是一个4 BPs DPoS网络案例;其多数票为3票。在这种情况下,在决定自民党的每个阶段,需要3个基点的赞成票才能达成共识。钍