我们很久以来就听说,在同步网络中,有可能以50%的容错率达成共识,在同步网络中,任何诚实节点广播的消息都可以保证在某个已知时间段内被所有其他诚实节点接收到(如果攻击者拥有更超过50%,就可以执行“51%的攻击”,而有这种用于这种类型的任何算法)的类似物。我们也很久以前就听说过,如果您想放松同步假设,并且拥有一种“异步下安全”的算法,则可实现的最大容错度将降至33%(PBFT,Casper FFG等都属于此类)类别)。但是您知道吗,如果您添加更多假设(具体来说,,即。不积极参与共识但关心其输出,还积极关注共识,而不仅仅是在事实结束后下载其输出的用户),是否可以将容错能力一直提高到99%?
实际上,这已经有很长时间了。莱斯利·兰珀特(Leslie Lamport)1982年著名的论文“拜占庭将军问题”(此处链接)包含对该算法的描述。以下是我尝试以简化形式描述和重新制定算法的尝试。
假设有
如果验证者
在时间
节点1(红色)是恶意的,节点0和2(灰色)是诚实的。首先,两个诚实的节点提出建议
如果问题要求选择一个值,则他们可以使用一些“选择”功能从他们所看到的值中选择一个值(例如,他们选择哈希值最低的值)。然后,节点可以就该值达成共识。
现在,让我们探讨一下为什么它起作用。我们需要证明的是,如果一个诚实节点(有效地)看到了一个特定值,那么每个其他诚实节点也都看到了该值(如果我们证明这一点,那么我们知道所有诚实节点都看到了相同的一组值。值,因此,如果所有诚实节点都运行相同的选择功能,则它们将选择相同的值)。假设任何诚实节点都收到一条消息
-
在第一种情况下(例如
对于此消息),我们知道诚实节点 已经广播了该消息,而他们这样做是为了回应 他们在时间之前收到的签名 ,因此他们当时广播了他们的消息,因此所有诚实节点必须在时间之前已收到该消息 。 -
在第二种情况下,由于诚实节点会在时间之前看到消息
,然后他们将广播带有签名的消息,并确保所有人(包括 ,会在时间之前看到 。
请注意,该算法使用在消息超时时添加自己的签名作为一种“突击”的行为,正是这种能力保证了,如果一个诚实节点按时看到消息,他们可以确保其他人都能看到准时消息以及“准时”的定义与每个添加的签名相比,增加的延迟都超过网络延迟。
如果一个节点是诚实的,我们是否可以保证被动观察者(即关心结果的不参与共识的节点)也可以看到结果,即使我们要求他们一直在监视整个过程?按照书面计划,存在一个问题。假设一个指挥官和
但是我们可以塞这个洞。我们需要
改造其他共识算法
从理论上讲,以上内容可以用作独立的共识算法,甚至可以用于运行权益证明区块链。验证者套轮
但是,同步性假设非常强,因此在我们不需要超过33%或50%的容错能力的情况下,我们希望能够在没有同步性的情况下工作。有一种方法可以完成此任务。假设我们有一些其他的共识算法(例如,PBFT,卡斯帕FFG,连锁型POS)的输出可以通过不定时在线观察者可以看到(我们称这个门槛依赖共识算法,相对于上述算法,我们将其称为与延迟相关的共识算法)。假设阈值相关的共识算法以一种不断将新块“最终确定”在链上的模式连续运行(即,每个最终确定值都以“父”的形式指向某个先前最终确定的值;如果有一系列指针)
我们可以将依赖于延迟的算法改装到这种结构上,使始终在线的观察者可以在检查点上获得某种“强大的确定性”,容错性约为95%(您可以通过添加更多的验证器将其任意逼近100%需要更长的时间)。
每当时间达到4096秒的倍数时,我们运行依赖于延迟的算法,选择512个随机节点参与该算法。有效建议是由阈值相关算法最终确定的任何有效值链。如果节点在时间之前看到某个最终值
最后使用的“选择”功能很简单:
- 不是上一轮已同意成为最终值的后代的最终值将被忽略
- 无效的最终值将被忽略
- 要在两个有效的最终值之间进行选择,请选择一个哈希值较低的值
如果5%的验证者是诚实的,则随机选择的512个节点中,只有1万亿左右的概率是诚实的,并且只要网络延迟和时钟差异小于
如果满足阈值相关共识算法的容错能力(通常为50%或67%诚实),则阈值相关共识算法将不会最终确定任何新的检查点,或者将最终确定彼此兼容的新检查点(例如,一系列检查点,每个检查点都指向前一个作为父对象),因此即使网络延迟超过
如果同时(或在连续回合中)打破了阈值相关和延迟相关共识算法的假设,则该算法可能会崩溃。例如,假设在一轮中,取决于阈值的共识最终确定
本文链接地址:https://www.wwsww.cn/jishu/6868.html
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。