以太幣交易所 以太幣交易所
Ctrl+D 以太幣交易所
ads

科普 | 共識專欄之HotStuff共識_PRE

Author:

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

——?前言——

我們已經了解到分布式系統一般通過狀態復制機原理來實現一致性。其核心思想是系統中所有副本運行著相同的狀態機,只要所有副本都以相同的初識狀態開始,并基于相同的初識狀態執行一組相同順序的操作,那么所有的狀態最終會收斂一致,即整個系統對外表現出一致性。而確定這一組相同順序的操作需要系統達成共識,進一步說即所有誠實節點對執行順序達成共識,這便是著名的拜占庭將軍問題。

拜占庭類共識算法的理論安全保證,即n>3f,n為總的節點數量,f為惡意節點數量。一個拜占庭共識算法需要保證兩個性質:

安全性:所有誠實節點都認為某一時刻系統狀態為s活性:所有誠實節點最終能確定s為系統狀態其中s是一個抽象的概念,可以理解為系統內存在一個變量S,這個變量S的取值為系統狀態,系統內節點接收一系列關于S的操作指令,某時刻就S的取值進行共識,所有誠實節點確定變量S=s則滿足安全性,所有誠實節點對變量S的取值必須做出決定且終止則滿足活性。

以往,在分布式系統的研究中,拜占庭類共識往往都伴隨著較高的通信復雜度,對網絡造成的消耗極大,系統規模不易擴大。如經典的PBFT算法,其達成共識需要經過三個階段,PRE-PREPARE階段主節點將請求消息發送給其他節點,其他節點對該消息驗證過后,各自發送prepare消息給其他節點,這個階段產生了n^2條消息。為了保證跨視圖上的一致性,節點在收到至少quorum的prepare消息后再發送commit消息給其他節點。當節點最終收到至少quorum的commit消息時,再最終對該請求進行提交。而網絡異常節點超時觸發視圖切換時,則需要o(n^3)的通信復雜度

理解PBFT中每個階段的工作是HotStuff的基礎,PBFT中每個階段都目標都是為保證安全性和活性。

假設系統某時刻收到指令S'=S+1,主節點將這條指令S'=S+1發送給非主節點,因為是拜占庭問題,誠實節點不確定自己收到的是否和其他誠實節點一致,節點之間需要進行一次相互通信,確定自己和其他誠實節點收到的消息一致,每個節點發送prepare消息給其他所有節點,之后若收到quorum個數量的prepare消息,且通過驗證,達成第一輪共識。此時,似乎可以確定了誠實節點收到的消息一致。但是這里隱含條件是,達到共識的節點只是在自己的視角看到:我收到并驗證了quorum個一致的消息。但其他節點不一定和自己一樣收到quorum個prepare消息達成共識,如果此時進行提交,出現了網絡故障,提交了的節點知道已經達成共識,只要等網絡恢復,這條指令一定會被整個系統提交。但其他節點可能由于網絡故障還未達成共識,他們無法確定一直等下去能否提交。為了讓系統保持活性,進行視圖切換,此時新的主節點需要確定是在S'還是S的基礎上執行新的指令。如果沒有發現部分節點已經提交了該指令,且對另一條指令S''=S+2進行了共識并提交,系統對變量S的取值產生了不一致。因此,在此時提交有安全性的問題。

民盟中央建議加速元宇宙科普和立法:3月4日消息,民盟中央已起草了《關于“元宇宙”技術發展的提案》,并將提交全國政協十三屆五次會議。在提案中,民盟中央建議,在科普層面需加速知識傳播,法律層面則需加快立法步伐。民盟中央擬提交的提案指出,目前,在新興網絡層面,相關政策法規相對缺失。“元宇宙”在未來將會帶動形成全新的網絡形態,當遇到突發輿情,全虛擬的環境、場景將更難進行源頭追蹤、問題疏導。因此建議應盡早加快立法研究,盡快形成與技術、市場發展相適應的治理模式和法律基礎,全面提升我國社會治理的水平。建議組織相關部門,針對“元宇宙”相關需求、風險進行立法研究,并盡快發布。此前消息,民進中央擬向全國政協十三屆五次會議提交《關于積極穩妥推進元宇宙技術和產業發展的提案》。建議推進元宇宙技術產業發展,建立相關監管治理體系。(華夏時報)[2022/3/4 13:37:12]

