Monad 是一個新的第 1 層智能合約平臺,最近從風險投資公司 Paradigm 籌集了 2.25 億美元的資金。
儘管 Monad 尚未啓動,但預計將於 2024 年底在其公共測試網上上線,並計劃於 2025 年初部署主網。
Monad 是一個並行的以太坊虛擬機 (EVM) 項目,與 Aurora(基於 Near 協議構建)或 Sei 等類似項目一樣,它試圖並行執行 EVM 指令,以便網絡可以同時處理多個交易。這使得處理大量交易、提高吞吐量並降低成本成爲可能。
並行化涉及將交易執行分解爲可以同時處理的較小、獨立的任務。Monad 引入了四種優化來改進其共識、執行和數據存儲:MonadBFT、延遲執行、並行執行和 MonadDb。
MonadBFT
MonadBFT 是一種流水線式兩階段拜占庭容錯算法,旨在增強區塊鏈的可擴展性和效率。它是 HotStuff 算法的衍生算法,經過優化可在部分同步條件下運行。
這種優化非常重要,因爲大多數現實世界的網絡由於網絡擁塞、延遲和其他因素導致的消息傳遞時間變化,因此不會表現出完全同步的行爲。通過適應這些部分同步的條件,MonadBFT 可確保在實際部署中具有良好的性能和可靠性。
HotStuff 算法是一種專爲區塊鏈系統設計的共識協議,以實現拜占庭容錯(BFT),即計算機系統即使某些節點惡意行爲或出現故障也能繼續運行的能力。
它通過節點之間進行一系列通信輪次來就鏈中的下一個區塊達成一致,從而實現這種穩健性。HotStuff 需要三輪通信才能達成共識,這可能會成爲可擴展性和效率的瓶頸。MonadBFT 通過將達成共識所需的通信輪次從三輪減少到兩輪,改進了 HotStuff。
共識機制分階段進行。領導者節點提出區塊,驗證者對其進行審覈。在每一輪中,領導者都會發送一個新區塊,其中包含上一輪的法定人數證書 (QC) 或超時證書 (TC)。QC 證明區塊已得到大多數驗證者的批准,表明他們同意該區塊的有效性。
另一方面,TC 表示所需數量的驗證者未在給定的時間內達成共識。這是一種後備機制,可防止系統停滯。
驗證者對領導者提出的新區塊進行投票。如果有足夠數量的驗證者(三分之二)批准,則該區塊將在後續輪次中最終確定,併發出 QC。
如果驗證者沒有及時收到有效區塊,他們會發送簽名的超時消息,這些消息可以彙總到 TC 中。然後,此 TC 會直接發送給下一個領導者。當驗證者看到兩個連續的經過認證的區塊時,區塊就會最終確定。
此兩階段提交規則可確保快速完成區塊,同時保持網絡安全性和容錯性。與所有異步 BFT 設置一樣,Monad 的三分之二驗證者節點必須是非對抗性的,並且具有相等的投票權重以維護安全性。
延遲執行
延遲執行將交易執行與共識分離。與以太坊等傳統區塊鏈不同,在傳統區塊鏈中,節點必須在建立共識之前執行交易,而 MonadBFT 共識僅關注交易的順序。
在以太坊上,節點需要就區塊中的交易列表和交易後狀態的 Merkle 樹根達成共識。這意味着共識領導者需要在提交區塊之前執行交易,並且驗證節點都需要在投票之前重新執行此操作。
因此,區塊時間可能會變得相當長,並且網絡可以處理的計算複雜性會降低。MonadBFT 的共識機制僅確定交易的順序,並允許在達成共識後獨立執行。
爲了確保正確執行,Monad 會延遲 D 個區塊對狀態 Merkle 根的同意。D 是一個系統範圍的參數,目前預計爲 10。
這種設計可以降低惡意節點無法正確執行交易的風險。一旦網絡以三分之二多數票就區塊 N 達成共識,它也就同意了區塊 N-D 中 Merkle 樹所代表的狀態。
如果任何節點在執行區塊 N-D 時發現錯誤,它將對區塊 N 的提議投反對票。這將觸發回滾到區塊 N-D-1 的最終狀態,然後重新執行區塊 N-D 中的交易。節點可以通過檢查自己的 Merkle 根來驗證和糾正其相對於網絡中其他節點的執行結果。輕節點可以查詢完整節點以獲取狀態變量值的 Merkle 證明。
並行執行
流行的並行執行區塊鏈要麼是確定性的,要麼是樂觀的。
Monad 採用樂觀執行來實現並行事務處理。這種方法有點類似於中央處理器 (CPU) 採用的推測執行,其中處理器預測分支指令的路徑並提前執行它們。
Monad 的執行引擎甚至在之前的交易執行完成之前就開始處理新的交易,從而提高了總體吞吐量。
然而,這種稱爲樂觀併發控制的策略在後續交易相互依賴時可能會導致錯誤。如果檢測到衝突(例如,當兩個交易試圖修改同一個帳戶餘額時),受影響的交易將重新執行以糾正差異。
在最壞的情況下,一個事務必須執行兩次,但總的來說,這隻會增加 1.5% 的開銷。Monad 還使用靜態代碼分析器來提前預測事務之間的依賴關係。這種靜態分析允許 Monad 在執行之前識別潛在衝突,儘管它不能防止所有衝突,但有助於優化初始事務調度,以實現更高效、更樂觀的並行執行。
Sei 也採用了樂觀並行化,假設事務不會發生衝突,但它採用獨特的方法來處理衝突。在並行化過程中,Sei 會跟蹤每個事務修改了狀態的哪些部分。如果它檢測到兩個事務發生衝突(即它們試圖修改狀態的同一部分),系統會暫時停止執行並按順序重新處理衝突的事務,類似於 Monad。
然而,Monad 使用靜態代碼分析器來實現更高效的事務調度,從而降低衝突的可能性,而 Sei 只是在執行過程中解決出現的衝突。
樂觀執行還消除了對複雜調度和依賴性分析算法的需求,而這些算法是確定性方法所必需的。在 Sui 和 Solana 採用的確定性方法中,事務必須在執行前聲明它們將訪問狀態的哪些部分。
這種預先聲明允許系統以一種避免執行期間發生衝突的方式安排交易。這種方法的主要優點是可預測性:由於依賴關係是預先知道的,系統可以確保交易不會相互干擾,從而產生一致且可靠的結果。
然而,這種可預測性是有代價的。分析依賴關係和調度交易需要複雜的算法,這些算法必須考慮交易之間所有潛在的交互,並引入計算開銷,從而對硬件的要求更高。
實時分析和調度的需求也增加了複雜性,因爲系統必須持續監控和調整執行順序以防止發生衝突。
此外,確定性方法可能面臨有效擴展的挑戰。隨着交易數量的增加,依賴性分析的複雜性呈指數級增長。
MonadDB
MonadDB 是一個專門爲優化並行執行的實現而設計的自定義數據庫。在以太坊等傳統區塊鏈中,輸入/輸出 (I/O) 訪問成爲一個重大瓶頸,主要是因爲這些系統依賴於同步 I/O 操作。
進程必須等待每個讀取或寫入操作完成後才能繼續執行下一個操作,這嚴重限制了吞吐量和整體性能。爲了克服這一限制,MonadDB 採用了異步磁盤操作,允許系統同時啓動多個讀取和寫入操作,而無需等待每個操作完成。這提高了事務處理的整體速度,尤其是與並行執行結合使用時。
結論
Monad 代表了區塊鏈技術的重大進步。它採用了樂觀執行、延遲執行和自定義數據庫 MonadDB 等創新技術來增強可擴展性和效率。
它的樂觀並行化方法類似於 CPU 中的推測執行,通過併發處理事務並僅在必要時重新執行衝突的事務來實現高吞吐量。
結合靜態代碼分析,該方法可以優化交易調度並降低發生衝突的可能性。與其他並行 EVM 項目(如 Sei)以及確定性系統(如 Sui 和 Solana)相比,Monad 的方法平衡了效率和複雜性,爲高交易量提供了強大的解決方案。
流水線式兩階段拜占庭容錯算法MonadBFT的引入進一步確保了區塊的快速最終確定和網絡安全。
隨着 Monad 爲 2024 年底的公共測試網和 2025 年初的主網部署做準備,它將自己定位爲下一代可擴展區塊鏈平臺的強大參與者。