【BFT帝國】20250409更新PBFT總結

2411 2411 2411

Zhang G R, Pan F, Mao Y H, et al. Reaching Consensus in the Byzantine Empire: A Comprehensive Review of BFT Consensus Algorithms[J]. ACM COMPUTING SURVEYS, 2024,56(5).出版時間: MAY 2024
索引時間(可被引用): 240412
被引: 9'ACM COMPUTING SURVEYS'
卷56期5 DOI10.1145/3636553
出版商名稱: ASSOC COMPUTING MACHINERY期刊影響因子 ?
2023: 23.8
五年: 21.1JCR 學科類別
COMPUTER SCIENCE, THEORY & METHODS
其中 SCIE 版本
類別排序 類別分區 
1/144	Q1

Toward More Efficient BFT Consensus

一、PBFT Practical Byzantine fault tolerance-1999

Miguel Castro, Barbara Liskov, et al. 1999. Practical Byzantine fault tolerance. In OSDI, Vol. 99. 173–186.

角色介紹:

客戶端 Client:向區塊鏈網絡 發起交易或狀態更新請求,等待共識結果。

主節點 Leader/Primary:負責 接收請求「交易排序」,協調共識。(輪換時同步狀態)

副本節點 Replica:負責 備份請求,促進共識達成。「驗證合法,維護一致」

故障節點 Byzantine Fault:負責 選擇性響應,篡改數據。【何不直接剔除,因設計目標為容忍而非實時剔除】

正常流程:客戶端請求 → 主節點排序廣播 → 副本節點三階段驗證 → 客戶端確認。

1.請求 I n v o k e Invoke Invoke

客戶端 ClientPrimary(ld)發送調用請求Req,并啟動計時器 Timer。【OP: 時間戳】

Client 收到來自不同的 Replicas 的僅 F+1個回復 Reply,即可判定操作完成,停止計時 Timer

否則直到計時器到期,認為調用失敗。【原因1:內部錯誤只能等待。原因2:鏈接不可靠未達Primary,廣播】

2.協商(共識)

image-20241115202006547

1.Pre-prepare階段

1> 分配唯一序列號 Sequence,范圍[h, h+k](h為最后一個穩定檢查點的 Seq,k為限增值)

2> ViewNumSeq、對請求Req的摘要hash組成PRE-PREPARE,然后簽名Sig。(搭載原生Req)

3> 發給所有 Backups==Replicas。

總結,指定一個編號Seq,把請求打包發送給所有節點。

2.Prepare階段

1> 驗證Sig

2> 檢查ViewNum是否處于同一視圖。

3> 檢查Seq未分配給其他Req。

4> 驗證hash

廣播PREPARE消息,收集滿2F個消息后,造一個(都已準備)謂詞Prepared Predicate。【共識基本達成】

總結,檢驗消息包后廣播「沒問題,我已準備提交」,滿2F個后達成共識。

3.Commit階段

1> 通過廣播COMMIT消息,(廣播謂詞Prepared Predicate)。

2> 收集滿2F個消息后,造另一個謂詞committed-local predicate。【仲裁證書提供安全屬性:正確副本執行方式相同】

總結,上階段滿2F個準備消息后,廣播「我已提交」,再滿2F個后達成共識。

4.Reply階段

Client發送REPLY消息 (resultOfOp=true)。

Weak Certificate 弱證書,僅需F+1個回復。

總結,上階段滿2F個提交消息后,向客戶端回復調用完成。

檢查點 C h e c k P o i n t CheckPoint CheckPoint

通過周期性狀態同步,解決日志膨脹問題。【我理解為狀態確認穩定后即可刪除多余「過期」日志】

ReqCommit時的 execute 會更新節點的狀態,該狀態需要確保所有正確副本一致性,通過檢查點機制。

O n c e a r e q u e s t i s c o m m i t t e d , t h e e x e c u t i o n o f t h e r e q u e s t r e f l e c t s t h e s t a t e o f a r e p l i c a . Once\ a\ request\ is\ committed,\ the\ execution\ of\ the\ request\ reflects\ the\ state\ of\ a\ replica. Once?a?request?is?committed,?the?execution?of?the?request?reflects?the?state?of?a?replica.

算法定期對一系列 exe 生成證明,稱為檢查點

同樣的,在廣播CHECKPOINT并收集2F個回復后,進化成穩定檢查點。【水位范圍同上述Seq

總結,節點「已提交」后會更新狀態,通過CheckPoint消息將其狀態廣播,滿2F個后確認狀態穩定。

3.視圖切換 V i e w C h a n g e ViewChange ViewChange