如果再進行一個階段的共識,在達成PREPARE共識之后,各自再發送一個commit消息,各自節點等待接受并驗證quorum個commit消息之后再提交。會遇到同樣的問題,達成COMMIT共識的節點提交了,他們知道如果網絡正常,系統遲早都會提交,但是其他未達成COMMIT共識的節點不確定最后能否提交。網絡發生故障后新視圖中的主節點如果沒有發現已經提交了的節點,依然會造成不一致。這里的矛盾是我們為了活性需要切換視圖繼續共識;為了安全性還要確保新視圖開始共識前S的取值一致,已經提交了的指令在新視圖中也一定需要被提交。而在PBFT中采用視圖切換時向其他節點發送消息證明自己S的狀態的方法,即發送自己最新的S的一條pre-prepare消息和對應的quorum條prepare消息。視圖切換時,新主節點共識前就能判斷S'=S+1是否需要提交。

如果沒有任何一個節點就S'=S+1達成PREPARE階段共識,則不會繼續對S'=S+1進行提交。如果存在一個節點對達成了S'=S+1達成了PREPARE階段共識,則不可能對一條沖突的指令S''=S+2達成共識并提交,按照這種規則安全性和活性就得到了保證,而這種方法帶來的復雜度卻是o(n^3)。因此該算法依然不能夠運用在大規模的網絡當中。尹茂帆等人提出的HotStuff共識算法具有線性視圖變更的特性,解決了經典的PBFT甚至BFT類共識的瓶頸,主節點的切換無需增加其他協議和代價,系統仍能對外工作表現一致性,使得共識流程通信復雜度降低至o(n)。

動態 | 新浪財經:官媒針對區塊鏈的報道從科普宣傳轉向打假監管:據新浪財經今日消息,“1025新政”滿月,一個月間,官媒對區塊鏈的態度風向已轉。據11月初的一項統計,七家黨媒在新政一周內發布了65篇直接相關報道,當時文章中的關鍵詞是數據、產業、安全、創新等,大量文章偏向于科普區塊鏈的概念以及應用介紹,提醒警惕虛擬貨幣炒作的僅有3篇。近期,官媒的批評焦點則紛紛指向借區塊鏈之名進行的虛擬貨幣發行和炒作行為。據統計,新華網、人民網收錄轉載的,以打擊虛擬貨幣或揭露假借區塊鏈行騙為主題的文章,自10月25日到11月25日午間,共28篇;其中,11月19日至11月25日的一周內就高達15篇。這些文章主要圍繞三個觀點展開:厘清區塊鏈和虛擬貨幣的關系,說明二者概念不等;打擊偽“區塊鏈”騙局,或是虛擬貨幣騙局揭露;提醒民眾,區塊鏈不能成為炒作的噱頭,更不是行騙的招牌,需警惕此類活動,理性投資。[2019/11/26]

——?HotStuff基本概念——

了解hotstuff算法需要介紹幾個與共識流程相關的概念:

1)門限簽名:一個門限簽名方案指由n個成員組成的簽名群體,所有成員共同擁有一個公共密鑰,每個成員擁有各自的私鑰。只要收集到k個成員的簽名,且生成一個完整的簽名,該簽名可以通過公鑰進行驗證。

2)證書:主節點收到至少quorum個節點對用一個提案的投票消息后,利用門限簽名將其合成一個QC,這個QC可以理解為門限簽名生成的完整簽名,表示對該次提案達成一次共識。

3)視圖:視圖是共識的基本單元,一個視圖至多達成一次共識,并且單調遞增,每個視圖逐漸輪換推進共識。

4)共識狀態樹:每個共識區塊可以看做是一個樹節點,每個樹節點內包含對應的提案內容和相對應的QC,每個樹節點包含一個父親樹節點的哈希,形成一棵樹狀結構,主節點基于本地最長的分支生成新的樹節點。落后節點根據其他節點的最長分支上的最新樹節點來同步中間缺失的樹節點。

——?HotStuff共識流程——

HotStuff的核心圍繞著三輪共識投票展開,原論文中提出了三種形式:簡易版HotStuff,鏈狀HotStuff,事件驅動的HotStuff。接下來將通過對比PBFT中每個階段共識的過程來理解HotStuff算法。

聲音 | 上海股交所總經理:區塊鏈想要大規模發展要做好社會科普工作:金色財經報道,上海股交所總經理張云峰表示,區塊鏈當前還處于一個“概念”的階段,距離成熟應用,影響到百姓的日常生活還有很長的路要走。對于“區塊鏈”和其會帶來的社會和經濟效果,沈陽應當持審慎的態度。區塊鏈想要大規模發展,一方面要做好這項復雜技術的社會科普工作,加快社會大眾對區塊鏈的了解。另一方面,要充分發揮市場的作用,讓企業用實實在在的技術創新,賦能實體經濟的發展。[2019/11/17]

▲?BasicHotstuff

