您好,登錄后才能下訂單哦!
本篇內(nèi)容介紹了“BBFT與FBFT/HotStuff的區(qū)別有哪些”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
近日比原鏈(BYTOM)技術(shù)團(tuán)隊發(fā)布了Bystack區(qū)塊鏈BaaS平臺,其中包括側(cè)鏈的共識算法BBFT(Bystack Byzantine Fault Tolerance)。筆者將在這篇文章中闡述比原鏈BBFT嘗試解決的問題以及分析BBFT與其他各家共識協(xié)議的主要差異。BBFT是一個PBFT的變形,它的原理與PBFT一脈相承。若想深刻理解BBFT的巧思,則必須進(jìn)入PBFT的脈絡(luò)推敲。早在區(qū)塊鏈藉由比特幣的大紅大紫之前,PBFT就作為共識協(xié)議存在于世界上了。由Castro和Liskov于1999年發(fā)明,它是一個具有20年歷史的經(jīng)典設(shè)計,它的發(fā)明是為了解決分布式系統(tǒng)中的一個經(jīng)典問題:拜占庭將軍問題。直到今日,PBFT仍蘊含許多值得反復(fù)推敲的巧思,不斷啟發(fā)后世發(fā)明出更好的協(xié)定。
PBFT是一個具有二輪投票的三階段協(xié)議,每個視域(View)都會有一個特定的節(jié)點作為領(lǐng)導(dǎo)節(jié)點(Primary/Leader),負(fù)責(zé)通知所有節(jié)點進(jìn)入投票流程。各節(jié)點則會經(jīng)歷Pre-prepare/Prepare/Commit這三個階段,并依據(jù)接收的訊息決定是否投票/進(jìn)入下一階段,每個節(jié)點投完票后將訊息發(fā)給所有其他的節(jié)點。若個節(jié)點在兩階段投票之后取得多數(shù)共識,則各節(jié)點可以更新本機(jī)的狀態(tài),結(jié)束這一回合。 視域變換(View-change)僅當(dāng)多數(shù)節(jié)點發(fā)起時執(zhí)行,當(dāng)目前的領(lǐng)導(dǎo)節(jié)點并未正常執(zhí)行任務(wù)時,這可以替換當(dāng)前的領(lǐng)導(dǎo)節(jié)點,保證協(xié)議正常運作。
PBFT與中本聰共識(區(qū)塊鏈)有相當(dāng)不同的特性:PBFT是一個許可制的、基于領(lǐng)導(dǎo)節(jié)點的、基于通訊的、安全性重于活躍性的共識協(xié)定。
許可制的(Permissioned):PBFT并非完全開放的,這是由于PBFT需要讓節(jié)點能夠驗證彼此的訊息以及精準(zhǔn)掌握節(jié)點的數(shù)量,區(qū)塊鏈則是屬于對任何人都開放的非許可制(Permissionless)。
基于領(lǐng)導(dǎo)節(jié)點的(Leader-based):也就是先決定領(lǐng)導(dǎo)節(jié)點(Leader),再由領(lǐng)導(dǎo)節(jié)點送出提議,這樣做最直接的好處就是不需要浪費自己的運算資源去爭取當(dāng)領(lǐng)導(dǎo)節(jié)點的機(jī)會,然而缺點就是只有在視域變換時才輪替領(lǐng)導(dǎo)節(jié)點,成為領(lǐng)導(dǎo)節(jié)點的機(jī)會并不公平,缺乏加入網(wǎng)絡(luò)的誘因;區(qū)塊鏈則是在多個提案中選擇工作證明難度最高的區(qū)塊作為共識,雖然這樣會造成運算資源的浪費,但是成為出塊者的機(jī)率大致是公平的,其與算力成正比。
基于通訊的(Communication-based):PBFT的安全性奠基于3階段投票,雖然不必如工作證明般消耗大量計算資源,但數(shù)量龐大的通訊也造成可擴(kuò)展性的瓶頸——就算是號稱最實用的PBFT,也無法擴(kuò)展到1000個以上個節(jié)點。不僅如此,PBFT使用消息驗證代碼(MAC),每投一輪票就需要每一個節(jié)點驗證一次訊息,大量的簽名/驗證也是另一個潛在的瓶頸。
安全性重于活躍性的(Safety over Liveness):PBFT不論在何種網(wǎng)絡(luò)假設(shè)下(同步/異步)都能確保安全性,幾乎不可能出現(xiàn)分岔,因此具有實時敲定(Instant Finality)的特性;相對地,區(qū)塊鏈則是活躍性重于安全性,其安全性有賴于同步的網(wǎng)絡(luò),而具有復(fù)數(shù)個共識(及分岔)的情況也相當(dāng)常見,需要經(jīng)過一定數(shù)量的區(qū)塊「確認(rèn)」才能保證其不再分岔的機(jī)率足夠大。
首先,PBFT中的每個節(jié)點都需于每一輪投票中做n-n的通訊,假設(shè)n為1000,則每一次的共識都需要至少100,000次的通訊,盡管PBFT已經(jīng)是BFT家族當(dāng)中最實用的協(xié)議,這么巨量的通訊需求仍是擴(kuò)展的瓶頸。
聚合簽名
為了提升效率,一個直覺的思路是:避免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í)行下一輪投票或者進(jìn)行狀態(tài)更新。因此,我們可以使用門坎簽章(Threshold Signature)來保證協(xié)調(diào)者的正當(dāng)行為,門坎簽章的可以保證:需集合超過門坎數(shù)量(t-of-n)的簽章才有效。也就是說,我們可以指定:唯有當(dāng)協(xié)調(diào)者集合 2f+1 個門坎簽章后,協(xié)調(diào)者才能帶著合法的簽名繼續(xù)推進(jìn)共識。Harmony FBFT便是一個使用聚合簽名以提升效率的BFT家族協(xié)議。
圖1:FBFT Signature Aggregation
管線設(shè)計
每個內(nèi)容都必須經(jīng)過二輪投票/三個階段才能達(dá)成共識,如果有m個內(nèi)容就需要執(zhí)行2m次投票。管線設(shè)計(Pipelining)可以減少投票的次數(shù),它的基本思路如下:讓每個節(jié)點在投第 i 輪的prepare階段時,同時也是對其前一個內(nèi)容 i-1 的commit階段投票。這樣做便可以節(jié)省對同一個內(nèi)容重復(fù)投票的冗余,大幅提升效率。這樣的思路首見于2018年發(fā)表的HotStuff協(xié)議。
圖2:HotStuff Pipelining
只讓部分節(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負(fù)責(zé)進(jìn)行投票;Gateway Node則不需參與投票,但必須負(fù)責(zé)聚合由Consensus Node送來的簽章;Leader Node負(fù)責(zé)與其他Leader Node交換訊息。BBFT的運作流程如下圖所示,BBFT的共識過程,便是訊息由樹根向樹葉傳播再回到樹根的過程。
圖3:BBFT: Minimal Spanning Tree
圖4:BBFT Process
在為PBFT帶入新技術(shù)以提升效率的同時,也必須確保協(xié)議本身的安全性與活躍性。接下來我們來看看,上述的協(xié)議是如何確保這兩者。
視域變換(View-change)
FBFT沿用了PBFT的視域變換,即在正常情況下并不更換領(lǐng)導(dǎo)節(jié)點,僅有當(dāng)超過2f+1個節(jié)點發(fā)起視域變換才會更迭領(lǐng)導(dǎo)節(jié)點。視域變換雖然本身是一個能夠替換作惡領(lǐng)導(dǎo)節(jié)點的機(jī)制,但它同時要求協(xié)議必須具有3個階段,才能保證協(xié)議的安全性(即不分岔)。
領(lǐng)導(dǎo)節(jié)點輪替(Rotating Leader)
HotStuff另一方面則引入了領(lǐng)導(dǎo)節(jié)點輪替的機(jī)制,在每個回合都更換領(lǐng)導(dǎo)節(jié)點,如此來回避視域變換高額的通訊成本。領(lǐng)導(dǎo)節(jié)點輪替也常見于許多BFT家族的協(xié)議,算是目前保障安全性機(jī)制的主流。
混合式(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與FBFT/HotStuff的區(qū)別有哪些”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。