加密貨幣交易所 加密貨幣交易所
Ctrl+D 加密貨幣交易所
ads
首頁 > DYDX > Info

一文讀懂Giskard共識協議_BFT:VIEW

Author:

Time:1900/1/1 0:00:00

PlatON的Giskard共識協議由概率性權益證明PPoS(PlatON proof of stake)和Giskard拜占庭容錯協議-Giskard BFT(Giskard Byzantine Fault Tolerance) 組成。PPoS使用質押、委托、隨機選取的形式選出參與共識的驗證節點,Giskard BFT使用類BFT算法實現區塊的生產和驗證。

本文我們將簡單介紹PPoS共識和BFT理論,并分析PBFT算法特性及PBFT存在的問題,其后重點分析Giskard BFT借鑒PBFT、Tendermint、Hotstuff等共識協議的演進之路。

區塊鏈技術本質脫離不開傳統分布式系統。分布式一致性算法是傳統分布式系統的一大難題,經過長期的研究和應用,誕生了如paxos、raft、zab等成熟安全的算法。

相比于傳統的分布式系統,公共區塊鏈中沒有中心化的假設,任何節點都可以加入并自由訪問所有的數據,因此公鏈中不可避免會存在惡意節點。所以,區塊鏈系統中的共識機制不僅需要支持CFT(Crash fault tolerance) 還需要支持BFT(Byzantine Fault Tolerance) 。BFT是一個已經被研究得比較透徹的理論,PBFT是其中最為著名的實現算法,目前廣泛應用于各大區塊鏈系統中。

PlatON的Giskard共識協議由概率性權益證明PPoS(PlatON proof of stake)和Giskard拜占庭容錯協議-Giskard BFT(Giskard Byzantine Fault Tolerance) 組成。PPoS使用質押、委托、隨機選取的形式選出參與共識的驗證節點,Giskard BFT使用類BFT算法實現區塊的生產和驗證。

PPOS——驗證節點選取

在介紹PPoS之前,我們先科普一下PoS,目前PoS共識方案可以分為四類:

PoS共識概述

Chain-Based

這是早期的一代PoS。根據持有token的數量偽隨機地選擇驗證人進行區塊生產。其中還有PoS+PoW方案,一般是PoW出塊,通過PoS選擇驗證人進行驗證,以太坊的Casper1.0也是一種混合PoS/PoW的方案,作為其從PoW轉換到PoS的中間方案。

Axie Infinity的OriginsS4上線,獎勵超11萬枚AXS:5月10日消息,鏈游 Axie Infinity 宣布 Origins S4 上線,總獎池達 111,764 AXS,該賽季持續 42 天,引入了一個新的機制,玩家可以使用能量碎片來保留他們的卡牌,此外還對競技場排名獎勵和進度進行了升級。[2023/5/10 14:54:26]

DPoS (Delegated Proof of Stake)

委托權益證明。每個token持有人可以把權利委托給部分代表,由代表參與區塊的生產和驗證。

VRF (Verifiable Random Function)

可驗證隨機函數用于驗證節點的隨機選取。目前,Dfinity、Cardano和Algorand等采用了這種方案。

BFT (Byzantine Fault Tolerance)

拜占庭容錯。選出驗證節點后通過運行BFT協議經過多輪投票確認區塊完成共識。目前Tendermint、Stellar、Ontology、Zilliqa、NEO等都是采用這類共識算法。

PlatON的共識方案PPoS,也就是我們常說的概率性權益證明,它本質是一種PoS共識方案,根據節點的權益繪制成二項分布累積分布曲線,并使用VRF隨機選取驗證節點。

PPoS解決的關鍵核心點在于驗證人的選取不僅與節點權益的大小有關,還兼具隨機性,也就是說選出的驗證節點不一定是權益最高的節點,權益較低的節點也有一定的選中概率。隨機性算法可以保證選取的結果不可預測、不可操控且公平可靠。PPoS本質上是PoS+VRF方案的結合。

簡單總結就是:PPoS提供了一種盡可能公平、隨機地從眾多參與節點中選取出若干驗證節點的方案。

BFT——區塊共識

驗證節點被選舉出來之后,運行共識協議進行區塊生產和驗證,整個過程需要節點之間相互協作,對區塊進行相互確認,得出一致結論,達成區塊共識。

上文中提到,區塊鏈中的共識算法不僅需要考慮Crash節點,還需要考慮Byzantine節點。什么是拜占庭節點?我們從一個故事說起。

拜占庭將軍問題