BasicHotStuff是共識的基本過程。其中,視圖以單調遞增的方式不斷切換。每個視圖內都有一個唯一的主節點負責提案、收集和轉發消息并生成QC,整個過程包括4個階段:準備階段、預提交階段、提交階段、決定階段,主節點提交某個分支,在PREPARE、PRE-COMMIT、COMMIT三個階段收集quorum個共識節點帶簽名的投票消息,利用門限簽名合成一個QC,然后廣播給其他節點。

HotStuff結合門限簽名可以將之前互相廣播共識消息的方式,轉為由主節點處理、合并轉發,通信復雜度可以降低到o(n),簡而言之就是HotStuff用門限簽名+兩輪通信達到了PBFT一輪通信的共識效果。

對比PBFT算法,共識開啟于主節點將請求附帶在pre-prepare中發送給其他節點,主節點即履行完了該輪共識的職責,接下來和其他節點一樣。整個共識過程包括一個廣播提案階段,兩個共識階段。

PREPARE階段:

主節點:1)根據收到的quorum條New-View消息,該消息中包含了發送方的狀態樹中高度最高的prepareQC,主節點在收到的prepareQC中計算出高度最高的QC,記為highQC;

2)根據這個highQC的節點所指向的分支,打包區塊創建新的樹節點,其父節點為highQC指向的節點;

3)將生成的提案附帶在prepare消息中發送給其他從節點,且當前提案包含highQC。

聲音 | CNBC主持人:加密貨幣最大的缺點之一就是難以向外行快速科普:CNBC主持人Ran NeuNer近期發推稱,加密貨幣最大的缺點之一就是很難向外行快速解釋。當人們要求我向他們解釋比特幣時,我知道他們至少需要一個小時才能真正理解。[2019/9/10]

從節點:1)收到該prepare消息之后,對prepare中的信息進行驗證,包括qc中簽名的合法性;是否當前視圖的提案;

2)prepare消息中的節點是否擴展自lockedQC的分支或者prepare消息中的highQC的視圖號大于lockedQC;

3)生成prepare-vote消息并附帶一個簽名發送給主節點。

PRE-COMMIT階段:

主節點收到quorum個當前提案的prepare-vote消息時,通過聚合quorum個部分簽名得到prepareQC;然后主節點廣播pre-commit消息附帶聚合得到的prepareQC。

從節點:其他節點收到pre-commit消息,驗證之后,發送pre-commitvote消息給主節點。

??注意此時,在主節點發送的pre-commit中的prepareQC就表明了prepare消息中的提案消息,所有節點投票成功達成了共識,這一時刻與PBFT中PREPARE階段達成共識類似。

Commit階段:

主節點:與pre-commit階段類似。1)主節點先收集quorum個pre-commitvote消息,然后聚合出這一階段的pre-commitQC,附帶在commit消息中發送給其他節點。2)設置本地lockedQC為pre-commitQC。

從節點:收到commit消息時,消息驗證通過同樣更新本地的lockedQC為commit消息中的pre-commitQC,對其簽名并生成commitvote并發送給主節點

??注意此時,主節點發送的commit消息附帶的pre-commitQC即與PBFT中的第二輪COMMIT階段共識類似,其中PBFT中該階段共識表明了節點對的第一階段達成共識這件事的共識,即確保了至少quorum個節點已經完成PREPARE階段,在發生視圖切換時,有足夠多的節點能夠證明對該提案達成了PREPARE共識,在新視圖中提案內容需要被提交。

聲音 | 火星人朋友圈科普RAM:火星人在朋友圈發文稱,“什么是RAM?簡單來說就是EOS這個國家的土地,所有的經濟行為都離不開土地。只要EOS的BP們能投票形成一個穩定的供給預期,并且不改變目前的Bancor算法,那么RAM后續的價格有可能會像北上廣深的房價走勢。房價下跌不行,房價過快上漲也不行,EOS的生態越來越像某國了,真有意思。”[2018/7/6]

DECIDE階段:

主節點:1)收集到quorum個commitvote消息時,聚合得到commitQC,并且附帶在decide消息中發送給其他節點;

2)當其他節點收到decide消息時,其中commitQC指向的提案中的交易就會被執行;

3)之后增加視圖號viewnumber,開啟下一輪共識,根據prepareQC構造New-View消息。

從節點:驗證消息后執行decide消息中commitQC指向的樹節點的交易。

nextViewinterrupt階段:在共識中任何其他階段發生了超時事件,發送新視圖的new-view消息,都會直接開啟下一輪新的共識。

