您的位置:首頁 > 區(qū)塊鏈 >

比原鏈發(fā)布BBFT 包括由PBFT變形的三階段協(xié)議

2019-07-19 14:17:11 來源: 區(qū)塊網(wǎng)

前言近日比原鏈(BYTOM)技術(shù)團隊發(fā)布了Bystack區(qū)塊鏈BaaS平臺,其中包括側(cè)鏈的共識算法BBFT(Bystack Byzantine Fault Tolerance)。筆者將在

前言

近日比原鏈(BYTOM)技術(shù)團隊發(fā)布了Bystack區(qū)塊鏈BaaS平臺,其中包括側(cè)鏈的共識算法BBFT(Bystack Byzantine Fault Tolerance)。筆者將在這篇文章中闡述比原鏈BBFT嘗試解決的問題以及分析BBFT與其他各家共識協(xié)議的主要差異。

BBFT是一個PBFT的變形,它的原理與PBFT一脈相承。若想深刻理解BBFT的巧思,則必須進入PBFT的脈絡(luò)推敲。早在區(qū)塊鏈藉由比特幣的大紅大紫之前,PBFT就作為共識協(xié)議存在于世界上了。由Castro和Liskov于1999年發(fā)明,它是一個具有20年歷史的經(jīng)典設(shè)計,它的發(fā)明是為了解決分布式系統(tǒng)中的一個經(jīng)典問題:拜占庭將軍問題。直到今日,PBFT仍蘊含許多值得反復(fù)推敲的巧思,不斷啟發(fā)后世發(fā)明出更好的協(xié)定。

PBFT基本的運作流程

PBFT是一個具有二輪投票的三階段協(xié)議,每個視域(View)都會有一個特定的節(jié)點作為領(lǐng)導(dǎo)節(jié)點(Primary/Leader),負責通知所有節(jié)點進入投票流程。各節(jié)點則會經(jīng)歷Pre-prepare/Prepare/Commit這三個階段,并依據(jù)接收的訊息決定是否投票/進入下一階段,每個節(jié)點投完票后將訊息發(fā)給所有其他的節(jié)點。

若個節(jié)點在兩階段投票之后取得多數(shù)共識,則各節(jié)點可以更新本機的狀態(tài),結(jié)束這一回合。視域變換(View-change)僅當多數(shù)節(jié)點發(fā)起時執(zhí)行,當目前的領(lǐng)導(dǎo)節(jié)點并未正常執(zhí)行任務(wù)時,這可以替換當前的領(lǐng)導(dǎo)節(jié)點,保證協(xié)議正常運作。

PBFT的特性

PBFT與中本聰共識(區(qū)塊鏈)有相當不同的特性:PBFT是一個許可制的、基于領(lǐng)導(dǎo)節(jié)點的、基于通訊的、安全性重于活躍性的共識協(xié)定。

許可制的(Permissioned):PBFT并非完全開放的,這是由于PBFT需要讓節(jié)點能夠驗證彼此的訊息以及精準掌握節(jié)點的數(shù)量,區(qū)塊鏈則是屬于對任何人都開放的非許可制(Permissionless)。

基于領(lǐng)導(dǎo)節(jié)點的(Leader-based):也就是先決定領(lǐng)導(dǎo)節(jié)點(Leader),再由領(lǐng)導(dǎo)節(jié)點送出提議,這樣做最直接的好處就是不需要浪費自己的運算資源去爭取當領(lǐng)導(dǎo)節(jié)點的機會,然而缺點就是只有在視域變換時才輪替領(lǐng)導(dǎo)節(jié)點,成為領(lǐng)導(dǎo)節(jié)點的機會并不公平,缺乏加入網(wǎng)絡(luò)的誘因;區(qū)塊鏈則是在多個提案中選擇工作證明難度最高的區(qū)塊作為共識,雖然這樣會造成運算資源的浪費,但是成為出塊者的機率大致是公平的,其與算力成正比。

基于通訊的(Communication-based):PBFT的安全性奠基于3階段投票,雖然不必如工作證明般消耗大量計算資源,但數(shù)量龐大的通訊也造成可擴展性的瓶頸——就算是號稱最實用的PBFT,也無法擴展到1000個以上個節(jié)點。不僅如此,PBFT使用消息驗證代碼(MAC),每投一輪票就需要每一個節(jié)點驗證一次訊息,大量的簽名/驗證也是另一個潛在的瓶頸。

安全性重于活躍性的(Safety over Liveness):PBFT不論在何種網(wǎng)絡(luò)假設(shè)下(同步/異步)都能確保安全性,幾乎不可能出現(xiàn)分岔,因此具有實時敲定(Instant Finality)的特性;相對地,區(qū)塊鏈則是活躍性重于安全性,其安全性有賴于同步的網(wǎng)絡(luò),而具有復(fù)數(shù)個共識(及分岔)的情況也相當常見,需要經(jīng)過一定數(shù)量的區(qū)塊「確認」才能保證其不再分岔的機率足夠大。