拜占庭羅馬帝國國土遼闊,為了達到防御目的,每塊封地都駐扎一支由將軍統領的軍隊,每個軍隊都分隔很遠,將軍與將軍之間只能靠信差傳遞消息。?

Avalanche將進行Cortina升級,將遷移X-Chain以運行Snowman++共識:3月24日消息,據官方博客,Avalanche宣布將于3月27日在Fuji測試網上發布 Avalanche Cortina升級的預發布代碼,Fuji測試網Cortina升級將于北京時間3月30日23:00激活。在Fuji測試網上的Cortina升級成功之前,將公布Avalanche主網激活時間,并發布官方Cortina AvalancheGo版本 (v1.10.0)。

最新版本的AvalancheGo將遷移X-Chain以運行Snowman++共識,這意味著整個網絡已經遷移到一個單一的共識引擎,這減少了可信計算基礎的規模并增加了現有研發工作的杠桿作用,這解除了Avalanche Warp Messaging (AWM)在X-Chain上的集成,并使交易所更容易支持X-Chain,其中將包含子網上使用的許多質押代幣。Cortina升級還引入了批處理授權獎勵并將C-Chain gas上限提高至1500 gas。[2023/3/24 13:23:46]

在戰爭的時候,拜占庭軍隊內所有將軍必須達成一致的共識,決定是否有贏的機會才去攻打敵人的陣營。但是,在軍隊內有可能存有叛徒和敵軍的間諜,左右將軍們的決定影響將軍們達成一致共識。在已知有將軍是叛徒的情況下,其余忠誠的將軍如何達成一致協議的問題,這就是拜占庭將軍問題。

拜占庭將軍問題所描述的是好的將軍不知道其他將軍是好的,還是壞的,但所有好的將軍的目的是:行動一致,共同進退。所以,他們需要在策略上達成一致。

看到這里,相信大家對拜占庭節點也有了初步的理解。簡單地說,在區塊鏈系統中存在以下兩類錯誤:

第一類錯誤是節點崩潰、網絡故障、丟包等,這種錯誤類型的節點是沒有惡意的,屬于非拜占庭錯誤。

第二類錯誤是節點可能是惡意的,不遵守協議規則。例如驗證者節點可以延遲或拒絕網絡中的消息、領導者可以提出無效塊或者節點可以向不同的對等體發送不同的消息。在最壞的情況下,惡意節點可能會相互協作。這些被統稱為拜占庭錯誤。

要讓這個問題有解,還需要先引入一個概念——分布式網絡模型,按照分布式系統理論,分布式系統的網絡模型分為三類:

同步網絡模型:節點所發出的消息,在一個確定的時間內,肯定會到達目標節點

Polygon和Immutable合作擴展 Web3 游戲生態系統:金色財經報道,Web3游戲公司Immutable和Polygon合作希望加速新興加密游戲領域的創新和采用。該聯盟將致力于為大型游戲工作室和獨立開發者提供更快、更簡單、更低風險的web3游戲。Polygon網絡還擁有一些大型web3游戲項目和發行商,如育碧、雅達利、Animoca Brands、Decentraland和Sandbox等等。Immutable最近幾個月在其平臺上推出了web3游戲和計劃,包括GameStop、DC漫畫、TikTok和漫威等品牌,以及迪士尼和星球大戰的IP。該平臺還在6月份啟動了一個5億美元的基金,以促進web3游戲的采用。[2023/3/21 13:15:57]

異步網絡模型:節點所發出的消息,不能確定一定會到達目標節點

部分同步網絡模型:節點發出的消息,雖然會有延遲,但是最終會到達目標節點

拜占庭將軍問題的解決,有一個十分重要的前提,那就是通信信道必須是可靠的。如果信道不能保證可靠,那么拜占庭問題無解。這也就是FLP不可能原理,即在異步網絡模型假定下,共識算法不可能同時滿足安全性(safety)和活躍性(liveness),也就是說,在一個不可靠的通信鏈路上試圖通過通信以達成一致是基本不可能或者十分困難的。至于什么是安全性和活躍性,我們后面再說。

其實,拜占庭將軍問題最早是由Leslie Lamport在1982年發表的論文《The Byzantine Generals Problem》提出的,他證明了在將軍總數大于3f,背叛者為f或者更少時,忠誠的將軍可以達成命令上的一致,即3f+1<=n。而Miguel Castro和Barbara Liskov在1999年發表的論文《Practical Byzantine Fault Tolerance》中首次提出PBFT算法,該算法容錯數量也滿足3f+1<=n。

