Overlord將會成為下一代通用的共識解決方案
Overlord 是由 Nervos 開發(fā)團(tuán)隊最新研發(fā)的原創(chuàng)共識算法,這一共識算法的出現(xiàn)是基于 Huobi Chain 的金融應(yīng)用場景需求。
為什么要單獨(dú)設(shè)計出一種新的共識算法?它相比于現(xiàn)有的主流的 BFT 共識算法(PBFT、Tendermint、Hotstuff……)有什么不同?下面,就讓我們和 Muta 團(tuán)隊的周昀一起來了解一下 Overlord 的設(shè)計思路與設(shè)計特點(diǎn)。
當(dāng)前我們正處在一個信息大爆炸的時代,在無時不刻不被過量信息包圍的處境下,想要客觀準(zhǔn)確地探究未知事物的本質(zhì),變得異常艱難。然而我們始終堅信,卓越的產(chǎn)品源于開創(chuàng)性思維,亦步亦趨必然逃不出自己鑄就的天花板,因此我們決定屏蔽一切現(xiàn)有成熟的方案套路,從最原始的需求出發(fā),一磚一瓦地實現(xiàn)我們的愿景。
確定共識算法的目標(biāo)
最初在為 Huobi Chain 設(shè)計共識算法的時候,我們并沒有立馬著手于技術(shù)選型,而是先直面靈魂三問:Huobi Chain 的服務(wù)對象是誰?需要解決什么問題?能夠創(chuàng)造什么社會價值?在此期間,我們積極汲取了金融、管理等領(lǐng)域?qū)I(yè)人士的建議,密切跟蹤市場的真實需求,仔細(xì)聆聽社區(qū)的反饋,經(jīng)過與數(shù)個團(tuán)隊無數(shù)次縝密的意見交流之后,終于在 2019 年 6 月,取得了階段性的結(jié)論。
鑒于當(dāng)前金融市場和區(qū)塊鏈技術(shù)應(yīng)用相對割裂的現(xiàn)狀,Huobi Chain 的定位是:基于區(qū)塊鏈的,高效的,全球性的金融市場基礎(chǔ)設(shè)施。「高效」對應(yīng)高速迸發(fā)的鏈上交易;「全球化」對應(yīng)底層鏈友好的兼容性和高度可擴(kuò)展性;「基礎(chǔ)設(shè)施」則意味著鏈上應(yīng)用開發(fā)的標(biāo)準(zhǔn)化、精簡化,并能夠在未來形成豐富的開發(fā)者生態(tài)。只是這樣簡簡單單的一句話,卻向底層鏈提出了明確的硬性指標(biāo)。
共識是一條鏈的心臟,心臟必須高效健壯,鏈上應(yīng)用才能蓬勃有力。為了實現(xiàn)火幣公鏈的目標(biāo),我們需要一個能夠支持上百個共識節(jié)點(diǎn)、滿足數(shù)千筆每秒的交易處理能力,且交易延遲不超過數(shù)秒的 BFT 共識算法。
現(xiàn)行主流共識算法調(diào)研
我們調(diào)研了市場上所有主流的 BFT 共識算法:PBFT、Tendermint、Hotstuff……遺憾的是,這些共識算法均無法滿足我們的需求。
PBFT 作為最早出現(xiàn)的實用性拜占庭容錯共識算法,最大的問題是 ViewChange 時,導(dǎo)致 O(n^3) 的過高消息復(fù)雜度。
Tendermint 是 2017 年提出的共識算法,其核心采用了「鎖定—解鎖」機(jī)制,簡化了 Leader 切換過程。但是該算法卻損失了響應(yīng)性(Responsiveness),這意味著即使處于極佳的網(wǎng)絡(luò)條件下,仍需面臨固定的出塊時間。另一方面該算法 Viewchange 雖然有所精簡,復(fù)雜度降低至 O(n^2),但依舊無法滿足我們對較高共識效率的需求。
Hotstuff 于 2019 年通過 Libra 走進(jìn)大眾視野,在消息復(fù)雜度和提升響應(yīng)性上做了很多改進(jìn),但是交易的確認(rèn)至少需要 3 個區(qū)塊,這一限制在特定環(huán)境下,將無法滿足某些特定業(yè)務(wù)和場景的需求。
面臨困局,我們決定迎難而上,打造一套全新的共識算法,于是就有了 Overlord。該算法已經(jīng)完成了第一階段的設(shè)計研發(fā),初步的工程實現(xiàn)已在 GitHub 上開源,目前實測已經(jīng)能夠支持上百個共識節(jié)點(diǎn),滿足數(shù)千筆每秒的交易處理能力,而且交易延遲不超過數(shù)秒,交易上鏈即不可回滾。那么 Overlord 是如何能夠滿足這些需求的?
Overlord 的創(chuàng)新之處
引入聚合簽名機(jī)制,降低消息復(fù)雜度
首先,Overlord 引入了聚合簽名機(jī)制,每一輪的共識投票消息,由各個共識節(jié)點(diǎn)發(fā)送給 Leader,并由 Leader 簽名后將零散的消息聚合為一,再廣播給其他節(jié)點(diǎn)。這一設(shè)定將消息復(fù)雜度從 O(n^2) 降低至 O(n),進(jìn)而可以支持?jǐn)?shù)百個共識節(jié)點(diǎn)。
采用「超時+剎車」機(jī)制,解決 Leader 作惡,加速共識進(jìn)程,降低工程實現(xiàn)難度
與此同時,Overlord 采用了「超時+剎車」的機(jī)制來解決 Leader 作惡的問題,顯著加速了共識進(jìn)程,同時降低了工程實現(xiàn)難度。同時,由于消息的數(shù)量大幅下降,消息共識(投票等)所占帶寬的比例也有了一定的下降,這進(jìn)一步提升了共識效率。
并行處理出塊和投票,出塊更快、交易處理能力更高
另一方面,Overlord 實現(xiàn)了并行處理出塊和投票。這意味著區(qū)塊校驗(包括共識交易的同步)與第一輪投票過程可以并行進(jìn)行,這相比與其他共識算法出塊更快、交易處理能力更高。
解耦狀態(tài)定序與交易共識,使區(qū)塊的共識過程和執(zhí)行過程可以并行
Overlord 最重要的一個創(chuàng)新點(diǎn),也是這個算法最核心的思想,在于解耦了狀態(tài)定序與交易共識,從而使得區(qū)塊的共識過程和執(zhí)行過程可以并行。相比于 Tendermint 等待執(zhí)行結(jié)果后再進(jìn)行下一次共識,Overlord 的共識效率有了跨越式提升,因為帶寬的空閑等待明顯降低。而且在這種設(shè)定下,區(qū)塊上鏈即確認(rèn),交易不可回滾。這將極大的適用于有著大量交易或者復(fù)雜合約的金融業(yè)務(wù)場景。
我們十分堅信,Overlord 將成為下一代通用的共識解決方案。
有趣的命名故事
說起 Overlord 的命名,它其實和我們的 Layer 2 解決方案 Muta 一脈相承(暴雪粉應(yīng)該不需要小編多說什么了)。
在這款游戲中, Overlord 是為蟲族提供人口的基本單位,可以控制若干蟲群,這和我們理解的共識的本質(zhì)很像。共識也是一條鏈的核心,控制著各個節(jié)點(diǎn)的運(yùn)轉(zhuǎn),如果把節(jié)點(diǎn)想象成蟲群的話,Overlord 則是蟲群的大腦。相信在 Overlord 的帶領(lǐng)下,我們也能建立起龐大的分布式區(qū)塊鏈系統(tǒng)。