Primary故障或共識超時,啟動切換協議。【確保故障時系統活性】

視圖切換期間,節點處于異步狀態(i.e., 沒有完全同步)。協議來自論文1:但可能需要無限空間。

副本節點在收到 Req 后,啟動一個 「節點Timer」等待 Req 被提交 Commit。

Commit 完成,則 Timer 終止; R e s t a r t s t h e T i m e r i f t h e r e a r e o u t s t a n d i n g v a l i d r e q u e s t s t h a t h a v e n o t b e e n c o m m i t t e d . Restarts\ the\ Timer\ if\ there\ are\ outstanding\ valid\ requests\ that\ have\ not\ been\ committed. Restarts?the?Timer?if?there?are?outstanding?valid?requests?that?have?not?been?committed.

若 Timer 到期,則認為 Primary 故障,廣播VIEWCHANGE消息,引發視圖切換

該消息包含三個參數: C P Q CPQ CPQ.

選主公式:p = v mod |R| 。【R為節點總數】

各副本節點收到VIEWCHANGE后。

1> 驗證:生成PQ的視圖小于v

2> 發送VIEWCHANGE-ACK消息給v+1Primary(新主)「支持視圖切換」。【包含節點ID、摘要及發送方ID】

3> Primary在收集 2F-1 條VIEWCHANGE和*-ACK后,確認更改,將VIEWCHANGE*加入集合 S S S.【至少F+1條】

生成一個仲裁證書, view-change certificate

總結:通過超時檢測和多方認證,切換Ld「視圖+1」。

Primary 將 ID 與 S S S中的 msg 配對后,加入集合 V V V.

選擇檢查點最高值h。

提取[h, h+k]之間未提交的 Req,加入集合 X X X.【請求已在v或仲裁證書中準備好】

Backups 檢查 V 、 X V、X VX中 msg 是否支持新主的【選擇檢查點和延續未提交請求】的決定。若不支持則切換視圖至v+2.

終止 View-Change 協議。

視圖切換期間異步處理請求。

總結,副本節點超時觸發視圖切換,新主節點基于最高檢查點恢復未完成請求。

4.優缺點

開創異步網絡中BFT的實用方案,啟發高效BFT算法時代。

二次消息復雜性,阻礙其在大規模網絡中的應用。

f a u l t y c l i e n t s u s e a n i n c o n s i s t e n t a u t h e n t i c a t o r o n r e q u e s t s . faulty\ clients\ use\ an\ inconsistent\ authenticator\ on\ requests. faulty?clients?use?an?inconsistent?authenticator?on?requests. 會導致系統重復視圖切換而卡死。

二、SBFT Scalable-2019

Guy Golan Gueta, Ittai Abraham, Shelly Grossman, Dahlia Malkhi, Benny Pinkas, Michael Reiter, Dragos-Adrian Seredinschi, Orr Tamir, and Alin Tomescu. 2019. SBFT: a scalable and decentralized trust infrastructure. In 2019 49th Annual IEEE/IFIP international conference on dependable systems and networks (DSN). IEEE, 568–580.

A s c a l a b l e a n d d e c e n t r a l i z e d t r u s t i n f r a s t r u c t u r e A\ scalable\ and\ decentralized\ trust\ infrastructure A?scalable?and?decentralized?trust?infrastructure.

3f + 2c + 1個 Servers。【f為拜占庭故障,c為崩潰或流浪】

擁有Fast、Slow兩種模式,前者需要無故障節點、同步環境;后者就是線性PBFT。

利用門限簽名(閾值簽名, t h r e s h o l d threshold threshold)解決了二次拜占庭廣播問題。(其中閾值表示簽名者數量)

1.快速通道 F a s t p a t h Fast\ path Fast?path?

image-20241115202109841

1.Pre-Prepare 階段

Primary 向所有 Servers 發送指令。

Servers 將回復發給 CommitCollector

2.Full-commit-Proof 階段

C-Collector 將收集到的 s i g n e d r e p l i e s signed\ replies signed?replies 轉換成一個門限簽名 msg,并發給所有 Servers

3.Full-execute-Proof 階段

Servers 將回復發給 ExecutionCollector

E-Collector 將收集到的 s i g n e d r e p l i e s signed\ replies signed?replies 轉換成一個門限簽名 msg,并發給所有 Servers,包括 Client。【對比PBFT的F+1條確認】

2.線性PBFT l i n e a r ? P B F T linear-PBFT linear?PBFT

將所有 Collector 聚合到 Primary。【權柄收回】