BFT是一個已經被研究得比較透徹的理論,它告訴我們,基于部分同步網絡模型的假定,在不超過三分之一的故障節點和作惡節點情況下,非拜占庭節點之間可達到最終一致性。PBFT是其中最為著名的實現算法,意為實用拜占庭容錯算法。目前,區塊鏈的共識算法大多都是基于BFT的實現。Giskard BFT也是由PBFT演進而來。

PBFT算法在區塊鏈共識的應用

自2020年以來每日加密貨幣現貨交易量首次跌破100億美元:金色財經報道,根據The Block的數據,加密貨幣交易所的每日現貨市場交易量自2020年12月以來首次跌破100億美元。現貨交易量在12月25日下降至92億美元,然后在12月27日繼續下降至85億美元。

此前消息,上一次每日現貨交易量低于100億美元是在2020年12月17日,當時比特幣的價格就在一天內首次飆升至20,000美元以上。比特幣現在的交易價格約為16,800美元。NFT交易也與加密交易一起下降,數據顯示自4月以來NFT銷售額每月都在下降。[2022/12/28 22:11:48]

PBFT算法被廣泛應用于各類區塊鏈共識,它不僅解決了共識過程中可能發生的拜占庭節點問題,同時也使系統始終能夠保持兩個屬性:安全性(safety)和活躍性(liveness)。

安全性:在Crash節點和Byzantine節點兩類錯誤發生時,共識系統不能產生錯誤的結果。在區塊鏈中,指的是不會產生雙重花費和分叉。

活躍性:系統一直能持續產生提交,在區塊鏈中,指的是共識會持續進行,不會卡住。假如一個區塊鏈系統的共識不可持續,那么系統無法響應客戶端新的交易請求,也就是不滿足liveness。

我們直接以PBFT算法在區塊鏈共識的應用為例,總結算法的核心流程:

PBFT的共識過程

由上圖可知,PBFT是一個典型的三階段提交算法:

pre-prepare(預備階段):各節點負責接收區塊、執行區塊,產生區塊投票簽名,開始廣播簽名給所有共識節點

prepare(準備階段):各節點負責收集簽名,某節點收集滿2*f的簽名后,表明自身達到可以提交區塊的狀態,開始廣播Commit包

Commit(提交階段):各節點負責收集Commit包,某節點收集滿2*f+1的Commit包后,直接將本地緩存的最新區塊提交到數據庫

看到這里,也許你會有以下疑問:

為什么不同階段所需要的簽名個數不同

對于prepare和commit階段來說,考慮最壞的情況:我們假設收到f個是正常節點發過來的簽名,也有f個是惡意節點發過來的,那么,第2*f+1個簽名只可能是正常節點發過來的(因為我們限制了最多只有f個惡意節點)。由此可知,「大多數」正常的節點還是可以讓系統工作下去的。所以2*f+1這個參數和n>=3f+1的要求是邏輯自洽的。而在prepare階段,節點0發出消息即可認為確認消息,所以prepare階段只需收集2*f個簽名。

沃頓商學院教授:美聯儲若延續“鷹派”政策 美經濟勢必陷入嚴重衰退:12月17日消息,賓夕法尼亞大學沃頓商學院金融學教授Jeremy Siegel周五表示,盡管近期美國通貨膨脹顯示出緩解的跡象,但他仍對美聯儲的鷹派態度感到不滿,因為這將使美經濟在2023年出現大幅下滑。Siegel認為,美聯儲繼續暗示明年將只專注于通過提高、延長利率來抑制通脹,這意味著經濟明年肯定會陷入“嚴重的衰退”。[2022/12/17 21:50:52]

為什么只有兩階段消息不能達成一致性

只有pre-prepare和prepare兩個階段消息是無法達成一致的。舉例說明,假設沒有commit階段,節點1在prepare階段收集滿2*f的簽名后,達到Prepared狀態,然而這個Prepared僅是節點1的一個局部視角,不是全局一致,此時節點1不能保證其余節點都達到Prepared狀態,如果少于f個非拜占庭節點成為Prepared狀態,節點1又確認了該消息,那么系統就出現了不一致。

為什么三階段消息可以達成一致性

說到這里,其實就很好理解為什么三階段消息可以達成一致性,某節點收集滿2*f+1的Commit包意味著有f+1個非拜占庭節點達成了Prepared狀態,也就意味著「多數」節點已經認同了消息。

下面,我們再介紹PBFT的視圖和視圖切換流程。

