一文讀懂 Monad

中級5/21/2024, 2:17:47 AM
交易擴展性一直是熱門話題,本文探討了 Monad 如何幫助擴展 TPS,並詳細介紹了其工作原理。瓶頸並不是重新執行,而是訪問以太坊的內存。事實證明,以太坊在數據庫中存儲狀態的方式使得訪問狀態變得困難(耗時和因此昂貴),這是 Monad 的另一項改進

交易可擴展性一直是人們談論的話題。在過去的幾周裏,我們一直在探索 Monad 如何幫助擴展 TPS。

以下內容詳細介紹了 Monad 如何工作@desh_saurabh。如果您喜歡閱讀與 Web3 的所有事物數據驅動相關的簡介,可考慮註冊Decentralized.co。願我們在另一處能相見!

TPS 是我們關注的一個指標。我們希望我們的鏈能夠支持更高的 TPS,因爲它們可以支持更多的用戶和應用程序。下圖顯示了以太坊和 L2 的 TPS 數字。沒有一條鏈突破過 100 TPS 大關。請注意,TPS 是測量規模的通用術語。 TPS 不準確,因爲並非所有交易都是平等的,因爲它們的復雜程度不同。但爲了簡單起見,我們使用 TPS 作爲規模衡量標準。

如果我們想提高TPS怎麼辦?

  1. 一種方法是構建一個全新的系統,就像 Solana 所做的那樣。它犧牲了 EVM 兼容性以換取速度。它使用多線程而不是單線程執行(想想多核 CPU 與單核 CPU),並行化事務,並使用不同的共識機制。
  2. 第二種方法是使用鏈下執行並通過中心化排序器擴展以太坊。
  3. 第三是將EVM分解爲單獨的組件並對其進行優化以提高可擴展性。

Monad 是一款新的 EVM 兼容 L1,最近籌集了2.25億美元,它正在從頭開始構建 EVM,而不是按原樣使用它。它選擇使用第三種方法來提高可擴展性。

接下來,讓我們討論 Monad 帶來的一些重大變化。

並行執行

以太坊虛擬機(EVM)串行執行交易。在一個事務執行之前,下一個事務必須等待。這樣想吧。假設摩托車裝配倉庫中有一個平台。多輛卡車掉落摩托車零件(每輛卡車都擁有制造 50 輛摩托車所需的所有零件)。裝配倉庫由專門的團隊執行四種不同的功能——卸載、分類、裝配和裝載。

在當前的 EVM 設置中,只有一個平台,並且使用同一位置進行加載和卸載。因此,當卡車停放時,摩托車部件會被卸載、分揀、組裝並裝載到同一輛卡車上。當分揀小組工作時,其他小組都在等待。因此,如果您將他們的工作視爲不同的時段,那麼每個團隊在四個時段中只工作一次。這導致效率顯著低下,凸顯了需要效率更精簡的方法。

現在,假設有四個平台,具有不同的裝卸區域。即使卸貨團隊一次只能處理一輛卡車,他們也不需要等待接下來的三個槽位。他們可以直接移動到下一輛卡車。

分揀、組裝和裝載團隊也是如此。卸貨後,卡車移動到裝貨區,等待裝載隊裝載組裝好的摩托車。因此,只有一個平台和裝卸區的倉庫是有順序地執行所有操作的,而擁有4個平台和不同裝卸區的倉庫則是並行執行的。

將 Monad 視爲相當於具有多個卡車平台的倉庫的基礎設施,但並不那麼簡單。當卡車相互依賴時,就會更加復雜。例如,如果一輛卡車不具備制造 50 輛摩托車的所有零件,那能怎麼辦?交易可能並不總是獨立的。因此,當 Monad 並行執行它們時,它必須處理相互依賴的事務。

那麼,如何處理呢?它執行稱爲樂觀並行執行的操作。該協議只能並行執行獨立事務。例如,想象以下4筆交易:在 Joel 的餘額爲 1 ETH 時

  1. Joel 向 Saurabh 發送 0.2 ETH。
  2. Sid 鑄造了 NFT。
  3. Joel 向 Sid 發送 0.1 ETH。
  4. Shlok 購買 PEPE。

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

請注意,由於所有 4 筆交易均從同一狀態開始,因此這裏關注的是 Joel 的 1 ETH 餘額。Joel 發送 0.2 ETH 的輸出結果是 0.8 ETH。Joel 向 Sid 發送 0.1 ETH 後,他的餘額爲 0.9 ETH。結果一一提交,確保輸出不會與任何輸入衝突。提交待處理結果 1 後,Joel 的新餘額爲 0.8 ETH。

這個輸出與 3 的輸入衝突。所以現在以 0.8 ETH 的輸入重新執行 3。執行3後,Joel的餘額爲0.7 ETH。

MonadDb

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

當必須重新執行事務時,所有輸入都已經在緩存中,與整體狀態相比,訪問起來要容易得多。

Solana 在其測試網上具有 50k TPS,但現在在主網上的 TPS 約爲 1k。Monad 聲稱在其內部測試網上實現了 10k 的真實 TPS。盡管這並不總能代表現實世界的性能,但我們期待看到 Monad 在外部世界是如何工作的。

聲明:

  1. 本文轉載自【chaincatcher】。原文標題爲“Understanding Monad”。所有版權歸原作者【Decentralised.Co】所有。若對本次轉載有異議,請聯系【Gate Learn】團隊,他們會及時處理。
  2. 免責聲明:本文所表達的觀點和意見僅代表作者個人觀點,不構成任何投資建議。
  3. Gate Learn 團隊將文章翻譯成其他語言。除非另有說明,否則禁止復制、分發或抄襲本譯文。

แชร์

เนื้อหา

一文讀懂 Monad

