酷玩网

99%容错共识指南

linx
欧意最新版本

欧意最新版本

欧意最新版本app是一款安全、稳定、可靠的数字货币交易平台。

APP下载  官网地址

长久以来,我们耳闻在同步网络中,容错率达到50%便可以实现共识。在这一网络中,任何诚实节点广播的信息都能确保在某个特定时间窗口内被所有其他诚实节点接收。若攻击者控制超过50%的节点,便能实施所谓的“51%攻击”。此外,我们亦曾听闻,若放宽同步假设,采用“异步下安全”算法,最大容错率将降至33%(如PBFT、Casper FFG等)。然而,您是否知晓,若增加更多假设(具体而言,即非活跃于共识但关注其输出的节点,以及那些不仅下载输出还积极参与共识的用户),我们能否将容错能力提升至99%?

事实上,这一观点早已存在。莱斯利·兰珀特(Leslie Lamport)于1982年发表的著名论文《拜占庭将军问题》(点击此处查看)中,便对该算法进行了描述。以下是我尝试以简化形式描述和重构该算法的尝试。

假设有N个节点参与共识,它们是谁由事先确定(根据具体情况,可以由信任方选择,或者通过工作证明或权益证明计划来选择)。我们用0到N-1来标记这些节点。还假设存在一个已知界限d,即网络延迟和时钟差异(例如,Dd= 8秒)。每个节点都有能力在某个时间发布值ŤT(恶意节点当然可以早于或晚提出值ŤT)。所有节点都在等待(N-1)·d(N-1).D秒,然后运行以下过程。定义X:一世作为“价值X由节点一世签名”,X:一世:Ĵ作为“价值X被一世签名,并且该值和签名由Ĵ等等。在第一阶段发布的提案将采用以下形式:v:一世对于一些v和一世,其中包含提出它的节点的签名。

如果验证者一世收到一些消息v:一世[1个]:。。。:一世[ķ],其中一世[1个]。。。一世[ķ]是已经(顺序)对消息进行了签名的索引列表(只是v本身算作ķ=0和v:一世如ķ=1个),然后验证者检查(i)时间是否小于Ť+ķ·d,以及(ii)他们尚未看到包含以下内容的有效消息v;如果两项检查均通过,他们将发布v:一世[1个]:。。。:一世[ķ]:一世。

在时间Ť+(N-1)·d时,节点停止监听。在这一点上,可以保证诚实节点都“有效地看到了”相同的一组值。

但我们仍需弥补一个漏洞。我们需要将d限制在两倍的网络延迟和时钟差异。然后,我们对观察者设置另一个超时:观察者接受v:一世[1个]:。。。。:一世[ķ]时间之前Ť+(ķ-0.5)·d。现在,假设观察者看到一条消息并接受了它。他们将能够在时间之前将其广播到诚实节点Ť+ķ·d,诚实节点将发出带有其签名的消息,该消息将在时间之前到达所有其他观察者Ť+(ķ+0.5)·d,消息超时ķ+1个签名。

接下来,我们探讨其他共识算法的改造。从理论上讲,上述内容可以用作独立的共识算法,甚至可以用于运行权益证明区块链。验证者套轮N+1个共识本身可以在回合中决定N共识(例如,共识的每一轮也可以接受“存款”和“撤回”交易,如果交易被接受并正确签名,则会在下一轮中添加或删除验证者)。需要添加的主要附加成分是一种机制,用于确定允许谁提出提案(例如,每轮可以有一个指定的提案人)。通过允许参与共识的节点在签名的同时在其公钥之上发布工作量证明解决方案,允许参与共识的节点实时“声明自己”,还可以将其修改为可用作工作量证明区块链。一条消息。

但同步性假设非常强,因此在我们不需要超过33%或50%的容错能力的情况下,我们希望能够在没有同步性的情况下工作。有一种方法可以完成此任务。假设我们有一些其他的共识算法(例如,PBFT、卡斯帕FFG、连锁型POS)的输出可以通过不定时在线观察者可以看到(我们称这个门槛依赖共识算法,相对于上述算法,我们将其称为与延迟相关的共识算法)。假设阈值相关的共识算法以一种不断将新块“最终确定”在链上的模式连续运行(即,每个最终确定值都以“父”的形式指向某个先前最终确定的值;如果有一系列指针一种→ÿ→X,我们会打电话给一种一个后代的X)。

我们可以将依赖于延迟的算法改装到这种结构上,使始终在线的观察者可以在检查点上获得某种“强大的确定性”,容错性约为95%(您可以通过添加更多的验证器将其任意逼近100%,需要更长的时间)。

每当时间达到4096秒的倍数时,我们运行依赖于延迟的算法,选择512个随机节点参与该算法。有效建议是由阈值相关算法最终确定的任何有效值链。如果节点在时间之前看到某个最终值Ť+ķ·d(d= 8秒)ķ签名,它会将链条接受到其已知链条集中,并通过添加自己的签名重新广播;观察者使用阈值Ť+(ķ-0.5)·d和以前一样。

最后使用的“选择”功能很简单:

不是上一轮已同意成为最终值的后代的最终值将被忽略。无效的最终值将被忽略。要在两个有效的最终值之间进行选择,请选择一个哈希值较低的值。

如果5%的验证者是诚实的,则随机选择的512个节点中,只有1万亿左右的概率是诚实的,并且只要网络延迟和时钟差异小于d/2,即使由于阈值相关算法的容错性被破坏,即使给出了多个冲突的最终值,上述算法也可以在某个单个最终值上正确地协调节点。

如果满足阈值相关共识算法的容错能力(通常为50%或67%诚实),则阈值相关共识算法将不会最终确定任何新的检查点,或者将最终确定彼此兼容的新检查点(例如,一系列检查点,每个检查点都指向前一个作为父对象),因此即使网络延迟超过d/2(甚至d),因此,参与等待时间相关算法的节点在接受哪个值上存在分歧,因此仍然可以保证它们接受的值属于同一链,因此没有实际分歧。一旦延迟在以后的某个回合中恢复正常,依赖于延迟的共识将恢复“同步”。

如果同时(或在连续回合中)打破了阈值相关和延迟相关共识算法的假设,则该算法可能会崩溃。例如,假设在一轮中,取决于阈值的共识最终确定ž→ÿ→X并且延迟相关的共识不同意ÿ和X,并且在下一轮中,取决于阈值的共识最终确定了后代w ^的X这是没有的后代ÿ;在依赖于延迟的共识中,达成共识的节点ÿ不会接受w ^,但同意的节点X将。但是,这是不可避免的。异步安全的共识不可能与1/3容错是拜占庭式容错理论中的一个众所周知的结果,1/2容错甚至允许同步假设,但假设离线观察者。

标签: 数字货币