i f S B F T u s e s o n l y t h e p r i m a r y a s a l l “ l o c a l ”? l e a d e r s i n e a c h p h a s e if\ SBFT\ uses\ only\ the\ primary\ as\ all\ “local”\ leaders\ in\ each\ phase if?SBFT?uses?only?the?primary?as?all?local?leaders?in?each?phase?.

那么工作流就類似PBFT。

但是擁有門限簽名

給定視圖

Primary 根據視圖號選擇。

Collectors 根據視圖號和 Seq(commit state index)選擇。

SBFT 建議隨機選擇二者。

線性PBFT模式下,Primary總是選最后一個Collector

當視圖切換時,Servers 的角色更改。

3.視圖切換 V i e w C h a n g e ViewChange ViewChange?

View Change Trigger 階段

兩種情況會導致視圖切換:

  • Timeout.
  • 收到 F+1 個節點的質疑(主有問題)。

View Change 階段

l s ls ls:最后穩定 Seq( l a s t s t a b l e s e q u e n c e last\ stable\ sequence last?stable?sequence?)。【因部分同步可能不一致】

w i n win win:用于限制未完成塊數量,預定義值。【因此 Seq 在 l s ~ l s + w i n ls\sim ls+win lsls+win

Seq 可以指明 Server 的狀態。

觸發 ViewChange 的 Server 會發送VIEWCHANGE消息給新主。【包含 l s ls ls和到 l s + w i n ls+win ls+win之間的狀態摘要】

New View 階段

收集滿 2F+2C+1 后,啟動新視圖,并將其廣播。

Accept a New-view 階段

節點們接受 l s ~ l s + w i n ls\sim ls+win lsls+win間的Seq,或一個安全的、可用于未來交易的Seq。

4.優缺點

兩種模式下均可實現線性消息傳輸,并且 Reply 階段的通信為O(1)。

繼承PBFT缺點,Client 完全可以只與F+1部分節點通信,觸發不必要的視圖切換。

關于實驗

實驗設置

  • 部署規模:在真實世界規模的廣域網(WAN)上部署了200個副本。每個區域使用至少一臺機器,每臺機器配置32個VCPUs,Intel Broadwell E5-2686v4處理器,時鐘速度2.3 GHz,通過10 Gigabit網絡連接。
  • 故障容忍:所有實驗都配置為能夠承受f=64個拜占庭故障。
  • 客戶端請求:使用公鑰簽名客戶端請求和服務器消息。

實驗方法

  • 微基準測試:簡單的Key-Value存儲服務,每個客戶端順序發送1000個請求。
  • 智能合約基準測試:使用以太坊的50萬筆真實交易數據,副本通過運行EVM字節碼執行每個合約,并將狀態持久化到磁盤。
- 無批處理模式:每個請求是一個單次put操作,寫入隨機值到隨機鍵。
- 批處理模式:每個請求包含64個操作,模擬智能合約工作負載。
'客戶端請求':客戶端通過將交易分批成12KB的塊(平均每批約50筆交易)發送操作。

三、HotStuff-2019??

Maofan Yin, Dahlia Malkhi, Michael K Reiter, Guy Golan Gueta, and Ittai Abraham. 2019. HotStuff: BFT consensus with linearity and responsiveness. In Proceedings of the 2019 ACM Symposium on Principles of Distributed Computing. 347–356

3F+1個Servers。

達成活躍性、安全性無需同步假設。樂觀響應:前2F+1個消息即可進行共識決策。

采用輪換 Primary 保證鏈質量