PBFT的問題

首先,PBFT中的每個節(jié)點都需于每一輪投票中做n-n的通訊,假設(shè)n為1000,則每一次的共識都需要至少100,000次的通訊,盡管PBFT已經(jīng)是BFT家族當中最實用的協(xié)議,這么巨量的通訊需求仍是擴展的瓶頸。

如何提升效率?

· 聚合簽名

為了提升效率,一個直覺的思路是:避免n-n的通訊。我們可以指定網(wǎng)絡(luò)中的某節(jié)點作為協(xié)調(diào)者來發(fā)送/接收每個節(jié)點的投票,這樣每個節(jié)點都只需要向協(xié)調(diào)者發(fā)送訊息即可,從而避免了n-n的通訊。然而,在這樣的情境下,協(xié)調(diào)者有作惡的可能,因為協(xié)調(diào)者可以在未確實接收到指定數(shù)量的訊息前便執(zhí)行下一輪投票或者進行狀態(tài)更新。

因此,我們可以使用門坎簽章(Threshold Signature)來保證協(xié)調(diào)者的正當行為,門坎簽章的可以保證:需集合超過門坎數(shù)量(t-of-n)的簽章才有效。也就是說,我們可以指定:唯有當協(xié)調(diào)者集合 2f+1 個門坎簽章后,協(xié)調(diào)者才能帶著合法的簽名繼續(xù)推進共識。Harmony FBFT便是一個使用聚合簽名以提升效率的BFT家族協(xié)議。

· 管線設(shè)計

每個內(nèi)容都必須經(jīng)過二輪投票/三個階段才能達成共識,如果有m個內(nèi)容就需要執(zhí)行2m次投票。管線設(shè)計(Pipelining)可以減少投票的次數(shù),它的基本思路如下:讓每個節(jié)點在投第 i 輪的prepare階段時,同時也是對其前一個內(nèi)容 i-1 的commit階段投票。這樣做便可以節(jié)省對同一個內(nèi)容重復(fù)投票的冗余,大幅提升效率。這樣的思路首見于2018年發(fā)表的HotStuff協(xié)議。

· 只讓部分節(jié)點參與共識:最小生成樹

另外一種提高效率的方法,就是避免使所有的節(jié)點參與共識,這也正是比原鏈BBFT采取的作法。在BBFT中,節(jié)點分為三種:Consensus Node/Gateway Node/Leader Node,這些節(jié)點形成樹的結(jié)構(gòu),樹為網(wǎng)絡(luò)中節(jié)點的最小生成樹(Minimal Spanning Tree),可能由分布式算法得出,或是由外部服務(wù)提供。

樹葉的節(jié)點即為Consensus Node;樹根為Leader Node;其他部分為Gateway Node。每種節(jié)點都有分別的任務(wù):Consensus Node負責進行投票;Gateway Node則不需參與投票,但必須負責聚合由Consensus Node送來的簽章;Leader Node負責與其他Leader Node交換訊息。BBFT的運作流程如下圖所示,BBFT的共識過程,便是訊息由樹根向樹葉傳播再回到樹根的過程。

如何確保正確性(Safety and Liveness)?

在為PBFT帶入新技術(shù)以提升效率的同時,也必須確保協(xié)議本身的安全性與活躍性。接下來我們來看看,上述的協(xié)議是如何確保這兩者。

· 視域變換(View-change)

FBFT沿用了PBFT的視域變換,即在正常情況下并不更換領(lǐng)導(dǎo)節(jié)點,僅有當超過2f+1個節(jié)點發(fā)起視域變換才會更迭領(lǐng)導(dǎo)節(jié)點。視域變換雖然本身是一個能夠替換作惡領(lǐng)導(dǎo)節(jié)點的機制,但它同時要求協(xié)議必須具有3個階段,才能保證協(xié)議的安全性(即不分岔)。

· 領(lǐng)導(dǎo)節(jié)點輪替(Rotating Leader)

HotStuff另一方面則引入了領(lǐng)導(dǎo)節(jié)點輪替的機制,在每個回合都更換領(lǐng)導(dǎo)節(jié)點,如此來回避視域變換高額的通訊成本。領(lǐng)導(dǎo)節(jié)點輪替也常見于許多BFT家族的協(xié)議,算是目前保障安全性機制的主流。

· 混合式(Hybrid)

比原鏈BBFT則取各家所長,同時應(yīng)用了視域變換與領(lǐng)導(dǎo)節(jié)點輪替,等于是上了雙重保險。

不過值得注意的是,目前的BBFT技術(shù)白皮書僅有一輪投票的模型,并未提出兩輪投票/三階段共識的模型。另外,領(lǐng)導(dǎo)節(jié)點輪替的順序也將基于各節(jié)點的權(quán)益(Stake),若節(jié)點出現(xiàn)違反協(xié)議的行為則該節(jié)點會遭受懲罰。

BBFT的挑戰(zhàn)

