在第1部分,我們研究了經典PBFT共識的工作原理以及早期版本的HotStuff是如何運作的。我們還研究了MonadBFT是如何解決HotStuff的尾部分叉問題的,這是一個在流水線系統中,有效區塊有時會被落下的問題。
這個尾隨分叉問題造成了兩個大問題:1)它搞亂了誠實塊構建者的獎勵,2)可能會導致網路停滯。
MonadBFT引入了Reproposal規則和No-Endorsement投票機制,以消除尾分叉問題,確保來自誠實提議者的任何正確批準的區塊都將始終進入鏈中。
在第2部分中,我們將探討MonadBFT的另外兩個特徵,即1)投機性終局和2)樂觀的響應能力。我們還將探討MonadBFT對開發人員的影響。
除了尾叉抗拒外,MonadBFT的另一個重要特性是在單一輪內的猜測性最終性。
在實際操作中,這意味着客戶和用戶可以在區塊獲得超過半數的投票後立即收到交易確認,甚至在下一輪完成之前。
回想一下,在協議基線HotStuff中,一個塊通常不被認爲是最終的(不可逆)直到它經歷了至少兩個階段(例如Fast-Hotstuff和Diem-BFT):第一階段獲得法定證書(用≥2f+1票鎖定塊),第二階段下一位領導者在此基礎上構建並承諾該塊。
爲了確保安全性,需要進行兩階段提交:一旦足夠多的誠實節點鎖定了一個區塊,就不會有衝突的區塊能夠獲得法定人數,下一輪的提交會使其變爲永久。因此,通常情況下,客戶端可能需要等待下一個區塊或下一輪產生之前,才能確定上一筆交易是否最終完成。
MonadBFT基本上允許交易在經過一輪投票後被認爲足夠最終(安全執行)。這稱爲推測性最終性。
當領導者提出一個區塊並且驗證者投票形成一個QC來確認該區塊時,該區塊現在處於已投票狀態(被法定人數鎖定)。在MonadBFT中,驗證者將在形成QC後立即執行該區塊的交易,甚至向客戶端發送初步確認,表明該區塊已(推測性地)被接受。這就像在說:“我們有絕對多數人同意這個區塊。除非發生非常意外的事情,否則請將此區塊視爲已確認。”
這種即時確認是樂觀的。區塊尚未在帳本中提交。當下一個提案到來並最終確定(QC-on QC)時,區塊將被提交,但在正常情況下,沒有任何事情會撤銷它。唯一可以撤銷具有推測性執行的區塊的情況是如果領導者出現了矛盾(即在同一高度提出了兩個不同的區塊以分割投票)。
您可以將投機性最終性視爲尾部分叉抵抗的一個很好的副產品。尾部分叉抵抗可保證即使下一個領導者崩潰,當前提案也不會被放棄(這要歸功於再提案和NEC規則)。因此,只有在原始提案者出現二義性(經過證明是惡意的雙籤名故障)時,投機執行的區塊才會被丟棄:1)可以通過衝突的QCs檢測,2)可被懲罰,3)極其罕見。
在以前的協議中,他們並沒有保證下一個領導者會重新提出上一個區塊,因此尾部分叉是可能的,打破了推測的假設。
在大多數共識協議中,每輪後都會有一個內置的等待時間,就像一個緩衝期或超時。這是爲了確保所有消息都已到達,然後再繼續前進。這是一種保護機制,旨在處理最壞的情況,比如當領導者崩潰或根本不發送任何消息時。
這些超時通常過於保守。如果網路正常運行且所有驗證者行爲正確,則固定等待就變得不必要。區塊本可以更快被最終確認,但協議爲防萬一而減緩了速度。
MonadBFT引入了樂觀的響應性,這意味着協議可以立即基於網路消息進行推進,而不總是依賴固定的定時器。這裏的設計原則可以概括爲“能快時快,必須耐心時耐心”。
MonadBFT被設計成這樣,即使在正常情況下,甚至在從故障中恢復時,如果沒有必要,它也不會暫停預定的超時。
實際上,這意味着如果節點之間的網路延遲爲100毫秒,共識可能僅需幾百毫秒就能完成一輪(加上計算和聚合開銷)。
如果沒有必要,它不會等待完整的一秒鍾“時隙時間”。這與以太坊主網形成對比,後者遵循時隙和紀元模型在以太坊上,區塊生產固定在12秒間隔。即使所有人都準備好了,協議也會等待。
MonadBFT的方法消除了不必要的延遲。它保留了流水線式的HotStuff結構,但在正常情況下取消了剛性的“你必須等待Δ秒”的規則。這意味着它可以在響應性方面勝過時間限制系統,而不會犧牲安全性。
MonadBFT 建立在 HotStuff 系列共識協議的血統之上,但通過實現理想的屬性組合而脫穎而出,而以前的設計無法在不進行權衡的情況下完全集成這些屬性。早期的協議通常針對某些維度(如流水線吞吐量或線性通信)進行了優化,但不得不犧牲其他維度。MonadBFT 獨特地將線性消息傳遞復雜性、流水線提交、強大的尾部分叉阻力、無固定延遲的即時響應和高效的恢復機制相結合,同時保持快速確定性和高活躍性保證。下表總結了 MonadBFT 在這些關鍵維度上與其他輪換領導者 BFT 協議的比較:
對於開發人員來說,MonadBFT 意味着兩件事:
對於最終用戶:一個普通用戶可能不了解我們在這裏討論的任何內容,但他們會感受到它的影響。在Monad鏈的支撐下,用戶可以期待以下所有良好的特性,而不會犧牲去中心化和抗審查性能。
簡而言之,MonadBFT在流水線式HotStuff共識的基礎上引入了四項核心創新:
尾部分叉抵抗力:MonadBFT是第一個流水線式BFT協議,可消除尾部分叉攻擊。它通過要求下一位領導者在前任領導者失敗時重新提議最後投票的區塊,或者以無背書證書(NEC)作爲證明,表明該區塊缺乏支持來實現這一點。這確保不會放棄超多數背書的區塊,保護誠實領導者的獎勵,並防止惡意重組和跨區塊MEV提取。
一輪推測性最終性:驗證者可以在一輪通信後確認一個區塊(一個領導者提案和投票),爲客戶提供即時的包含確認。這種推測性確認只有在領導者發生否認的情況下才會撤銷(這種行爲可以被證明並受到懲罰),在實踐中這是一個安全的假設。
樂觀響應:該協議以網路速度運行,沒有固有延遲。領導者一旦收到必要的投票就會推進共識,並且在觀察到超時的法定人數後,視圖更改會立即發生,而不是等待固定的超時間隔。這種樂觀響應設計最大限度地減少等待時間,最大化吞吐量,同時在異步性和故障發生時穩健地處理。
線性通信:在快樂路徑上(意味着領導者誠實),消息和認證復雜度與驗證者數量呈線性關係。MonadBFT保留了HotStuff的高效通信模式,使用聚合籤名和簡單的領導者到驗證者的廣播,這使得協議能夠在不影響性能的情況下擴展到數百個驗證者。
Compartilhar
在第1部分,我們研究了經典PBFT共識的工作原理以及早期版本的HotStuff是如何運作的。我們還研究了MonadBFT是如何解決HotStuff的尾部分叉問題的,這是一個在流水線系統中,有效區塊有時會被落下的問題。
這個尾隨分叉問題造成了兩個大問題:1)它搞亂了誠實塊構建者的獎勵,2)可能會導致網路停滯。
MonadBFT引入了Reproposal規則和No-Endorsement投票機制,以消除尾分叉問題,確保來自誠實提議者的任何正確批準的區塊都將始終進入鏈中。
在第2部分中,我們將探討MonadBFT的另外兩個特徵,即1)投機性終局和2)樂觀的響應能力。我們還將探討MonadBFT對開發人員的影響。
除了尾叉抗拒外,MonadBFT的另一個重要特性是在單一輪內的猜測性最終性。
在實際操作中,這意味着客戶和用戶可以在區塊獲得超過半數的投票後立即收到交易確認,甚至在下一輪完成之前。
回想一下,在協議基線HotStuff中,一個塊通常不被認爲是最終的(不可逆)直到它經歷了至少兩個階段(例如Fast-Hotstuff和Diem-BFT):第一階段獲得法定證書(用≥2f+1票鎖定塊),第二階段下一位領導者在此基礎上構建並承諾該塊。
爲了確保安全性,需要進行兩階段提交:一旦足夠多的誠實節點鎖定了一個區塊,就不會有衝突的區塊能夠獲得法定人數,下一輪的提交會使其變爲永久。因此,通常情況下,客戶端可能需要等待下一個區塊或下一輪產生之前,才能確定上一筆交易是否最終完成。
MonadBFT基本上允許交易在經過一輪投票後被認爲足夠最終(安全執行)。這稱爲推測性最終性。
當領導者提出一個區塊並且驗證者投票形成一個QC來確認該區塊時,該區塊現在處於已投票狀態(被法定人數鎖定)。在MonadBFT中,驗證者將在形成QC後立即執行該區塊的交易,甚至向客戶端發送初步確認,表明該區塊已(推測性地)被接受。這就像在說:“我們有絕對多數人同意這個區塊。除非發生非常意外的事情,否則請將此區塊視爲已確認。”
這種即時確認是樂觀的。區塊尚未在帳本中提交。當下一個提案到來並最終確定(QC-on QC)時,區塊將被提交,但在正常情況下,沒有任何事情會撤銷它。唯一可以撤銷具有推測性執行的區塊的情況是如果領導者出現了矛盾(即在同一高度提出了兩個不同的區塊以分割投票)。
您可以將投機性最終性視爲尾部分叉抵抗的一個很好的副產品。尾部分叉抵抗可保證即使下一個領導者崩潰,當前提案也不會被放棄(這要歸功於再提案和NEC規則)。因此,只有在原始提案者出現二義性(經過證明是惡意的雙籤名故障)時,投機執行的區塊才會被丟棄:1)可以通過衝突的QCs檢測,2)可被懲罰,3)極其罕見。
在以前的協議中,他們並沒有保證下一個領導者會重新提出上一個區塊,因此尾部分叉是可能的,打破了推測的假設。
在大多數共識協議中,每輪後都會有一個內置的等待時間,就像一個緩衝期或超時。這是爲了確保所有消息都已到達,然後再繼續前進。這是一種保護機制,旨在處理最壞的情況,比如當領導者崩潰或根本不發送任何消息時。
這些超時通常過於保守。如果網路正常運行且所有驗證者行爲正確,則固定等待就變得不必要。區塊本可以更快被最終確認,但協議爲防萬一而減緩了速度。
MonadBFT引入了樂觀的響應性,這意味着協議可以立即基於網路消息進行推進,而不總是依賴固定的定時器。這裏的設計原則可以概括爲“能快時快,必須耐心時耐心”。
MonadBFT被設計成這樣,即使在正常情況下,甚至在從故障中恢復時,如果沒有必要,它也不會暫停預定的超時。
實際上,這意味着如果節點之間的網路延遲爲100毫秒,共識可能僅需幾百毫秒就能完成一輪(加上計算和聚合開銷)。
如果沒有必要,它不會等待完整的一秒鍾“時隙時間”。這與以太坊主網形成對比,後者遵循時隙和紀元模型在以太坊上,區塊生產固定在12秒間隔。即使所有人都準備好了,協議也會等待。
MonadBFT的方法消除了不必要的延遲。它保留了流水線式的HotStuff結構,但在正常情況下取消了剛性的“你必須等待Δ秒”的規則。這意味着它可以在響應性方面勝過時間限制系統,而不會犧牲安全性。
MonadBFT 建立在 HotStuff 系列共識協議的血統之上,但通過實現理想的屬性組合而脫穎而出,而以前的設計無法在不進行權衡的情況下完全集成這些屬性。早期的協議通常針對某些維度(如流水線吞吐量或線性通信)進行了優化,但不得不犧牲其他維度。MonadBFT 獨特地將線性消息傳遞復雜性、流水線提交、強大的尾部分叉阻力、無固定延遲的即時響應和高效的恢復機制相結合,同時保持快速確定性和高活躍性保證。下表總結了 MonadBFT 在這些關鍵維度上與其他輪換領導者 BFT 協議的比較:
對於開發人員來說,MonadBFT 意味着兩件事:
對於最終用戶:一個普通用戶可能不了解我們在這裏討論的任何內容,但他們會感受到它的影響。在Monad鏈的支撐下,用戶可以期待以下所有良好的特性,而不會犧牲去中心化和抗審查性能。
簡而言之,MonadBFT在流水線式HotStuff共識的基礎上引入了四項核心創新:
尾部分叉抵抗力:MonadBFT是第一個流水線式BFT協議,可消除尾部分叉攻擊。它通過要求下一位領導者在前任領導者失敗時重新提議最後投票的區塊,或者以無背書證書(NEC)作爲證明,表明該區塊缺乏支持來實現這一點。這確保不會放棄超多數背書的區塊,保護誠實領導者的獎勵,並防止惡意重組和跨區塊MEV提取。
一輪推測性最終性:驗證者可以在一輪通信後確認一個區塊(一個領導者提案和投票),爲客戶提供即時的包含確認。這種推測性確認只有在領導者發生否認的情況下才會撤銷(這種行爲可以被證明並受到懲罰),在實踐中這是一個安全的假設。
樂觀響應:該協議以網路速度運行,沒有固有延遲。領導者一旦收到必要的投票就會推進共識,並且在觀察到超時的法定人數後,視圖更改會立即發生,而不是等待固定的超時間隔。這種樂觀響應設計最大限度地減少等待時間,最大化吞吐量,同時在異步性和故障發生時穩健地處理。
線性通信:在快樂路徑上(意味着領導者誠實),消息和認證復雜度與驗證者數量呈線性關係。MonadBFT保留了HotStuff的高效通信模式,使用聚合籤名和簡單的領導者到驗證者的廣播,這使得協議能夠在不影響性能的情況下擴展到數百個驗證者。