Shoal框架:Aptos上Bullshark延遲優化突破

Shoal框架:如何降低Aptos上Bullshark的延遲

Aptos Labs解決了DAG BFT中兩個重要的開放問題,大大降低了延遲,並首次在確定性實際協議中消除了對超時的需求。總體上,在無故障情況下將Bullshark的延遲改進了40%,在故障情況下改進了80%。

Shoal是一個框架,通過流水線和領導者聲譽增強任何基於Narwhal的共識協議(如DAG-Rider、Tusk、Bullshark)。流水線通過每輪引入錨點來減少DAG排序延遲,領導者聲譽通過確保錨點與最快的驗證節點關聯來進一步改善延遲問題。此外,領導者聲譽使Shoal能夠利用異步DAG構造來消除所有場景中的超時。這允許Shoal提供普遍響應的屬性,包含通常需要的樂觀響應。

這項技術非常簡單,涉及按順序運行底層協議的多個實例。因此,使用Bullshark實例化時,我們得到一羣正在進行接力賽的"鯊魚"。

萬字詳解Shoal框架:如何減少Aptos上的Bullshark延遲?

背景

在追求區塊鏈網路高性能時,人們一直關注降低通信復雜性。然而,這種方法並沒有導致吞吐量的顯著提高。例如,Diem早期版本中實現的Hotstuff僅實現了3500 TPS,遠低於100k+ TPS的目標。

最近的突破源於認識到數據傳播是基於領導者協議的主要瓶頸,可以從並行化中受益。Narwhal系統將數據傳播與核心共識邏輯分離,提出所有驗證者同時傳播數據,而共識組件僅訂購少量元數據的架構。Narwhal論文報告了160,000 TPS的吞吐量。

之前介紹的Quorum Store是Narwhal的實現,將數據傳播與共識分離,用於擴展當前的共識協議Jolteon。Jolteon是基於領導者的協議,結合了Tendermint的線性快速路徑和PBFT風格的視圖變更,將Hotstuff延遲降低33%。然而,基於領導者的共識協議無法充分利用Narwhal的吞吐量潛力。

因此,決定在Narwhal DAG之上部署Bullshark,這是一種零通信開銷的共識協議。不幸的是,支持Bullshark高吞吐量的DAG結構與Jolteon相比帶來了50%的延遲代價。

本文介紹Shoal如何大幅減少Bullshark延遲。

萬字詳解Shoal框架:如何減少Aptos上的Bullshark延遲?

DAG-BFT背景

Narwhal DAG中的每個頂點都與一個輪數關聯。爲進入第r輪,驗證者必須先獲得第r-1輪的n-f個頂點。每個驗證者每輪可廣播一個頂點,每個頂點至少引用前一輪的n-f個頂點。由於網路異步性,不同驗證者可能在任何時間點觀察到DAG的不同本地視圖。

DAG的一個關鍵屬性是非模糊性:如果兩個驗證節點在DAG本地視圖中具有相同的頂點v,那麼它們具有完全相同的v因果歷史。

萬字詳解Shoal框架:如何減少Aptos上的Bullshark延遲?

全序

可以在無額外通信開銷的情況下就DAG中所有頂點的全序達成一致。爲此,DAG-Rider、Tusk和Bullshark中的驗證者將DAG結構解釋爲共識協議,其中頂點代表提案,邊代表投票。

所有現有基於Narwhal的共識協議都具有以下結構:

  1. 預定錨點:每隔幾輪就有預先確定的領導者,領導者的頂點稱爲錨點。

  2. 排序錨點:驗證者獨立但確定性地決定訂購哪些錨點以及跳過哪些錨點。

  3. 排序因果歷史:驗證者一個接一個處理有序錨點列表,對每個錨點的因果歷史中所有先前無序頂點按確定性規則排序。

滿足安全性的關鍵是確保在步驟(2)中,所有誠實驗證節點創建的有序錨點列表共享相同前綴。Shoal對所有這些協議做出以下觀察:

所有驗證者都同意第一個有序的錨點。

Bullshark延遲

Bullshark的延遲取決於DAG中有序錨點之間的輪數。雖然部分同步版本比異步版本延遲更好,但遠非最佳。

問題1:平均塊延遲。Bullshark中每個偶數輪有一個錨點,每個奇數輪頂點被解釋爲投票。常見情況下需要兩輪DAG才能訂購錨點,然而錨點因果歷史中的頂點需要更多輪次等待錨點排序。通常奇數輪頂點需要三輪,偶數輪非錨點頂點需要四輪。

問題2:故障案例延遲。如果一輪領導者未能足夠快廣播錨點,則無法對錨點排序(被跳過),前幾輪所有未排序頂點必須等待下一個錨點排序。這顯著降低了地理復制網路的性能,特別是因爲Bullshark使用超時等待領導者。

萬字詳解Shoal框架:如何減少Aptos上的Bullshark延遲?

Shoal框架

Shoal通過流水線增強Bullshark(或任何其他基於Narwhal的BFT協議),允許每輪都有錨點,將DAG中所有非錨點頂點的延遲減少到三輪。Shoal還在DAG中引入零開銷領導者聲譽機制,偏向選擇快速領導者。

挑戰

DAG協議背景下,流水線和領導者聲譽被認爲是困難問題,原因如下:

  1. 之前的流水線嘗試修改核心Bullshark邏輯,但似乎本質上是不可能的。

  2. 領導者聲譽在DiemBFT中引入並在Carousel中正式化,根據驗證者過去表現動態選擇未來領導者(Bullshark中的錨)。雖然在領導者身分上存在分歧不違反這些協議安全性,但在Bullshark中可能導致完全不同的排序,這引出了問題核心:動態確定性選擇輪錨是解決共識所需的,而驗證者需要就有序歷史達成一致以選擇未來錨。