??注意,HotStuff中一筆交易從開始到提交進行了三輪共識,第三輪共識的加入,克服了經典兩階段范式的共識算法擴展的瓶頸。PBFT中為了保證系統在遇到惡意節點時能繼續工作,需要進行視圖切換,而新視圖中為了確定上一個視圖中的區塊是否達成共識,需要在view-change消息中附帶自己收集到的quorum個prepare消息和相對應的一個pre-prepare消息作為證明,然后每個節點廣播view-change消息請求視圖切換,此時廣播的消息復雜度o(n^2),消息的量級為o(n),因此視圖切換的復雜度為o(n^3)。安全性和活性讓PBFT需要o(n^3)的通信復雜度,對于網絡的負載極大,限制了其向大規模網絡的擴展。而HotStuff中如果我們對某一區塊達成了兩輪共識,在更換主節點時便能確定,主節點只需要基于最新的兩輪共識節點產生新節點是安全的。換句話說,只需要根據區塊自身的狀態就可以確定是否在新的視圖中基于該區塊打包塊新區塊,降低了在視圖切換時候的通信復雜度。

▲?ChainedHotStuff

可以發現在BasicHotStuff中的各個階段流程都高度的相似,HotStuff的作者便提出了ChainedHotStuff來簡化BasicHotStuff的消息類型,并允許BasicHotStuff的各個階段以流水線方式進行處理交易。

ChainedHotStuff的流程如圖:

從圖中可以看出,每個階段都會切換視圖,因此每個提案都有自己的視圖。節點對于不同的提案來說處在不同的視圖上,PREPARE階段的投票被當前視圖的主節點合成QC,并轉發給下一個視圖的主節點,即下一視圖在進行PREAPRE階段的同時,也在進行上一個視圖的PRE-COMMIT階段。每個階段具有類似的結構,視圖v+1的PREPARE階段可以看作是視圖v的PRE-COMMIT階段。視圖v+2的的PREPARE階段看作是視圖v+1的PRE-COMMIT階段和視圖v的COMMIT階段。v1中的cmd1將在視圖v1,v2,v3中分別進行PREPARE、PRE-COMMIT、COMMIT階段,在v4中就進行提交。cmd2以此類推。每個階段的cmd提案產生將會附帶上一階段投票產生的QC。經過流水線簡化版本的HotStuff工作過程如下:

主節點:1)等待NEW-VIEW消息,發出自己的提案;

2)等待其他節點進行投票;

3)向下一個主節點發送NEW-VIEW消息。

從節點:1)等待主節點的提案消息;

2)檢查提案中的QC,更新本地highQC,lockedQC,發送投票;

3)向下一個主節點發出NEW-VIEW消息。

▲?Event-drivenHotStuff

從ChainedHotStuff到Event-drivenHotStuff,實現原論文中將整個協議的安全性和活性解耦開,活性成為單獨的pacemaker模塊。pacemaker模塊保證了在全局穩定時間之后的活性。提供兩個功能:

選擇、校驗每個視圖的主節點。幫助主節點生成提案。換而言之,在如此低的視圖切換代價下,pacemaker中可以采用任何合適的節點輪換機制,以及任何提案生成策略。

Event-drivenHotstuff與其他版本原理還是核心的三階段共識,區別只是工程實現上的便利,具體可見論文偽代碼

——?HotStuff之改進優化-NoxBFT——

活性機制優化

活性機制是共識能夠持續推進的關鍵。在原HotStuff論文中活性機制使用了一個全局一致的超時時間確定了視圖超時。在NoxBFT中,我們設計了更靈活的機制應對網絡環境的不穩定。

具體:每個節點進入新的視圖后,根據配置等待超時時間,如果本視圖未超時,則定時器時長不變。若超時,則不斷廣播TimeoutMsg,直到收到quorum個TimeoutMsg進入下一視圖,此時定時器置為配置時間k倍,連續超時n次則置超時器為k^n倍。以此類推,這樣避免在網絡不穩定時頻繁切換視圖。

交易緩存池

在區塊鏈的應用中,為避免交易丟失,我們設計了交易緩存池緩存客戶端交易。共識模塊主動拉取交易進行打包。交易池也可以減輕共識工作量,進行交易去重,我們通過交易內容hash標識交易,將已經執行的交易寫入布隆過濾器,防止雙花攻擊,提升共識算法的穩定性。

快速恢復機制

不穩定的網絡環境可能使共識節點丟失共識消息,導致節點落后。在HotStuff原論文中,作者將此部分具體實現留給了開發者。我們實現了工程可用的同步算法,讓落后共識節點恢復定序功能,分為兩步:

1)節點落后較多,直接向其他節點拉取區塊執行恢復到最新檢查點。