采用門限簽名達到共識線性。(最壞情況,連續Primaries故障,復雜度為f*n

1.請求

Client向所有Servers發送Req

同PBFT,等待F+1個Reply,操作完成。

客戶端請求失敗處理部分,引用了文獻:

Alysson Bessani, Joao Sousa, and Eduardo EP Alchieri. 2014. State machine replication for the masses with BFT-SMART. In 2014 44th Annual IEEE/IFIP International Conference on Dependable Systems and Networks. IEEE, 355–362.
Miguel Castro, Barbara Liskov, et al. 1999. Practical Byzantine fault tolerance. In OSDI, Vol. 99. 173–186.

2.共識

image-20241115202200497

1.Prepare階段

Primary在收到Req后,向節點(Replica)廣播PREPARE消息。

節點驗證消息:

  1. 為上次提交的msg的擴展(無間隔)
  2. 最高View(最新視圖)

驗證后,用部分簽名對PREPARE-VOTE消息簽名,并發給Primary

Primary在等待2F+1后,生成仲裁證書(Quorum Certificate,QC),記為 PrepareQC。【可以理解為完成

2.Pre-Commit 階段

廣播帶有 PrepareQC 的msg,節點將其存儲。

將COMMIT-VOTE消息簽名后發給Primary

Primary在集齊2F+1后,形成 Pre-CommitQC

3.Commit 階段

廣播帶有 Pre-CommitQC 的msg。

節點回復COMMIT給Primary,并且更新變量 lockedQC。【保存QC計數/Req

k e e p s c o u n t i n g t h e n u m b e r o f r e c e i v e d Q C s f o r a r e q u e s t keeps\ counting\ the\ number\ of\ received\ QCs\ for\ a\ request keeps?counting?the?number?of?received?QCs?for?a?request.

4.Decide 階段

Primary在收到2F+1后,廣播DECIDE給Replicas。

節點認為共識達成,開始執行請求。

然后ViewNum++。【視圖切換開始】

然后發送New-View新主

三個變量

  • p r e p a r e Q C prepareQC prepareQC:當前節點已知的最高鎖定 PREPARE msg(最新)。

  • l o c k e d Q C lockedQC lockedQC:已知最高鎖定 COMMIT msg(最新)。

  • v i e w N u m viewNum viewNum:節點當前所處視圖。

新主收到2F+1個New-View后,在 p r e p a r e Q C prepareQC prepareQC基礎上擴展。(理解為+1)

若未能及時收滿2F+1,則觸發超時,視圖切換。

3.視圖切換 V i e w C h a n g e ViewChange ViewChange

為了確保鏈質量,HotStuff可以更頻繁的切換試圖。

通過廣播協調消息和收集門限簽名進行共識。因此視圖切換被包含于HotStuff的核心流程。

新主選擇方式為 p = v m o d n p = v\mod n p=vmodn

4.優缺點

使用門限簽名,實現線性消息傳遞。

每個階段的收集投票,構建門限簽名,可以被流水線化 p i p e l i n e d pipelined pipelined。從而簡化HotStuff協議的構建,例如Casper:(同時降低O(n))

Vitalik Buterin and Virgil Griffith. 2017. Casper the friendly finality gadget. arXiv preprint arXiv:1710.09437 (2017).

還可以用延遲塔 d e l a y t o w e r s delay\ towers delay?towers擴展到公有鏈:

Shashank Motepalli and Hans-Arno Jacobsen. 2022. Decentralizing Permissioned Blockchain with Delay Towers. (2022).
arXiv:2203.09714

failures情況下,HotStuff吞吐量顯著下降(不能達成共識)。

關于實驗

  • 使用Amazon EC2 c5.4xlarge實例,每個實例有16個vCPU,由Intel Xeon Platinum 8000處理器支持。
  • 所有核心的Turbo CPU時鐘速度高達3.4GHz。
  • 每個副本運行在單個VM實例上。

網絡配置:

  • 測得的TCP最大帶寬約為1.2 Gbps。(使用iperf工具)
  • 網絡延遲小于1毫秒。

實驗設置:

  • 實驗中使用了4個副本,配置為容忍單個故障(即f = 1)。
  • 使用了空操作請求和響應,沒有觸發視圖更改。
  • 實驗中使用了不同的批次大小(100、400和800)和不同的有效負載大小(0/0、128/128和1024/1024字節)。

軟件和工具:

  • HotStuff的實現使用了大約4K行C++代碼,核心共識邏輯大約200行
  • 使用secp256k1進行數字簽名。
  • 使用NetEm工具引入網絡延遲。

使用BFT-SMaRt的ThroughputLatencyServer和ThroughputLatencyClient程序測量吞吐量和延遲。


四、ISS: Insanely Scalable State Machine Replication-2022

Chrysoula Stathakopoulou, Matej Pavlovic, and Marko Vukoli?. 2022. State machine replication scalability made simple. In Proceedings of the Seventeenth European Conference on Computer Systems. 17–33.
會議17th European Conference on Computer Systems (EuroSys)歐洲計算機系統會議,頂級學術會議
地點Rennes, FRANCE
日期APR 05-08, 2022
贊助方Assoc Comp Machinery; ACM SIGOPS; USENIX; Huawei; Stormshield; Microsoft; Protocol Labs Res; Red Hat; Amazon; Meta; Google; Intel; Cisco

3F+1節點。

是一個通用框架,

通過劃分工作負載,并且關聯 SB(Sequenced Broadcast) 實例與Leader,

將傳統的單Leader的 TOB(Total Order Broadcast) 協議擴展為多Leader的協議。

達成PBFT的37倍,Raft的55倍,Chained HotStuff的56倍。

1.初始配置

image-20241115110356687

日志log:該節點接收的所有消息,由Req組成,被批處理以降低消息復雜性。

SN(Sequence Number)序列號:相對于日志開頭的偏移量。

將日志分成epoch,按SN以輪詢方式分配給Leader,再將epoch分成segment,這樣與Leader相對應。

所有Req基于modulo哈希函數分類到桶bucket中,再將桶分配給Leader。

段、Leader、桶,一一對應。

2.復制協議 R e p l i c a t i o n P r o t o c o l Replication\ Protocol Replication?Protocol?

image-20241115110456327

初始配置階段

1> 選中N123三個節點為Leader。

2> 分別分配segment 1、2、3。

分別對應SN1 4,2 5,3。

3> 分桶給Leader,包含用于提出提議的Req批次 r e q u e s t b a t c h e s request\ batches request?batches

分別為B1、2、3。

等待Req 階段

通過多SB實例(共識實例)達成共識。

SB實例與一個Leader及其Segment相關聯

等待客戶端發送請求,記為 S M R ? C A S T ∣ < r x > SMR-CAST|<r_x> SMR?CAST<rx?>,散列到本地桶隊列中。直到:

  • 桶滿(預定義大小)如 ∣ B i ∣ = 3 |B_i|=3 Bi?=3.
  • 預定時間(距上次提案)。

將桶里的Req請求打包為一批次 β i \beta_i βi?。然后廣播 S B ? C A S T < 1 , β A > SB-CAST<1,\beta_A> SB?CAST<1,βA?>消息。

共識階段

每個Leader運行底層包裝的TOB協議,就其提議的SB實例達成共識。【可并行non-blocking

  • 共識成功,將SB中承載的一批Req交付。
  • 共識失敗log中記錄⊥。

TOB可以保證,成功時所有正確節點中的序列號與批次一致。

當一個epoch的所有SN號對應的log都被填滿時,節點向Client發送 S M R ? D E L I V E R E D SMR-DELIVERED SMR?DELIVERED,收滿 a q u o r u m a\ quorum a?quorum即完成。

3.多領導選擇 M u l t i p l e L e a d e r S e l e c t i o n Multiple\ Leader\ Selection Multiple?Leader?Selection

L e a d e r S e l e c t i o n P o l i c y , L E Leader\ Selection\ Policy,LE Leader?Selection?Policy,LE?選主策略可以自定義,只要能保證活性:each bucket will be assigned to a segment with a correct leader infinitely many times in an infinite execution將桶分配給正確Leader的段。

例如:保證足夠多的正確Leader.

Zarko Milosevic, Martin Biely, and André Schiper. 2013. Bounded delay in byzantine-tolerant state machine replication. In 2013 IEEE 32nd International Symposium on Reliable Distributed Systems. IEEE, 61–70

Leader 故障檢測

每個SB實例用== F a i l u r e D e t e c t o r Failure\ Detector Failure?Detector==,用來檢測quiet nodes

ISS會從集合移除故障Leader,用LE再選個主。

4.優缺點

Pros

  • 吞吐量,因為并行。
  • 對客戶端高響應,可立即執行Req
  • 資源不浪費,Req僅入一個桶。

Cons

  • 共識延遲,引入額外開銷。
  • 故障時,SB實例高概率共識失敗。(任何Leader故障,新主,并重新提出未提交的Req
  • Req需要發到所有節點,以確保Req放入正確桶。

五、DAG-Rider-2021

Idit Keidar, Eleftherios Kokoris-Kogias, Oded Naor, and Alexander Spiegelman. 2021. All you need is dag. In Proceedings of the 2021 ACM Symposium on Principles of Distributed Computing. 165–175.

D i r e c t e d a c y c l i c g r a p h ( D A G ) Directed\ acyclic\ graph\ (DAG) Directed?acyclic?graph?(DAG).有向無環圖。

image-20241115110257809

圖中為完整的消息傳播歷史,包含:遍歷的路徑、因果關系 c a u s a l h i s t o r y causal\ history causal?history.

傳統的Leader服務器承擔:

  • tx分發。 t r a n s a c t i o n d i s t r i b u t i o n transaction\ distribution transaction?distribution
  • 達成共識。 c o n s e n s u s p h a s e consensus\ phase consensus?phase

兩項責任,巨大工作量導致tx積壓、系統瓶頸

而DAG-based算法將二者分離,在tx分發階段無需Leader(吞吐量顯著增加),在共識階段每個實例都有一個Leader。

1.系統模型&服務屬性 S y s t e m m o d e l a n d s e r v i c e p r o p e r t i e s . System\ model\ and\ service\ properties. System?model?and?service?properties.

DAG-Rider是一種異步拜占庭原子廣播協議 a s y n c h r o n o u s B y z a n t i n e A t o m i c B r o a d c a s t , B A B asynchronous\ Byzantine\ Atomic\ Broadcast, BAB asynchronous?Byzantine?Atomic?Broadcast,BAB)。

以最佳時間和消息復雜度實現了后量子安全

分為兩層:

  1. 基于輪的結構化DAG,分發tx用。
  2. 零開銷的共識協議,獨立確定提交消息順序。

使用Bracha廣播。

共3F+1個節點。

假設了一個全局完美硬幣 g l o b a l p e r f e c t c o i n global\ perfect\ coin global?perfect?coin)來確保活性。允許在wave的實例上獨立選擇一個Leader.