作爲問題難度的證據,Bullshark的實現(包括目前生產環境中的)都不支持這些特性。

協議

Shoal依靠在DAG上執行本地計算的能力,實現了保存和重新解釋前幾輪信息的能力。憑藉所有驗證者都同意第一個有序錨點的洞察,Shoal按順序組合多個Bullshark實例進行流水線處理,使得(1)第一個有序錨點是實例切換點,(2)錨點的因果歷史用於計算領導者聲譽。

流水線

與Bullshark類似,驗證者先驗地就潛在錨點達成一致,即有已知映射F:R->V將輪次映射到領導者。Shoal一個接一個運行Bullshark實例,每個實例的錨由映射F預先確定。每個實例都訂購一個錨,觸發切換到下一個實例。

最初,Shoal在DAG第一輪啓動Bullshark第一個實例並運行直到確定第一個有序錨點,比如在第r輪。所有驗證者都同意這個錨點。因此,所有驗證者都可以確定地同意從第r+1輪重新解釋DAG。Shoal只是在第r+1輪啓動新的Bullshark實例。

最好情況下,這允許Shoal每輪都訂購一個錨。第一輪錨點由第一個實例排序。然後,Shoal在第二輪開始新實例,它本身有一個錨點,該錨由該實例排序,然後另一個新實例在第三輪中訂購錨點,過程繼續。

萬字詳解Shoal框架:如何減少Aptos上的Bullshark延遲?

領導者聲譽

當在Bullshark排序期間跳過錨點時,延遲會增加。在這種情況下,流水線無能爲力,因爲在前一個實例訂購錨點之前無法啓動新實例。Shoal通過使用聲譽機制根據每個驗證節點最近活動歷史分配分數來確保將來不太可能選擇相應的領導者來處理丟失的錨點。響應並參與協議的驗證者獲得高分,否則分配低分,因爲它可能崩潰、緩慢或作惡。

其理念是在每次分數更新時,確定性地重新計算從輪次到領導者的預定義映射F,偏向得分較高的領導者。爲讓驗證者在新映射上達成一致,它們應該在分數上達成一致,從而在用於派生分數的歷史上達成一致。

在Shoal中,流水線和領導聲譽可以自然結合,因爲它們都使用相同的核心技術,即在就第一個有序錨點達成一致後重新解釋DAG。

唯一區別是,在第r輪對錨點排序後,驗證者只需根據第r輪有序錨點的因果歷史,從第r+1輪開始計算新的映射F'。然後,驗證節點從第r+1輪開始使用更新的錨點選擇函數F'執行Bullshark的新實例。

萬字詳解Shoal框架:如何減少Aptos上的Bullshark延遲?

無超時

超時在所有基於領導者的確定性部分同步BFT實現中起着關鍵作用。然而,它們引入的復雜性增加了需要管理和觀察的內部狀態數量,增加了調試復雜性,需要更多可觀察性技術。

超時也會顯著增加延遲,因爲正確配置它們很重要,通常需要動態調整,高度依賴環境(網路)。在轉移到下一個領導者之前,協議會爲有故障領導者支付完整的超時延遲懲罰。因此,超時設置不能過於保守,但如果太短,協議可能跳過好的領導者。例如,我們觀察到在高負載下,Jolteon/Hotstuff中的領導者不堪重負,在推動進展之前超時就已到期。

不幸的是,基於領導者的協議(如Hotstuff和Jolteon)本質上需要超時,以確保每次領導者故障時協議都能取得進展。沒有超時,即使崩潰的領導者也可能永遠停止協議。由於在異步期間無法區分故障領導者和緩慢領導者,超時可能導致驗證節點在沒有共識活躍度的情況下更改所有領導者。

在Bullshark中,超時用於DAG構造,以確保在同步期間誠實領導者足夠快地將錨點添加到DAG以進行排序。

我們觀察到DAG構造提供了估計網路速度的"時鍾"。在無暫停情況下,只要n-f個誠實驗證者繼續向DAG添加頂點,輪次就會繼續前進。雖然Bullshark可能無法以網路速度排序(由於領導者問題),但DAG仍以網路速度增長,盡管一些領導者有問題或網路異步。最終,當無故障領導者足夠快地廣播錨點時,錨點的整個因果歷史將被排序。

在我們的評估中,比較了Bullshark在以下情況下有無超時:

  1. 快速領導者:至少比其他驗證者更快。兩種方法提供相同延遲,因爲錨有序且不使用超時。

  2. 錯誤領導者:無超時Bullshark提供更好延遲,因爲驗證節點立即跳過其

APT-1.68%
查看原文
此頁面可能包含第三方內容,僅供參考(非陳述或保證),不應被視為 Gate 認可其觀點表述,也不得被視為財務或專業建議。詳見聲明
  • 讚賞
  • 4
  • 轉發
  • 分享
留言
0/400
HashRateHermitvip
· 21小時前
延迟改进80%?这波牛哇
回復0
SelfRuggervip
· 21小時前
80%延迟减少 马爹看了都喊牛
回復0
社区混子王vip
· 21小時前
牛啤 延迟都优化80%了
回復0
Hash_Banditvip
· 21小時前
真是的,这就像我们在2013年优化比特币挖矿难度时一样…… 哈希率大幅提升。
查看原文回復0
交易,隨時隨地
qrCode
掃碼下載 Gate APP
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)