中級5/21/2024, 2:17:47 AM
交易擴展性一直是熱門話題,本文探討了 Monad 如何幫助擴展 TPS,並詳細介紹了其工作原理。瓶頸並不是重新執行,而是訪問以太坊的內存。事實證明,以太坊在數據庫中存儲狀態的方式使得訪問狀態變得困難(耗時和因此昂貴),這是 Monad 的另一項改進

交易可擴展性一直是人們談論的話題。在過去的幾周裏,我們一直在探索 Monad 如何幫助擴展 TPS。

以下內容詳細介紹了 Monad 如何工作@desh_saurabh。如果您喜歡閱讀與 Web3 的所有事物數據驅動相關的簡介,可考慮註冊Decentralized.co。願我們在另一處能相見!

TPS 是我們關注的一個指標。我們希望我們的鏈能夠支持更高的 TPS,因爲它們可以支持更多的用戶和應用程序。下圖顯示了以太坊和 L2 的 TPS 數字。沒有一條鏈突破過 100 TPS 大關。請注意,TPS 是測量規模的通用術語。 TPS 不準確,因爲並非所有交易都是平等的,因爲它們的復雜程度不同。但爲了簡單起見,我們使用 TPS 作爲規模衡量標準。

如果我們想提高TPS怎麼辦?

  1. 一種方法是構建一個全新的系統,就像 Solana 所做的那樣。它犧牲了 EVM 兼容性以換取速度。它使用多線程而不是單線程執行(想想多核 CPU 與單核 CPU),並行化事務,並使用不同的共識機制。
  2. 第二種方法是使用鏈下執行並通過中心化排序器擴展以太坊。
  3. 第三是將EVM分解爲單獨的組件並對其進行優化以提高可擴展性。

Monad 是一款新的 EVM 兼容 L1,最近籌集了2.25億美元,它正在從頭開始構建 EVM,而不是按原樣使用它。它選擇使用第三種方法來提高可擴展性。

接下來,讓我們討論 Monad 帶來的一些重大變化。

並行執行

以太坊虛擬機(EVM)串行執行交易。在一個事務執行之前,下一個事務必須等待。這樣想吧。假設摩托車裝配倉庫中有一個平台。多輛卡車掉落摩托車零件(每輛卡車都擁有制造 50 輛摩托車所需的所有零件)。裝配倉庫由專門的團隊執行四種不同的功能——卸載、分類、裝配和裝載。

在當前的 EVM 設置中,只有一個平台,並且使用同一位置進行加載和卸載。因此,當卡車停放時,摩托車部件會被卸載、分揀、組裝並裝載到同一輛卡車上。當分揀小組工作時,其他小組都在等待。因此,如果您將他們的工作視爲不同的時段,那麼每個團隊在四個時段中只工作一次。這導致效率顯著低下,凸顯了需要效率更精簡的方法。

現在,假設有四個平台,具有不同的裝卸區域。即使卸貨團隊一次只能處理一輛卡車,他們也不需要等待接下來的三個槽位。他們可以直接移動到下一輛卡車。

分揀、組裝和裝載團隊也是如此。卸貨後,卡車移動到裝貨區,等待裝載隊裝載組裝好的摩托車。因此,只有一個平台和裝卸區的倉庫是有順序地執行所有操作的,而擁有4個平台和不同裝卸區的倉庫則是並行執行的。

將 Monad 視爲相當於具有多個卡車平台的倉庫的基礎設施,但並不那麼簡單。當卡車相互依賴時,就會更加復雜。例如,如果一輛卡車不具備制造 50 輛摩托車的所有零件,那能怎麼辦?交易可能並不總是獨立的。因此,當 Monad 並行執行它們時,它必須處理相互依賴的事務。

那麼,如何處理呢?它執行稱爲樂觀並行執行的操作。該協議只能並行執行獨立事務。例如,想象以下4筆交易:在 Joel 的餘額爲 1 ETH 時

  1. Joel 向 Saurabh 發送 0.2 ETH。
  2. Sid 鑄造了 NFT。
  3. Joel 向 Sid 發送 0.1 ETH。
  4. Shlok 購買 PEPE。

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

請注意,由於所有 4 筆交易均從同一狀態開始,因此這裏關注的是 Joel 的 1 ETH 餘額。Joel 發送 0.2 ETH 的輸出結果是 0.8 ETH。Joel 向 Sid 發送 0.1 ETH 後,他的餘額爲 0.9 ETH。結果一一提交,確保輸出不會與任何輸入衝突。提交待處理結果 1 後,Joel 的新餘額爲 0.8 ETH。

這個輸出與 3 的輸入衝突。所以現在以 0.8 ETH 的輸入重新執行 3。執行3後,Joel的餘額爲0.7 ETH。

MonadDb

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

當必須重新執行事務時,所有輸入都已經在緩存中,與整體狀態相比,訪問起來要容易得多。

Solana 在其測試網上具有 50k TPS,但現在在主網上的 TPS 約爲 1k。Monad 聲稱在其內部測試網上實現了 10k 的真實 TPS。盡管這並不總能代表現實世界的性能,但我們期待看到 Monad 在外部世界是如何工作的。

聲明:

  1. 本文轉載自【chaincatcher】。原文標題爲“Understanding Monad”。所有版權歸原作者【Decentralised.Co】所有。若對本次轉載有異議,請聯系【Gate Learn】團隊,他們會及時處理。
  2. 免責聲明:本文所表達的觀點和意見僅代表作者個人觀點,不構成任何投資建議。
  3. Gate Learn 團隊將文章翻譯成其他語言。除非另有說明,否則禁止復制、分發或抄襲本譯文。
เริ่มตอนนี้
สมัครและรับรางวัล
$100