2.DAG流水線 P i p e l i n i n g Pipelining Pipelining

節點獨立維護自己的DAG,用一個數組[]存儲。(所有節點間消息傳播拓撲)

以輪 r o u n d round round為單位。

強邊:分發相同的msg,直鏈(directly linked in the previous round)。

弱邊:沒有直鏈。

協議流程

驗證器一直等待客戶端發送交易(請求、頂點),存儲于緩沖區buffer,并監視:

定期檢查,若其所有前導頂點都已成功接收,則加入DAG[],并根據round組織起來。

當滿2F+1個頂點時,進入下一輪r+1。(下一波?雖然首輪也是下輪

生成新的頂點v:r+1,弱邊,并廣播。

因為網絡部分同步,可能有不同的DAG出現,但BAB會保證最終收斂

4.共識 C o n s e n s u s i n D A G s Consensus\ in\ DAGs Consensus?in?DAGs 「我也不知3跑哪了」

利用全局完美硬幣,節點可以獨立檢查DAG,推斷需交付的區塊及其提交順序。(無需額外協調)

在DAG于節點中發送頂點完畢后,系統啟動共識旨在確保分發的tx完成提交aimed at deterministically finalizing the commit of the disseminated transactions.

在這個過程中,DAG被分為波waves,每波有4個輪次rounds

利用完美硬幣在第一輪中隨機選擇Leader(滿2F+1強邊)。

按照預先確定的順序交付頂點塊。交付區塊時,會將其因果關系歷史上的值也一并提交。

5.優缺點

Pros.

  • 吞吐量顯著提升。
  • DAG達成消息分發和促進共識兩種目的 d u a l p u r p o s e dual\ purpose dual?purpose?。
  • 更穩定的提交。

Cons.

  • 因為分離,延遲激增 𝑂 ( 𝑛 3 l o g ( 𝑛 ) + 𝑛 𝑀 ) 𝑂(𝑛 3 log(𝑛) + 𝑛𝑀) O(n3log(n)+nM)? 。

六、Narwhal and Tusk-2022

George Danezis, Lefteris Kokoris-Kogias, Alberto Sonnino, and Alexander Spiegelman. 2022. Narwhal and tusk: a dag-based mempool and efficient bft consensus. In Proceedings of the Seventeenth European Conference on Computer Systems. 34–50.

tx傳播tx排序分離,實現高效共識。

Mempool負責可靠傳播,少量元數據用來排序。

1.系統模型&服務屬性

共3F+1節點。

Mempool是一個KV鍵值存儲 ( d , b ) (d,b) (d,b)

K:digest.

V:交易塊block

服務屬性

  • 完整性:(d,b)。
  • 可用性:寫入(d,b)后。
  • 包含性 C o n t a i n m e n t Containment Containment:后塊包含前塊。
  • 2 / 3 2/3 2/3因果性:后塊包含至少 2 / 3 2/3 2/3前塊。
  • 1 / 2 1/2 1/2鏈質量:至少有一半causal history是誠實者所寫入。

2.復制協議

替換Bracha廣播。

用固有DAG+證書實現。

blocks包含

  • hash sig。
  • tx list。
  • 證書certificates of availability

證書包含:hash、2F+1 sig、round

原理

  1. 收集tx —— tx list 和 證書list。
  2. r-1 主收集2F+1證書 —— r,新塊廣播。
  3. 驗證sig、含2F+1、唯一塊,簽名(確認)。
  4. 滿2F+1, 造一個證書并廣播,此時停止廣播新塊。

3.Tusk共識

  • 選主同DAG-Riders
  • 一波三輪。
  • 一三🉑重疊,4.5rounds。

4.優缺點

Pros.

  • 一個基于DAG的BFT算法的具體實現。
  • 吞吐量優勢。

Cons.

  • 高延遲(提交區塊前等待多輪)。
  • 未滿足標準的tx需要等更多wave

E n d . End. End.


  1. Miguel Castro and Barbara Liskov. 2002. Practical Byzantine fault tolerance and proactive recovery. ACM Transactions on Computer Systems (TOCS) 20, 4 (2002), 398–461. ??

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/900823.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/900823.shtml
英文地址,請注明出處:http://en.pswp.cn/news/900823.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

前端用用jsonp的方式解決跨域問題

前端用用jsonp的方式解決跨域問題 前端用用jsonp的方式解決跨域問題 前端用用jsonp的方式解決跨域問題限制與缺點&#xff1a;前端后端測試使用示例 限制與缺點&#xff1a; 不安全、只能使用get方式、后臺需要相應jsonp方式的傳參 前端 function jsonp(obj) {// 動態生成唯…

MySQL詳解最新的官方備份方式Clone Plugin

一、Clone Plugin的動態安裝 install plugin clone soname mysql_clone.so;select plugin_name,plugin_status from information_schema.plugins where plugin_name clone; 二、Clone Plugin配置持久化 在 MySQL 配置文件my.cnf中添加以下內容&#xff0c;確保插件在 MySQL …

解決python manage.py shell ModuleNotFoundError: No module named xxx

報錯如下&#xff1a; python manage.py shellTraceback (most recent call last):File "/Users/z/Documents/project/c/manage.py", line 10, in <module>execute_from_command_line(sys.argv)File "/Users/z/.virtualenvs/c/lib/python3.12/site-packa…

鴻蒙NEXT開發資源工具類(ArkTs)

import { AppUtil } from ./AppUtil; import { StrUtil } from ./StrUtil; import { resourceManager } from kit.LocalizationKit;/*** 資源工具類。* 提供訪問應用資源的能力&#xff0c;包括布爾值、數字、字符串等資源的獲取。** author 鴻蒙布道師* since 2025/04/08*/ ex…

css使用mix-blend-mode的值difference實現內容和父節點反色

1. 使用場景 往往開發過程中&#xff0c;經常遇到產品說你這個背景圖和文字顏色太接近了&#xff0c;能不能適配下背景圖&#xff0c;讓用戶能夠看清具體內容是啥。 這么說吧&#xff0c;這種需求場景非常合理&#xff0c;因為你做開發就是要給用戶一個交代&#xff0c;給他們…

el-input 中 select 方法使用報錯:屬性“select”在類型“HTMLElement”上不存在

要解決該錯誤&#xff0c;需明確指定元素類型為 HTMLInputElement&#xff0c;因為 select() 方法屬于輸入元素。 步驟解釋&#xff1a; 類型斷言&#xff1a;使用 as HTMLInputElement 將元素類型斷言為輸入元素。 可選鏈操作符&#xff1a;保持 ?. 避免元素為 null 時出錯…

Mybatis Plus與SpringBoot的集成

Mybatis Plus與SpringBoot的集成 1.引入Maven 依賴2.配置application.yml文件3.創建實體類4.分頁插件5.邏輯刪除功能6.忽略特定字段7.自動填充 1.引入Maven 依賴 提前創建好一個SpringBoot項目&#xff0c;然后在項目中引入MyBatis Plus依賴 <dependency><groupId&g…

大數據學習(104)-clickhouse與hdfs

&#x1f34b;&#x1f34b;大數據學習&#x1f34b;&#x1f34b; &#x1f525;系列專欄&#xff1a; &#x1f451;哲學語錄: 用力所能及&#xff0c;改變世界。 &#x1f496;如果覺得博主的文章還不錯的話&#xff0c;請點贊&#x1f44d;收藏??留言&#x1f4dd;支持一…

【簡歷全景認知2】電子化時代對簡歷形式的降維打擊:從A4紙到ATS的生存游戲

一、當簡歷遇上數字洪流:傳統形式的式微 在1990年代,一份排版精美的紙質簡歷還能讓HR眼前一亮;但今天,超過75%的 Fortune 500 企業使用ATS(Applicant Tracking System)進行初篩,未優化的簡歷可能在5秒內就會淪為數字廢土。這種變遷本質上符合「技術接納生命周期」理論—…

esp32cam -> 服務器 | 手機 -> 服務器 直接服務器傳輸圖片

服務器先下載python &#xff1a; 一、Python環境搭建&#xff08;CentOS/Ubuntu通用&#xff09; 一條一條執行 安裝基礎依賴 # CentOS sudo yum install gcc openssl-devel bzip2-devel libffi-devel zlib-devel # Ubuntu sudo apt update && sudo apt install b…

SeaTunnel系列之:Apache SeaTunnel編譯和安裝

Apache SeaTunnel編譯 Prepare編譯克隆源代碼本地安裝子項目從源代碼構建 SeaTunnel構建子模塊安裝 JetBrains IDEA Scala 插件安裝 JetBrains IDEA Lombok 插件代碼風格運行簡單示例不僅如此 安裝下載 SeaTunnel 發布包下載連接器插件從源代碼構建 SeaTunnel 運行 SeaTunnel 在…

JavaScript/React中,...(三個連續的點)被稱為 擴展運算符(Spread Operator) 或 剩余運算符(Rest Operator)

const processOrder (order) > {const tax order.total * 0.1;const finalAmount order.total tax;return { ...order, tax, finalAmount }; }; 解釋一下&#xff0c;特別&#xff1a;...?在JavaScript/React中&#xff0c;...&#xff08;三個連續的點&#xff09;被稱…

FRP的proxies只是建立通道,相當于建立與服務器溝通的不同通道而不是直接將路由器與服務器云端溝通

沒有更好的辦法了嗎&#xff0c;我看frpc.toml的里面可以設置兩個proxies那我esp32的監聽端口設置在frpc.toml里面它不也能跟云服務器建立聯系嗎&#xff0c;比如遠程與本地端口都配置為5112那云服務器接收到的5112訪問會以frp配置的本地端口5112轉發到frp客戶端的路由器&#…

#在docker中啟動mysql之類的容器時,沒有掛載的數據...在后期怎么把數據導出外部

如果要導出 Docker 容器內的 整個目錄&#xff08;包含所有文件及子目錄&#xff09;&#xff0c;可以使用以下幾種方法&#xff1a; 方法 1&#xff1a;使用 docker cp 直接復制目錄到宿主機 適用場景&#xff1a;容器正在運行或已停止&#xff08;但未刪除&#xff09;。 命…

Java的JDK、JRE、JVM關系與作用

Java的JDK、JRE、JVM關系與作用 java中的JDK、JRE和JVM是三個核心組件&#xff0c;各自承擔不同角色&#xff0c;且存在層級依賴關系 1. JVM&#xff08;Java Virtual Machine&#xff0c;Java虛擬機&#xff09; 是什么&#xff1a; JVM是虛擬的計算機&#xff0c;能夠執行…

C++學習之套接字并發服務器

目錄 1.昨天套接字服務器的弊端 2.如何通過多進程方式實現服務器并發 3.多進程服務器-1 4.多進程服務器-2 5.多進程版程序-回收子進程被信號中斷的處理 6.多線程版TCP服務處理思路 7.多線程并發服務器編寫 8.為什么不能把文件描述符地址傳到子線程中 9.多線程程序測試 …

機器學習新范式:Kubernetes + Kubeflow,解鎖模型訓練與部署的高效密碼

一、Kubernetes在機器學習模型訓練與部署中的作用 Kubernetes作為一個強大的容器編排平臺&#xff0c;為機器學習模型的訓練與部署提供了以下核心支持&#xff1a; 分布式訓練支持&#xff1a;Kubernetes能夠自動化部署和管理PyTorch等機器學習框架的分布式訓練任務。通過利用…

動態科技感html導航網站源碼

源碼介紹 動態科技感html導航網站源碼&#xff0c;這個設計完美呈現了科幻電影中的未來科技界面效果&#xff0c;適合展示技術類項目或作為個人作品集的入口頁面&#xff0c;自適應手機。 修改卡片中的鏈接指向你實際的HTML文件可以根據需要調整卡片內容、圖標和顏色要添加更…

數字內容智能推薦優化策略

個性化推薦算法構建路徑 構建高效數字內容體驗的推薦系統&#xff0c;需以多源數據融合為基礎框架。首先通過用戶畫像建模整合人口屬性、行為軌跡及興趣標簽&#xff0c;結合協同過濾與深度學習算法建立內容關聯矩陣。在此基礎上&#xff0c;引入上下文感知機制&#xff0c;動…

# 深度學習中的優化算法詳解

深度學習中的優化算法詳解 優化算法是深度學習的核心組成部分&#xff0c;用于最小化損失函數以更新神經網絡的參數。本文將詳細介紹深度學習中常用的優化算法&#xff0c;包括其概念、數學公式、代碼示例、實際案例以及圖解&#xff0c;幫助讀者全面理解優化算法的原理與應用…