Overlord 是由 Nervos 开发团队最新研发的原创共识算法,这一共识算法的出现是基于 Huobi Chain 的金融应用场景需求。
为什么要单独设计出一种新的共识算法?它相比于现有的主流的 BFT 共识算法(PBFT、Tendermint、Hotstuff……)有什么不同?下面,就让我们和 Muta 团队的周昀一起来了解一下 Overlord 的设计思路与设计特点。
当前我们正处在一个信息大爆炸的时代,在无时不刻不被过量信息包围的处境下,想要客观准确地探究未知事物的本质,变得异常艰难。然而我们始终坚信,卓越的产品源于开创性思维,亦步亦趋必然逃不出自己铸就的天花板,因此我们决定屏蔽一切现有成熟的方案套路,从最原始的需求出发,一砖一瓦地实现我们的愿景。
确定共识算法的目标
最初在为 Huobi Chain 设计共识算法的时候,我们并没有立马着手于技术选型,而是先直面灵魂三问:Huobi Chain 的服务对象是谁?需要解决什么问题?能够创造什么社会价值?在此期间,我们积极汲取了金融、管理等领域专业人士的建议,密切跟踪市场的真实需求,仔细聆听社区的反馈,经过与数个团队无数次缜密的意见交流之后,终于在 2019 年 6 月,取得了阶段性的结论。
鉴于当前金融市场和区块链技术应用相对割裂的现状,Huobi Chain 的定位是:基于区块链的,高效的,全球性的金融市场基础设施。「高效」对应高速迸发的链上交易;「全球化」对应底层链友好的兼容性和高度可扩展性;「基础设施」则意味着链上应用开发的标准化、精简化,并能够在未来形成丰富的开发者生态。只是这样简简单单的一句话,却向底层链提出了明确的硬性指标。
共识是一条链的心脏,心脏必须高效健壮,链上应用才能蓬勃有力。为了实现火币公链的目标,我们需要一个能够支持上百个共识节点、满足数千笔每秒的交易处理能力,且交易延迟不超过数秒的 BFT 共识算法。
现行主流共识算法调研
我们调研了市场上所有主流的 BFT 共识算法:PBFT、Tendermint、Hotstuff……遗憾的是,这些共识算法均无法满足我们的需求。
PBFT 作为最早出现的实用性拜占庭容错共识算法,最大的问题是 ViewChange 时,导致 O(n^3) 的过高消息复杂度。
Tendermint 是 2017 年提出的共识算法,其核心采用了「锁定—解锁」机制,简化了 Leader 切换过程。但是该算法却损失了响应性(Responsiveness),这意味着即使处于极佳的网络条件下,仍需面临固定的出块时间。另一方面该算法 Viewchange 虽然有所精简,复杂度降低至 O(n^2),但依旧无法满足我们对较高共识效率的需求。
Hotstuff 于 2019 年通过 Libra 走进大众视野,在消息复杂度和提升响应性上做了很多改进,但是交易的确认至少需要 3 个区块,这一限制在特定环境下,将无法满足某些特定业务和场景的需求。
面临困局,我们决定迎难而上,打造一套全新的共识算法,于是就有了 Overlord。该算法已经完成了第一阶段的设计研发,初步的工程实现已在 GitHub 上开源,目前实测已经能够支持上百个共识节点,满足数千笔每秒的交易处理能力,而且交易延迟不超过数秒,交易上链即不可回滚。那么 Overlord 是如何能够满足这些需求的?
Overlord 的创新之处
引入聚合签名机制,降低消息复杂度
首先,Overlord 引入了聚合签名机制,每一轮的共识投票消息,由各个共识节点发送给 Leader,并由 Leader 签名后将零散的消息聚合为一,再广播给其他节点。这一设定将消息复杂度从 O(n^2) 降低至 O(n),进而可以支持数百个共识节点。
采用「超时+刹车」机制,解决 Leader 作恶,加速共识进程,降低工程实现难度
与此同时,Overlord 采用了「超时+刹车」的机制来解决 Leader 作恶的问题,显著加速了共识进程,同时降低了工程实现难度。同时,由于消息的数量大幅下降,消息共识(投票等)所占带宽的比例也有了一定的下降,这进一步提升了共识效率。
并行处理出块和投票,出块更快、交易处理能力更高
另一方面,Overlord 实现了并行处理出块和投票。这意味着区块校验(包括共识交易的同步)与第一轮投票过程可以并行进行,这相比与其他共识算法出块更快、交易处理能力更高。
解耦状态定序与交易共识,使区块的共识过程和执行过程可以并行
Overlord 最重要的一个创新点,也是这个算法最核心的思想,在于解耦了状态定序与交易共识,从而使得区块的共识过程和执行过程可以并行。相比于 Tendermint 等待执行结果后再进行下一次共识,Overlord 的共识效率有了跨越式提升,因为带宽的空闲等待明显降低。而且在这种设定下,区块上链即确认,交易不可回滚。这将极大的适用于有着大量交易或者复杂合约的金融业务场景。
我们十分坚信,Overlord 将成为下一代通用的共识解决方案。
有趣的命名故事
说起 Overlord 的命名,它其实和我们的 Layer 2 解决方案 Muta 一脉相承(暴雪粉应该不需要小编多说什么了)。
在这款游戏中, Overlord 是为虫族提供人口的基本单位,可以控制若干虫群,这和我们理解的共识的本质很像。共识也是一条链的核心,控制着各个节点的运转,如果把节点想象成虫群的话,Overlord 则是虫群的大脑。相信在 Overlord 的带领下,我们也能建立起庞大的分布式区块链系统。