綜合以上的分析與比較,BBFT目前有幾個顯著的挑戰(zhàn)。首先,是最小生成樹的產(chǎn)生方式,如何同時兼顧去中心化與效率?其次是BBFT僅采取單輪投票作為共識,在引入視域變換的情況之下,可能會發(fā)生分岔,這樣的網(wǎng)絡(luò)也會遭受日蝕攻擊的威脅。最后,引入門坎簽章的前提下,勢必需要引入分布式私鑰生產(chǎn)協(xié)議(Distributed Key Generation)以共同生成私鑰,這部分于技術(shù)白皮書中尚未提及,卻是可能造成瓶頸的潛在因子。

結(jié)語

本篇文章簡介了PBFT的特性及其效能問題,并比較了FBFT/HotStuff/BBFT等協(xié)議針對效能問題的解決思路,最后歸納出比原鏈BBFT的未來挑戰(zhàn),希望能幫助讀者更理解BBFT的精髓。(Juin Chiu)

關(guān)鍵詞: 比原鏈 BBFT PBFT

精選 導(dǎo)讀

募資55億港元萬物云啟動招股 預(yù)計9月29日登陸港交所主板

萬科9月19日早間公告,萬物云當日啟動招股,預(yù)計發(fā)行價介乎每股47 1港元至52 7港元,預(yù)計9月29日登陸港交所主板。按發(fā)行1 167億股計算,萬

發(fā)布時間: 2022-09-20 10:39
管理   2022-09-20

公募基金二季度持股情況曝光 隱形重倉股多為高端制造業(yè)

隨著半年報披露收官,公募基金二季度持股情況曝光。截至今年二季度末,公募基金全市場基金總數(shù)為9794只,資產(chǎn)凈值為269454 75億元,同比上

發(fā)布時間: 2022-09-02 10:45
資訊   2022-09-02

又有上市公司宣布變賣房產(chǎn) 上市公司粉飾財報動作不斷

再有上市公司宣布變賣房產(chǎn)。四川長虹25日稱,擬以1 66億元的轉(zhuǎn)讓底價掛牌出售31套房產(chǎn)。今年以來,A股公司出售房產(chǎn)不斷。根據(jù)記者不完全統(tǒng)

發(fā)布時間: 2022-08-26 09:44
資訊   2022-08-26

16天12連板大港股份回復(fù)深交所關(guān)注函 股份繼續(xù)沖高

回復(fù)交易所關(guān)注函后,大港股份繼續(xù)沖高。8月11日大港股份高開,隨后震蕩走高,接近收盤時觸及漲停,報20 2元 股。值得一提的是,在7月21日

發(fā)布時間: 2022-08-12 09:56
資訊   2022-08-12

萬家基金再添第二大股東 中泰證券擬受讓11%基金股權(quán)

7月13日,中泰證券發(fā)布公告,擬受讓齊河眾鑫投資有限公司(以下簡稱齊河眾鑫)所持有的萬家基金11%的股權(quán),交易雙方共同確定本次交易的標的資

發(fā)布時間: 2022-07-14 09:39
管理   2022-07-14

央行連續(xù)7日每天30億元逆回購 對債市影響如何?

央行12日再次開展了30億元逆回購操作,中標利率2 10%。這已是央行連續(xù)7日每天僅進行30億元的逆回購縮量投放,創(chuàng)下去年1月以來的最低操作規(guī)

發(fā)布時間: 2022-07-13 09:38
資訊   2022-07-13

美元指數(shù)創(chuàng)近20年新高 黃金期貨創(chuàng)出逾9個月新低

由于對美聯(lián)儲激進加息的擔憂,美元指數(shù)11日大漲近1%創(chuàng)出近20年新高。受此影響,歐美股市、大宗商品均走弱,而黃金期貨創(chuàng)出逾9個月新低。美

發(fā)布時間: 2022-07-13 09:36
資訊   2022-07-13

美股三大股指全線下跌 納斯達克跌幅創(chuàng)下記錄以來最大跌幅

今年上半年,美股持續(xù)回落。數(shù)據(jù)顯示,道瓊斯指數(shù)上半年下跌15 3%,納斯達克綜合指數(shù)下跌29 5%,標普500指數(shù)下跌20 6%。其中,納斯達克連續(xù)

發(fā)布時間: 2022-07-04 09:51
推薦   2022-07-04

融資客熱情回升 兩市融資余額月內(nèi)增加超344億元

近期A股走強,滬指6月以來上漲4%,融資客熱情明顯回升。數(shù)據(jù)顯示,截至6月16日,兩市融資余額1 479萬億元,月內(nèi)增加344 67億元,最近一個半

發(fā)布時間: 2022-06-20 09:41
資訊   2022-06-20

4個交易日凈買入超百億元 北向資金持續(xù)流入A股市場

北向資金凈流入態(tài)勢延續(xù)。繼6月15日凈買入133 59億元后,北向資金6月16日凈買入44 52億元。自5月27日至今,除6月13日以外,北向資金累計凈

發(fā)布時間: 2022-06-17 09:37
推薦   2022-06-17