共識算法定義了一系列動(dòng)作,通過這些動(dòng)作,獨(dú)立代理在分布式系統(tǒng)的各個(gè)部分上(至少在大多數(shù)代理中)獲得了相同的觀點(diǎn)。例如,這可以由某個(gè)客戶端(不參與協(xié)商共識)確定,該客戶端可以從任何(或至少大多數(shù))協(xié)商共識參與者那里獲得關(guān)于系統(tǒng)協(xié)商共識狀態(tài)查詢的相同結(jié)果。
通常,共識算法用于解決以下問題:
· 領(lǐng)袖選舉(在所有共識參與者中選擇代理人,有權(quán)更新系統(tǒng)的全球狀態(tài))
· 原子交換(不能根據(jù)事件的內(nèi)部屬性確定其順序事件的確切順序)
· 狀態(tài)復(fù)制(維護(hù)所有或大多數(shù)代理共享的全局狀態(tài))
這是共識算法的三個(gè)主要用例是高度相關(guān)的。例如,狀態(tài)復(fù)制可以通過狀態(tài)更改的適當(dāng)順序(即原子廣播)來解決,而適當(dāng)?shù)念I(lǐng)導(dǎo)人選舉過程本身可能允許有序的原子廣播(但是,在沒有領(lǐng)導(dǎo)人選舉過程的情況下,有達(dá)成相同結(jié)果的共識)。
從歷史上看,共識算法起源于多處理器計(jì)算的研究;它們解決的是處理器可能出現(xiàn)故障(即變得無響應(yīng))時(shí)的全局狀態(tài)問題。在這些情況下通信是同步的,即受一些已知的時(shí)間上限。
后來,隨著電信和計(jì)算機(jī)網(wǎng)絡(luò)的發(fā)展,出現(xiàn)了另外兩個(gè)問題:未知的通信延遲和對手的存在。前者導(dǎo)致了部分新的研究同步和異步共識算法和創(chuàng)建算法可以容忍任意代理行為(拜占庭行為)——即所謂的拜占庭容錯(cuò)算法(或BFT共識)。
隨著互聯(lián)網(wǎng)的廣泛應(yīng)用,對手的問題變得更加嚴(yán)重。如果在多處理器環(huán)境或電信基礎(chǔ)設(shè)施中可以識別每個(gè)代理,那么在Internet的許多情況下就不能這樣做。因此,出現(xiàn)了一種新的公共(或無許可)共識,共識算法必須成為一種協(xié)議,其中嵌入了識別和排除拜占庭式代理的規(guī)則和程序——就像一些附帶機(jī)制降低了此類代理進(jìn)一步參與協(xié)議的經(jīng)濟(jì)能力一樣。這種制度以POW 和POS的名義引起了公眾的注意。我們將以經(jīng)濟(jì)激勵(lì)(BFT- ei)命名這些協(xié)議。在許多情況下,異步性和無許可性要求犧牲其他共識品質(zhì),比如決定論或適用于領(lǐng)導(dǎo)人選舉場景的能力。
在此基礎(chǔ)上,可以根據(jù)不同的準(zhǔn)則對共識算法進(jìn)行分類。
1. 共識的主題:原子廣播、領(lǐng)袖選舉、國家復(fù)制(或者,另一種選擇,基于領(lǐng)袖和無領(lǐng)袖算法)
2. 容錯(cuò)形式:無容錯(cuò)、非任意容錯(cuò)和拜占庭容錯(cuò)(BFT)
3. 可以達(dá)成共識的假設(shè)有:同步、參與方同步、異步
4. 公開和非公開參與的協(xié)議:許可vs不許可,或公開vs私人。
5. 內(nèi)部經(jīng)濟(jì)激勵(lì): BFT-EI
6. 協(xié)商共識的確定性品質(zhì), 即實(shí)現(xiàn)終結(jié)性的能力: 具有終結(jié)性和非確定性共識的共識算法。
這些類可以組合在一些自然的組中,比如開放的參與會(huì)導(dǎo)致不確定性的共識屬性(因?yàn)槲覀儾荒茉诮o定的時(shí)間點(diǎn)枚舉所有共識的參與者),也就是缺乏終結(jié)性,它將是無領(lǐng)導(dǎo)的。這種共識的一個(gè)典型例子是比特幣交易。
我們定義了以下典型的共識屬性組合:
· PoW:無權(quán)限同步非確定性無領(lǐng)導(dǎo)BFT-EI。
· POS: 基于BFT-EI的不允許部分同步確定性領(lǐng)導(dǎo)。
· BFT(狹義的): 允許的、確定性的BFT??梢杂胁煌耐叫约僭O(shè),可以是領(lǐng)導(dǎo)者,也可以是非領(lǐng)導(dǎo)者。
· DAG:無權(quán)限異步、非確定性領(lǐng)導(dǎo)、無BFT容忍度。
· 其他混合的類型。
許多現(xiàn)實(shí)世界中的共識算法應(yīng)用, 比如在現(xiàn)代實(shí)驗(yàn)區(qū)塊鏈中發(fā)現(xiàn)的應(yīng)用, 往往會(huì)利用一組不同的共識機(jī)制,用于領(lǐng)導(dǎo)人選舉的機(jī)制 (通常是基于 bft 協(xié)議的機(jī)制, 但有時(shí)甚至是 pow), 而其他的機(jī)制對于原子廣播 (pos) 和另一個(gè)實(shí)現(xiàn)確定性的是狀態(tài)復(fù)制-通常是 bft 類型的 “小工具” 的形式。
共識算法本身不需要特定的數(shù)據(jù)結(jié)構(gòu);它們都是關(guān)于代理行為和網(wǎng)絡(luò)通信的。然而,在比特幣(這是第一個(gè)基于公共共識的應(yīng)用)發(fā)明之后,似乎需要全球狀態(tài)的系統(tǒng)并利用數(shù)據(jù)結(jié)構(gòu)上的一些最佳實(shí)踐來驗(yàn)證,比如具有加密增強(qiáng)功能的日志類賬——所謂的區(qū)塊鏈或者更通用的有向無環(huán)圖(DAG),通常由我們上面分類的#4組共識使用。