PBFT共識算法使用視圖view記錄每個節點的共識狀態,相同視圖節點維護相同的Leader和Replicas節點列表。當Leader出現故障,為了保證協議活躍性(liveness),會發生視圖切換,若視圖切換成功(至少2*f+1個節點達到相同視圖),則根據新的視圖選出新leader 。

話不多說,直接上視圖切換流程圖:

PBFT的視圖切換流程

PBFT的視圖切換流程也分為三個階段:

view-change:各副本節點(Replica) 認為主節點(Primary)有問題時,會向其它節點發送view-change消息

view-change-ack:各節點接收到2*f+1 個view-change消息后,選舉當前存活的節點編號最小的節點成為新的主節點,并向該節點發送view-change-ack消息

new-view:當新的主節點收到2*f+1個其它節點的view-change-ack消息后,向其它節點廣播new-view消息。注意:從節點不會發起new-view事件

通過對共識流程的分析,相信大家對view切換流程都能夠很好地理解,這里我們不再贅述。接下來我們著重分析PBFT算法存在的問題,以及Giskard BFT改進優化。

通過對PBFT共識流程三階段的詳細分析,可以看到消息傳輸的開銷很大。系統在嘗試達成狀態共識時,涉及到n個節點都需要廣播消息到n-1個其它節點,因此算法通信復雜度達到 O(n2),在節點數目為1000的情況下所需要交換的通信量為1,000,000。有實驗得出當節點數量超過20時,算法的性能會急劇下降。

另外,在PBFT選舉Leader的過程中,有可能經過多輪交互,選舉出的Leader一直長時間運行,直到Leader節點出現故障才發起視圖切換流程。但在區塊鏈系統中,視圖view表示一個共識單元,共識過程由一個接一個的view組成,每個view中由一個確定的提議人來主導共識協議,產生區塊,其余驗證人對區塊進行投票簽名達成共識。因為節點產生區塊與利益相關(如記賬權,區塊獎勵等),因此需要頻繁地更換出塊節點,也就是需要頻繁地切換視圖view,這勢必會帶來巨大的網絡資源消耗。

Giskard BFT共識優化

所以我們基于BFT協議,結合區塊鏈的特性,主要圍繞著以下幾點進行協議優化,設計了Giskard BFT 。

所有的BFT協議都通過view-change來更換主節點。PBFT,SBFT等協議具有獨立的view-change流程,當主節點出問題后才觸發。而在Tendermint、HotStuff等協議中沒有顯式的view-change流程、view-change流程合入正常流程中,因此提高了view-change的效率,將view-change的通信復雜度降低。

Giskard BFT也是基于view的的共識協議,為降低通訊復雜度,Giskard BFT也沒有顯式的view change流程,而是把這個流程和正常出塊流程結合。Giskard BFT約定每個提議節點在本視圖內連續產生10個區塊,并且每個區塊都達成QC(Quorum Certificate,表示節點收到針對該區塊的2*f+1個簽名)狀態后,則自動切換到下一個view ,不需要單獨的view-change投票流程。

下圖是顯式的ViewChange流程,可以看到它并沒有類似PBFT中的view-change-ack和new-view階段,這兩個流程被后續的prepareQC(n)進行代替。

Giskard BFT viewchange投票流程

總結一下,view-change流程優化的兩個重點:

不需要顯式的view change流程,減少投票動作。

沒有view-change-ack和new-view階段,而是結合區塊鏈特性,由后續的prepareQC(n)對新的view進行「間接」確認。

應用BLS聚合簽名

為了進一步減少消息通訊量,我們采用了聚合簽名技術。業界主流的聚合簽名方案是BLS聚合簽名。BLS聚合簽名是在BLS簽名方案基礎上的擴展方案。

在Giskard BFT中,我們把針對block和view-change消息的多個節點簽名聚合成一個簽名,可以簡單地理解為:把多個節點的一段很長的簽名「壓縮」為一個簽名。這種做法極大地降低了通訊量,對提高協議的通信效率也起到了很大的作用。

區塊生產和驗證并行化

此處優化是Giskard BFT的獨到創新之處。這里的并行指的是:區塊生產和區塊驗證的并行化。

上文提到,Giskard BFT是基于視圖view的共識協議,每個提議節點在本視圖內連續產生10個區塊,并行流程如下:

提議節點在一個view內可以連續提議多個區塊,下一個區塊的產生不用等上一個區塊達到QC狀態。

驗證人在接收上一個區塊投票的同時,可以并行執行下個區塊的交易。

這種做法極大提高出塊速度,也提高了系統的共識性能。

引進pipeline方式對區塊進行確認

在傳統BFT主導的區塊鏈系統中,每個區塊的共識通常都需要經歷明確的Pre-Commit和Commit階段才最終確認:

