在第一部分中,我們研究了經典 PBFT(實用拜佔庭容錯)共識的工作原理以及早期版本的 HotStuff 運行方式。我們還了解了 MonadBFT 如何解決 HotStuff 的尾部分叉問題,即在流水線系統中有效區塊有時會被丟棄的問題。這種尾叉問題造成兩個主要問題:1) 它擾亂了誠實區塊構建者的獎勵,2) 可能會導致網路停滯。MonadBFT 引入了重新提議規則和無背書投票投票機制來消除尾部分叉問題,確保任何來自誠實提議者的經適當批準的區塊都能進入鏈中。在第二部分中,我們將探討 MonadBFT 的另外兩個特性:1) 投機最終性和 2) 樂觀響應性。我們還將探討 MonadBFT 對開發者的影響。單輪投機最終性除了抵抗尾部分叉外,MonadBFT 的另一個主要特性是單輪投機最終性。在實際應用中,這意味着客戶端和用戶可以在區塊獲得絕大多數投票後立即收到交易確認,甚至在下一輪完成之前。回想一下,在基線 HotStuff 協議中,一個區塊通常要經過至少兩個階段(如 Fast-Hotstuff 和 Diem-BFT)才被視爲最終確定(不可逆轉):一個階段獲得法定人數證書(QC)(以 ≥2f+1 票鎖定區塊),第二個階段是下一位領導者基於該法定人數證書(QC)構建並提交區塊。這種兩階段提交是確保安全性所必需的:一旦有足夠多的誠實節點鎖定了一個區塊,與之衝突的區塊無法獲得法定人數,而下一輪的提交將使其永久化。因此,客戶端通常可能需要等待下一個區塊或下一輪產生後,才能知道上一個交易是否最終確定。MonadBFT 基本上允許交易只經過一輪投票就被認爲最終足夠(可以安全操作)。這就是所謂的投機最終性。當領導者提出一個區塊,驗證者投票形成該區塊的 QC 時,該區塊就處於已投票狀態(已被法定人數鎖定)。在 MonadBFT 中,驗證者一旦形成 QC,就會立即執行該區塊的交易,甚至會向客戶端發送初步確認,表明該區塊被(投機性地)接受。這就像在說“我們有絕大多數人同意這個區塊。除非發生非常意外的情況,否則可以認爲這個區塊已確認。”這種即時確認是樂觀的。區塊尚未在帳本中提交。這將在下一個提議出現並最確認它(QC-on QC),但在正常情況下,沒有什麼會撤銷它。唯一能撤銷投機性執行區塊的情況是領導者發生等價攻擊(即在同一高度提出兩個不同的區塊來分散投票)。你可以把投機最終性看作是抵抗尾部分叉的一個很好的副產品。 抵抗尾部分叉保證即使下一個領導者崩潰,當前的提議也不會被丟棄(這歸功於重新提議和 NEC 規則)。投機性執行區塊被丟棄的唯一情況是原始提議者發生等價攻擊(可證明惡意的雙籤錯誤),而這種情況:1) 可通過衝突 QC 檢測到;2) 可懲罰;3) 極爲罕見。在之前的協議中,它們不保證下一個領導者會重新提出上一個區塊,因此尾部分叉是可能的,從而打破了投機假設。樂觀響應性在大多數共識協議中,每輪之後都會有一個內置的等待,比如緩衝期或超時。這是爲了確保所有消息在繼續推進之前都已到達。這是一種保護機制,旨在處理最壞的情況,比如領導者崩潰或根本沒發送任何信息。這些超時通常過於保守。如果網路正常運行且所有驗證者行爲正確,那麼固定的等待就會成爲不必要的開銷。區塊本可以更快完成,但協議卻爲了以防萬一而延遲了。MonadBFT 引入了樂觀響應性,這意味着協議可以基於網路信息立即前進,而不是總依賴固定的計時器。這裏的設計原則可以概括爲 “能快則快,必須耐心時才耐心"”。MonadBFT 的設計使其在正常情況下,甚至在故障恢復時,如果沒有必要,它不會暫停等待預定的超時。在快樂路徑上(意味着我們有一個誠實的領導者): 在提議或投票中沒有內置延遲。一旦輪到領導者,它就會提出一個區塊。驗證者一收到有效提議,就會立即投票。當領導者(或者更確切地說,下一個領導者,因爲在流水線 HotStuff 中,投票會發送給下一個提議者)收集到 2f+1 票時,QC 形成,並可以傳播。在樂觀響應性設計中,這會立即觸發下一階段。在實踐中,這意味着如果節點之間的網路延遲是 100 毫秒,那麼共識可能只需幾百毫秒就能完成一輪(加上計算和聚合開銷)。如果不需要,它不會等待,例如,整整一秒的"時隙時間"。這與以太坊主網採用的 slot-and-epoch model 不同。在以太坊上,區塊生產的時間間隔固定爲 12 秒。即使每個人都提前準備好了,協議也會等待。MonadBFT 的方法消除了不必要的延遲。它保留了流水線 HotStuff 結構,但移除了正常情況下 “必須等待 Δ 秒 ”的硬性規定。這意味着它可以在不犧牲安全性的前提下,在在響應性方面可以優於時間約束系統。在不快樂路徑上(領導者失敗): 在許多共識協議中,當領導者未能提出區塊時,其他節點只有在超時 Δ 之後才會意識到這一點。例如,如果 Δ 爲 1 秒,那麼這段時間基本上就浪費了。MonadBFT 的處理方式與此不同。當驗證者檢測到提議丟失時,它們會立即廣播超時消息(TC 或超時證書)。一旦出現 2f+1 次超時,下一個領導者就會接管。向新觀點的過渡是由基於法定人數的證據觸發的,而不是由時鍾觸發的。與 hotstuff-family 共識的比較MonadBFT 建立在 HotStuff 系列共識協議的基礎之上,但又通過實現一系列理想特性的組合而脫穎而出。 早期協議通常針對某些維度進行優化,如流水線吞吐量或線性通信,但不得不犧牲其他方面。MonadBFT 獨一無二地將線性消息復雜性、流水線提交、強大的尾部分叉抵抗、無固定延遲的即時響應性和高效恢復機制結合在一起,同時還保留了快速最終確定和高可用性保證。下表總結了 MonadBFT 與其他輪換領導 BFT 協議在這些關鍵維度上比較:這對開發者和用戶意味着什麼?對於開發者,MonadBFT 意味着幾點:更簡單的最終確定性模型: 使用 MonadBFT,您可以將具有QC(絕大多數投票)的區塊視爲實際上已最終確定,因爲協議將最終確定它或進行懲罰。開發者可以高度自信地安全操作 1 區塊確認。改善應用的用戶體驗: 如果您正在構建一個高吞吐量的應用程序(交易所、遊戲等),MonadBFT 的低延遲和抵抗分叉特性將轉化爲更流暢的用戶體驗。用戶幾乎可以立即看到他們的操作得到確認,而且不會經常遇到令人困惑的重組或回滾。這樣,您就可以設計出具有最終確定性和快速更新的應用。確定性行爲: MonadBFT 更嚴格的規則(如重新提議要求)減少了區塊包含的不確定性。由於投票或超時是否先到達領導者等微妙的時間因素,區塊被包含或跳過的 “邊緣情況”更少。MonadBFT 用明確的規則和可驗證的證據替代了這種對時間敏感的模糊性。這使得推理協議的正確性和測試變得更加容易。它還爲識別故障節點提供了明確的依據(例如,如果有人未能重新提議或提議了衝突區塊,您就知道他們違反了協議)。可擴展性空間: 如果您是一個關注擴展性的開發者,MonadBFT 在遇到瓶頸之前爲您提供更多空間。與二次協議相比,您可以更輕鬆地增加區塊大小或驗證者數量。而且像擦除編碼區塊傳播等功能意味着您可以通過網路推送大量數據,而不會過度消耗單個節點。這使得瞄準更高吞吐量成爲可能,爲更雄心勃勃的鏈上應用打開設計空間。針對最終用戶: 普通用戶不會了解我們在這裏討論的任何內容,但他們會感受到其影響。有了 MonadBFT 作爲 Monad 鏈的基礎,用戶就可以在不犧牲去中心化和抵制審查的前提下,期待以下所有好的特性。更快的確認: 交易(如發送代幣、交換資產、鑄造 NFT、執行交易)將快速得到確認。減少意外: 鏈狀態的一致性更高,因爲像尾部分叉這類本質上屬於重組的東西被消除了。公平和透明: 共識的改善間接意味着鏈的運行更加公平。任何單個驗證者都不能輕易審查交易或在區塊間的排序上做手腳。結論總結一下,MonadBFT 在流水線 HotStuff 風格共識的基礎上引入了四項核心創新:抵抗尾部分叉: MonadBFT 是首個消除尾部分叉攻擊的流水線 BFT 協議。它通過下一任領導者在上一任領導者失敗的情況下重新提出上次投票的區塊,或出示無背書證書(NEC),證明該區塊缺乏支持,從而實現這一目標。這就保證了任何獲得絕大多數支持的區塊都不會被丟棄,從而保護誠實領導者的獎勵,並防止惡意重組和跨區塊 MEV 提取。單輪投機最終性: 驗證者可以在單輪通信(一個領導者提議和投票)後確認區塊,爲客戶端提供即時的包含保證。這種投機性確認只有在領導者等價攻擊(可以被證明和懲罰的行爲)時才會恢復,使其在實踐中成爲安全假設。樂觀響應性: 協議以網路速度運行,無固有延遲。領導者在收到必要投票後立即推進共識,視圖變更在觀察到法定人數的超時後立即發生,而不是等待固定的超時間隔。這種樂觀響應性設計最小化等待時間並最大化吞吐量,同時在發生異步和故障時仍然能夠穩健處理。線性通信: 在快樂路徑上(即領導者是誠實的),消息和驗證的復雜性與驗證者數量呈線性關係。MonadBFT 保留了 HotStuff 的高效通信模式,使用聚合籤名和簡單的領導者對驗證者廣播,使協議能夠擴展到數百個驗證者而不會出現性能瓶頸。
MonadBFT 解析(下):對開發者和用戶意味着什麼
在第一部分中,我們研究了經典 PBFT(實用拜佔庭容錯)共識的工作原理以及早期版本的 HotStuff 運行方式。我們還了解了 MonadBFT 如何解決 HotStuff 的尾部分叉問題,即在流水線系統中有效區塊有時會被丟棄的問題。
這種尾叉問題造成兩個主要問題:1) 它擾亂了誠實區塊構建者的獎勵,2) 可能會導致網路停滯。
MonadBFT 引入了重新提議規則和無背書投票投票機制來消除尾部分叉問題,確保任何來自誠實提議者的經適當批準的區塊都能進入鏈中。
在第二部分中,我們將探討 MonadBFT 的另外兩個特性:1) 投機最終性和 2) 樂觀響應性。我們還將探討 MonadBFT 對開發者的影響。
單輪投機最終性
除了抵抗尾部分叉外,MonadBFT 的另一個主要特性是單輪投機最終性。
在實際應用中,這意味着客戶端和用戶可以在區塊獲得絕大多數投票後立即收到交易確認,甚至在下一輪完成之前。
回想一下,在基線 HotStuff 協議中,一個區塊通常要經過至少兩個階段(如 Fast-Hotstuff 和 Diem-BFT)才被視爲最終確定(不可逆轉):一個階段獲得法定人數證書(QC)(以 ≥2f+1 票鎖定區塊),第二個階段是下一位領導者基於該法定人數證書(QC)構建並提交區塊。
這種兩階段提交是確保安全性所必需的:一旦有足夠多的誠實節點鎖定了一個區塊,與之衝突的區塊無法獲得法定人數,而下一輪的提交將使其永久化。因此,客戶端通常可能需要等待下一個區塊或下一輪產生後,才能知道上一個交易是否最終確定。
MonadBFT 基本上允許交易只經過一輪投票就被認爲最終足夠(可以安全操作)。這就是所謂的投機最終性。
當領導者提出一個區塊,驗證者投票形成該區塊的 QC 時,該區塊就處於已投票狀態(已被法定人數鎖定)。在 MonadBFT 中,驗證者一旦形成 QC,就會立即執行該區塊的交易,甚至會向客戶端發送初步確認,表明該區塊被(投機性地)接受。這就像在說“我們有絕大多數人同意這個區塊。除非發生非常意外的情況,否則可以認爲這個區塊已確認。”
這種即時確認是樂觀的。區塊尚未在帳本中提交。這將在下一個提議出現並最確認它(QC-on QC),但在正常情況下,沒有什麼會撤銷它。唯一能撤銷投機性執行區塊的情況是領導者發生等價攻擊(即在同一高度提出兩個不同的區塊來分散投票)。
你可以把投機最終性看作是抵抗尾部分叉的一個很好的副產品。 抵抗尾部分叉保證即使下一個領導者崩潰,當前的提議也不會被丟棄(這歸功於重新提議和 NEC 規則)。投機性執行區塊被丟棄的唯一情況是原始提議者發生等價攻擊(可證明惡意的雙籤錯誤),而這種情況:1) 可通過衝突 QC 檢測到;2) 可懲罰;3) 極爲罕見。
在之前的協議中,它們不保證下一個領導者會重新提出上一個區塊,因此尾部分叉是可能的,從而打破了投機假設。
樂觀響應性
在大多數共識協議中,每輪之後都會有一個內置的等待,比如緩衝期或超時。這是爲了確保所有消息在繼續推進之前都已到達。這是一種保護機制,旨在處理最壞的情況,比如領導者崩潰或根本沒發送任何信息。
這些超時通常過於保守。如果網路正常運行且所有驗證者行爲正確,那麼固定的等待就會成爲不必要的開銷。區塊本可以更快完成,但協議卻爲了以防萬一而延遲了。
MonadBFT 引入了樂觀響應性,這意味着協議可以基於網路信息立即前進,而不是總依賴固定的計時器。這裏的設計原則可以概括爲 “能快則快,必須耐心時才耐心"”。
MonadBFT 的設計使其在正常情況下,甚至在故障恢復時,如果沒有必要,它不會暫停等待預定的超時。
在快樂路徑上(意味着我們有一個誠實的領導者): 在提議或投票中沒有內置延遲。一旦輪到領導者,它就會提出一個區塊。驗證者一收到有效提議,就會立即投票。當領導者(或者更確切地說,下一個領導者,因爲在流水線 HotStuff 中,投票會發送給下一個提議者)收集到 2f+1 票時,QC 形成,並可以傳播。在樂觀響應性設計中,這會立即觸發下一階段。
在實踐中,這意味着如果節點之間的網路延遲是 100 毫秒,那麼共識可能只需幾百毫秒就能完成一輪(加上計算和聚合開銷)。
如果不需要,它不會等待,例如,整整一秒的"時隙時間"。這與以太坊主網採用的 slot-and-epoch model 不同。在以太坊上,區塊生產的時間間隔固定爲 12 秒。即使每個人都提前準備好了,協議也會等待。
MonadBFT 的方法消除了不必要的延遲。它保留了流水線 HotStuff 結構,但移除了正常情況下 “必須等待 Δ 秒 ”的硬性規定。這意味着它可以在不犧牲安全性的前提下,在在響應性方面可以優於時間約束系統。
在不快樂路徑上(領導者失敗): 在許多共識協議中,當領導者未能提出區塊時,其他節點只有在超時 Δ 之後才會意識到這一點。例如,如果 Δ 爲 1 秒,那麼這段時間基本上就浪費了。MonadBFT 的處理方式與此不同。當驗證者檢測到提議丟失時,它們會立即廣播超時消息(TC 或超時證書)。一旦出現 2f+1 次超時,下一個領導者就會接管。向新觀點的過渡是由基於法定人數的證據觸發的,而不是由時鍾觸發的。
與 hotstuff-family 共識的比較
MonadBFT 建立在 HotStuff 系列共識協議的基礎之上,但又通過實現一系列理想特性的組合而脫穎而出。 早期協議通常針對某些維度進行優化,如流水線吞吐量或線性通信,但不得不犧牲其他方面。MonadBFT 獨一無二地將線性消息復雜性、流水線提交、強大的尾部分叉抵抗、無固定延遲的即時響應性和高效恢復機制結合在一起,同時還保留了快速最終確定和高可用性保證。下表總結了 MonadBFT 與其他輪換領導 BFT 協議在這些關鍵維度上比較:
這對開發者和用戶意味着什麼?
對於開發者,MonadBFT 意味着幾點:
更簡單的最終確定性模型: 使用 MonadBFT,您可以將具有QC(絕大多數投票)的區塊視爲實際上已最終確定,因爲協議將最終確定它或進行懲罰。開發者可以高度自信地安全操作 1 區塊確認。
改善應用的用戶體驗: 如果您正在構建一個高吞吐量的應用程序(交易所、遊戲等),MonadBFT 的低延遲和抵抗分叉特性將轉化爲更流暢的用戶體驗。用戶幾乎可以立即看到他們的操作得到確認,而且不會經常遇到令人困惑的重組或回滾。這樣,您就可以設計出具有最終確定性和快速更新的應用。
確定性行爲: MonadBFT 更嚴格的規則(如重新提議要求)減少了區塊包含的不確定性。由於投票或超時是否先到達領導者等微妙的時間因素,區塊被包含或跳過的 “邊緣情況”更少。MonadBFT 用明確的規則和可驗證的證據替代了這種對時間敏感的模糊性。這使得推理協議的正確性和測試變得更加容易。它還爲識別故障節點提供了明確的依據(例如,如果有人未能重新提議或提議了衝突區塊,您就知道他們違反了協議)。
可擴展性空間: 如果您是一個關注擴展性的開發者,MonadBFT 在遇到瓶頸之前爲您提供更多空間。與二次協議相比,您可以更輕鬆地增加區塊大小或驗證者數量。而且像擦除編碼區塊傳播等功能意味着您可以通過網路推送大量數據,而不會過度消耗單個節點。這使得瞄準更高吞吐量成爲可能,爲更雄心勃勃的鏈上應用打開設計空間。
針對最終用戶: 普通用戶不會了解我們在這裏討論的任何內容,但他們會感受到其影響。有了 MonadBFT 作爲 Monad 鏈的基礎,用戶就可以在不犧牲去中心化和抵制審查的前提下,期待以下所有好的特性。
更快的確認: 交易(如發送代幣、交換資產、鑄造 NFT、執行交易)將快速得到確認。
減少意外: 鏈狀態的一致性更高,因爲像尾部分叉這類本質上屬於重組的東西被消除了。
公平和透明: 共識的改善間接意味着鏈的運行更加公平。任何單個驗證者都不能輕易審查交易或在區塊間的排序上做手腳。
結論
總結一下,MonadBFT 在流水線 HotStuff 風格共識的基礎上引入了四項核心創新:
抵抗尾部分叉: MonadBFT 是首個消除尾部分叉攻擊的流水線 BFT 協議。它通過下一任領導者在上一任領導者失敗的情況下重新提出上次投票的區塊,或出示無背書證書(NEC),證明該區塊缺乏支持,從而實現這一目標。這就保證了任何獲得絕大多數支持的區塊都不會被丟棄,從而保護誠實領導者的獎勵,並防止惡意重組和跨區塊 MEV 提取。
單輪投機最終性: 驗證者可以在單輪通信(一個領導者提議和投票)後確認區塊,爲客戶端提供即時的包含保證。這種投機性確認只有在領導者等價攻擊(可以被證明和懲罰的行爲)時才會恢復,使其在實踐中成爲安全假設。
樂觀響應性: 協議以網路速度運行,無固有延遲。領導者在收到必要投票後立即推進共識,視圖變更在觀察到法定人數的超時後立即發生,而不是等待固定的超時間隔。這種樂觀響應性設計最小化等待時間並最大化吞吐量,同時在發生異步和故障時仍然能夠穩健處理。
線性通信: 在快樂路徑上(即領導者是誠實的),消息和驗證的復雜性與驗證者數量呈線性關係。MonadBFT 保留了 HotStuff 的高效通信模式,使用聚合籤名和簡單的領導者對驗證者廣播,使協議能夠擴展到數百個驗證者而不會出現性能瓶頸。