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