首頁  >  文章  >  Monad入門指南:快速理解並行EVM與效能提升

Monad入門指南:快速理解並行EVM與效能提升

WBOY
WBOY轉載
2024-05-06 09:40:02494瀏覽

交易擴充功能一直是熱門話題。在過去幾週中,我們一直在探索 Monad 如何幫助擴展 TPS。

以下是由Saurabh Deshpande撰寫的關於 Monad 工作原理的詳細說明。

Monad工作原理的詳細說明

TPS 是我們非常關注的指標。我們希望我們的鏈能夠支援更高的 TPS,因為它們可以支援更多的用戶和應用程式。下面的圖表顯示了以太坊和 L2 的 TPS 數字。沒有一條鏈曾經突破過 100 TPS 的標誌。請注意,TPS 是一個通用的用於衡量規模的術語。 TPS 是不準確的,因為並非所有交易都相同,它們在複雜性上有所不同。但出於簡單起見,我們使用 TPS 作為衡量規模的指標。

Monad入門指南:快速理解並行EVM與效能提升

如果我們想增加 TPS,我們該怎麼辦?

  • 第一種方法是建立一個全新的系統,就像 Solana 所做的那樣。它犧牲了與速度相比的 EVM 相容性。它使用多執行緒執行而不是單執行緒執行(想想多核心 CPU 與單核心 CPU),進行平行化交易並使用了不同的共識機制。

  • 第二種方法是使用鏈下執行,並使用中心化的排序器來擴展以太坊。

  • 第三種方法是將 EVM 分解為單獨的元件,並對其進行最佳化以提高可擴展性。

Monad 是一個新的與 EVM 相容的 L1,最近籌集了 2.25 億美元,它正在從頭開始建立 EVM,而不是直接使用。它選擇了這第三種方法來增加可擴展性。

我們討論了 Monad 帶來的幾個重大變化。

並行執行

以太坊虛擬機器(EVM)依序執行交易。在執行一個交易之前,下一個交易必須等待。可以這樣想。假設在一個摩托車組裝車間中有一個平台。多輛卡車運送摩托車零件(每輛卡車都有組裝 50 輛摩托車所需的所有零件)。組裝車間分別執行四種不同的功能:卸貨、分類、組裝和裝貨。

Monad入門指南:快速理解並行EVM與效能提升

在目前的 EVM 設定中,只有一個平台,並且載入和卸載使用相同的位置。因此,當卡車停放時,摩托車零件被卸載、分類、組裝和裝載在同一輛卡車上。當分類團隊在工作時,其他團隊都在等待。因此,如果將它們的工作看作不同的插槽,每個團隊只在四個插槽中工作一次。這導致了顯著的低效率,突出了需要更加流暢的方法。

現在,想像有四個不同的裝載和卸載區域的平台。即使卸貨團隊一次只能與一輛卡車一起工作,他們也不需要等待下三個插槽。他們可以直接轉移到下一輛卡車。

分類、組裝和裝載團隊也是如此。一旦卸貨完成,卡車移動到裝載區等待裝載團隊裝載組裝好的摩托車。因此,只有一個平台和加載/卸載區域的倉庫按順序執行所有操作,而具有 4 個平台和不同加載/卸載區域的倉庫進行並行化。

Monad入門指南:快速理解並行EVM與效能提升

將 Monad 視為基礎設施,相當於擁有多個卡車平台的倉庫。但並不簡單。當卡車依賴時,複雜性增加。例如,如果一輛卡車沒有所有零件來組裝 50 輛摩托車會怎麼樣?交易可能並不總是獨立的。因此,當 Monad 並行執行它們時,它必須處理彼此依賴的交易。

怎麼處理?它執行一種稱為樂觀並行執行的方法。協議只能並行執行獨立的交易。例如,考慮4 筆交易,其中Joel 的餘額為1 個ETH:

  • #Joel 將0.2 個以太發送給Saurabh

  • Sid 鑄造一個NFT

  • Joel 將0.1 個乙太傳送給Sid

  • Shlok 購買PEPE

所有這些交易都是並行執行的,待定結果逐一提交。如果待定結果的輸出與任何交易的原始輸入有衝突,則重新執行交易。交易 2 和 4 沒有與其他交易的輸入衝突的待定結果,因為它們彼此獨立。但交易 1 和 4 並不獨立。

請注意,由於所有 4 個交易都從同一狀態開始,所以關注的是 Joel 的餘額為 1 個ETH。 Joel 將 0.2 個ETH送出後,餘額為 0.8 個ETH。在 Joel 將 0.1 個ETH發送給 Sid 後,他的餘額為 0.9 個ETH。結果逐一提交,確保輸出不會與任何輸入衝突。在提交了 1 的待定結果後,Joel 的新餘額為 0.8 個ETH。

這個輸出與第 3 個交易的輸入衝突。所以現在 3 被重新執行,輸入為 0.8 個ETH。在執行了 3 之後,Joel 的餘額為 0.7 個ETH。

MonadDb

Monad入門指南:快速理解並行EVM與效能提升

在這一點上,一個明顯的問題是我們如何知道我們不必重新執行大部分交易。答案在於重新執行並不是瓶頸。瓶頸是存取以太坊的記憶體。事實證明,以太坊在資料庫中儲存狀態的方式使得存取狀態變得困難(耗時且因此昂貴)。這就是 Monad 的另一個改進:MonadDb。 Monad 建構資料庫的方式減少了與讀取操作相關的開銷。

當交易必須重新執行時,所有輸入已經在快取記憶體中,與整體狀態相比,這更容易存取。

Solana 在其測試網上有 50k TPS,但現在在主網上只有大約1k TPS。 Monad 聲稱在其內部測試網上已實現了 10k 實際 TPS。儘管這並不總是代表實際性能,但我們迫不及待地想看看 Monad 在實際應用中的表現。

以上是Monad入門指南:快速理解並行EVM與效能提升的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:jb51.net。如有侵權,請聯絡admin@php.cn刪除