2)檢查點之后的共識進度落后,向其他節點拉取最新的CommitQC快速恢復共識進度。

為提高效率,我們采取并行向不同節點拉取區塊的機制,可以靈活配置并行度。并行拉取的區塊先進行持久化再有序執行,同時記錄各個節點拉取效率的分數,以便下次高效選取目標節點進行同步。整個過程可以以最快的速度拉取所有丟失的交易,減少整個過程的等待時間。

聚合簽名

NoxBFT中實現并改進了Ed25519聚合簽名算法。一方面通過編譯預先計算的數據加速;另一方面,我們實現了大數類型專用的加速Ed25519的計算過程,壓縮大數的存儲。最終Ed25519算法要比官方快2.5倍,簽名算法也實現了更高的性能。

總結

在BFT類的共識研究中,安全性的要求需要在視圖切換時,主節點確保自己是基于最新的系統狀態工作的,視圖切換與系統狀態的共識產生了o(n^3)的通信復雜度。而HotStuff通過增加一輪共識來解決,再結合門限簽名降低了通信復雜度。不僅如此,流水線的工作方式,讓算法變得足夠簡潔優雅,這與raft的工作方式相似,采取了先上鏈再共識,通過三輪共識之后再執行。這種鏈式的結構,不再區分每個階段通信的意義,靈活的主節點更換的機制,在節點更換時不需要通信來確定最新共識的狀態,對安全性與活性進行隔離,投票保證了安全性,pacemaker保證了其在網絡異步時的活性。

作者簡介

程泰寧趣鏈科技基礎平臺部共識算法研究小組

參考文獻

SchneiderFB.Thestatemachineapproach:Atutorial.SpringerNewYork,1990.

LamportL,?ShostakR,?PeaseM.TheByzantineGeneralsProblem.ACMTransactionsonProgrammingLanguagesandSystems,1982,4(3).

CastroM,LiskovB.PracticalByzantinefaulttolerance.OSDI.1999,99(1999):173-186.

YinM,?MalkhiD,?ReiterMK,etal.HotStuff:BFTConsensusintheLensofBlockchain.?2018.

ShoupV.PracticalThresholdSignatures//InternationalConferenceonTheory&ApplicationofCryptographicTechniques.Springer-Verlag,2000.

Tags:PREMMIMMITREPLeprechaun FinanceSimmitriMMIT價格Drep(new)

火幣網下載官方app
第五屆中國區塊鏈開發大賽正式拉開帷幕!_區塊鏈

為貫徹習近平總書記在中共中央局第十八次集體學習時的重要講話精神,落實《中華人民共和國國民經濟和社會發展第十四個五年規劃和2035年遠景目標綱要》和《關于加快推動區塊鏈技術應用和產業發展的指導.

1900/1/1 0:00:00
觀察 | 阿里、騰訊先后試水NFT市場,大廠NFT藝術品確權容易、換手難?_NFT

原標題:《大廠NFT藝術品確權容易、換手難》NFT不僅在原生區塊鏈社區火爆,國內互聯網大廠們也涌入這一潮流。繼阿里巴巴在6月份發售支付寶付款碼皮膚NFT之后,8月起,騰訊也加速布局這塊市場.

1900/1/1 0:00:00
觀點:集先進技術于一體的元宇宙是“縫合怪”嗎?_元宇宙

本文轉載自:FT中文網 原標題:《元宇宙是“縫合怪”嗎?》作者:程實、高欣弘,程實系工銀國際首席經濟學家、董事總經理;高欣弘系工銀國際宏觀經濟分析師FT中文網注:本文僅代表作者本人觀點.

1900/1/1 0:00:00
哪些PoW幣最容易受到51%攻擊?_比特幣

在比特幣發明之前,也曾出現過多個數字貨幣的實驗性項目,不過他們全都失敗了。DigiCash于1996年申請破產,E-gold在2008年被美國政府叫停,還有其他一些不知名的項目在默默無聞中消亡.

1900/1/1 0:00:00
那個曾持有 730 個 CryptoPunks 的匿名收藏大咖如何看 NFT 的價值?_THE

撰文:Loopify編譯:PerryWang這是Loopify在2021年2月對匿名的加密藝術收藏大咖「Mr.703」所做的采訪.

1900/1/1 0:00:00
觀點:碳抵消有助于加密行業可持續發展_比特幣

據全國能源信息平臺8月15日消息,金融科技公司ClimateTrade的首席執行官弗朗西斯科·貝內迪托在接受《比特幣電訊報》采訪時稱,加密行業正在經歷一個“綠色炒作周期”.

1900/1/1 0:00:00
ads