Pre-Commit:當節點收到2*f+1個 Prepare投票時會廣播Pre-Commit,Pre-Commit可以看作對Prepare階段的確認。

Commit:當收到2*f+1個 Pre-Commit投票時,表明所有節點對指定消息達成一致,提交到本地磁盤。

Giskard BFT中的每個區塊只有Prepare投票,沒有明確的Pre-Commit和Commit階段,那么區塊如何達到最終的確認呢?Giskard BFT可看作Pipeline版本的BFT ,每個prepareQC都是對前面區塊更高階段的確認。

Giskard BFT 的區塊確認流程

如圖所示prepareQC(2)作為Block(1)的Pre-Commit階段prepareQC(3)作為Block(1)的Commit階段,Block(2)的Pre-Commit階段。

簡單來說,就是「省略」了PBFT的Commit階段,這里讀者可能有疑慮:前文不是明確給出結論,必須通過三階段消息才能達成一致性?其實Giskard BFT不是真的沒有Commit階段,而是結合區塊鏈特性,將下一個區塊的QC狀態作為上一個區塊的Commit間接確認。

Giskard BFT結合區塊鏈的鏈式結構,引進pipeline方式對區塊進行確認,使得協議變得簡潔而優美,能夠很好地進行流程化作業,提高了協議的性能,另外也對協議的可擴展性留足了設計空間。

結語

目前,應用了Giskard共識協議的PlatON測試網、主網和Alaya網絡都已經長時間穩定、高效運行,它的安全性(safety)和活躍性(liveness)得到了充分的驗證,同時Giskard共識對解決系統過于中心化,降低網絡通信復雜度、消息復雜度,提升共識效率以及整個區塊鏈的交易處理性能所起到的作用毋庸置疑。

在后期的協議版本中,我們將繼續深入優化:驗證人的選取不僅采用VRF,還計劃結合可驗證秘密分享PVSS、BLS等密碼算法進一步增加隨機性;引入分組共識再次提升算法的可擴展性,以高效支持更多的驗證節點加入,增加網絡的安全性和容錯性。

Tags:BFTVIEVIEWPREbft幣價格BscviewLakeViewMetaPressOne

DYDX
比特幣突然跳水下破34000美元 疑與美國司法部和特朗普有關_比特幣:加密貨幣

受MicroStrategy將發行4億美元債券以購買更多比特幣的消息影響,比特幣周一(6月7日)日內曾逆轉周末頹勢小幅走高,然而北京時間周二(6月8日)凌晨05:15左右,比特幣突然跳水.

1900/1/1 0:00:00
項目周刊 | Filecoin網絡出現“鈔攻擊” 眾多節點掉算力_以太坊:NFT

金色周刊是金色財經推出的一檔每周區塊鏈行業總結欄目,內容涵蓋一周重點新聞、行情與合約數據、礦業信息、項目動態、技術進展等行業動態。本文是項目周刊,帶您一覽本周主流項目以及明星項目的進展.

1900/1/1 0:00:00
姚前:央行數字貨幣發展的主要目的是提高法定貨幣地位_數字貨幣:數字人

今年來,隨著數字人民幣試點范圍的擴大,越來越多的國人體驗到了數字人民幣測試版本;在各大金融論壇中,數字人民幣也是不可忽視的熱點話題.

1900/1/1 0:00:00
數字人民幣接入支付寶 “碰一碰” 與“掃一掃”同場競技_數字人:LOC

數字人民幣會是第三方支付平臺重塑格局的機會嗎?全文3892字,閱讀約需8分鐘進入2021年,數字人民幣試點與推廣提速,接入六大國有行和網商銀行,支付寶借助網商銀行打通數字人民幣支付.

1900/1/1 0:00:00
“四問比特幣”之三:“幣圈”的亂象知多少?_區塊鏈:加密貨幣

編者按:5月,“幣圈”吸引無數關注。5月18日,中國互聯網金融協會等三大協會發布公告指出,開展法定貨幣與虛擬貨幣兌換及虛擬貨幣之間的兌換業務,違反有關法律法規并涉嫌犯罪.

1900/1/1 0:00:00
新華社為何緊盯“幣圈”那些事?_比特幣:虛擬幣

10天內連發6篇調查報道,從挖礦到交易再到融資,涉及虛擬貨幣產業鏈上的多個重要環節……新華社這組調查報道篇篇切中“幣圈”亂象的要害,不僅在“幣圈”掀起一股狂風.

1900/1/1 0:00:00
ads