交易可擴展性一直是人們談論的話題。在過去的幾周裏,我們一直在探索 Monad 如何幫助擴展 TPS。
以下內容詳細介紹了 Monad 如何工作@desh_saurabh。如果您喜歡閱讀與 Web3 的所有事物數據驅動相關的簡介,可考慮註冊Decentralized.co。願我們在另一處能相見!
TPS 是我們關注的一個指標。我們希望我們的鏈能夠支持更高的 TPS,因爲它們可以支持更多的用戶和應用程序。下圖顯示了以太坊和 L2 的 TPS 數字。沒有一條鏈突破過 100 TPS 大關。請注意,TPS 是測量規模的通用術語。 TPS 不準確,因爲並非所有交易都是平等的,因爲它們的復雜程度不同。但爲了簡單起見,我們使用 TPS 作爲規模衡量標準。
如果我們想提高TPS怎麼辦?
Monad 是一款新的 EVM 兼容 L1,最近籌集了2.25億美元,它正在從頭開始構建 EVM,而不是按原樣使用它。它選擇使用第三種方法來提高可擴展性。
接下來,讓我們討論 Monad 帶來的一些重大變化。
以太坊虛擬機(EVM)串行執行交易。在一個事務執行之前,下一個事務必須等待。這樣想吧。假設摩托車裝配倉庫中有一個平台。多輛卡車掉落摩托車零件(每輛卡車都擁有制造 50 輛摩托車所需的所有零件)。裝配倉庫由專門的團隊執行四種不同的功能——卸載、分類、裝配和裝載。
在當前的 EVM 設置中,只有一個平台,並且使用同一位置進行加載和卸載。因此,當卡車停放時,摩托車部件會被卸載、分揀、組裝並裝載到同一輛卡車上。當分揀小組工作時,其他小組都在等待。因此,如果您將他們的工作視爲不同的時段,那麼每個團隊在四個時段中只工作一次。這導致效率顯著低下,凸顯了需要效率更精簡的方法。
現在,假設有四個平台,具有不同的裝卸區域。即使卸貨團隊一次只能處理一輛卡車,他們也不需要等待接下來的三個槽位。他們可以直接移動到下一輛卡車。
分揀、組裝和裝載團隊也是如此。卸貨後,卡車移動到裝貨區,等待裝載隊裝載組裝好的摩托車。因此,只有一個平台和裝卸區的倉庫是有順序地執行所有操作的,而擁有4個平台和不同裝卸區的倉庫則是並行執行的。
將 Monad 視爲相當於具有多個卡車平台的倉庫的基礎設施,但並不那麼簡單。當卡車相互依賴時,就會更加復雜。例如,如果一輛卡車不具備制造 50 輛摩托車的所有零件,那能怎麼辦?交易可能並不總是獨立的。因此,當 Monad 並行執行它們時,它必須處理相互依賴的事務。
那麼,如何處理呢?它執行稱爲樂觀並行執行的操作。該協議只能並行執行獨立事務。例如,想象以下4筆交易:在 Joel 的餘額爲 1 ETH 時
所有這些事務都是並行執行的,並且結果一一提交。如果待處理結果輸出與任何交易的原始輸入衝突,則重新執行交易。事務 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。
此時,一個明顯的問題是我們如何知道我們不必重新執行大部分交易。答案在於,瓶頸制約並不是重新執行,而是訪問以太坊的內存。事實證明,以太坊在數據庫中存儲其狀態的方式使得訪問狀態變得困難(耗時且昂貴)。這就是 Monad 的另一項改進——MonadDb。Monad 以減少與讀取操作相關的開銷的方式構建其數據庫。
當必須重新執行事務時,所有輸入都已經在緩存中,與整體狀態相比,訪問起來要容易得多。
Solana 在其測試網上具有 50k TPS,但現在在主網上的 TPS 約爲 1k。Monad 聲稱在其內部測試網上實現了 10k 的真實 TPS。盡管這並不總能代表現實世界的性能,但我們期待看到 Monad 在外部世界是如何工作的。
交易可擴展性一直是人們談論的話題。在過去的幾周裏,我們一直在探索 Monad 如何幫助擴展 TPS。
以下內容詳細介紹了 Monad 如何工作@desh_saurabh。如果您喜歡閱讀與 Web3 的所有事物數據驅動相關的簡介,可考慮註冊Decentralized.co。願我們在另一處能相見!
TPS 是我們關注的一個指標。我們希望我們的鏈能夠支持更高的 TPS,因爲它們可以支持更多的用戶和應用程序。下圖顯示了以太坊和 L2 的 TPS 數字。沒有一條鏈突破過 100 TPS 大關。請注意,TPS 是測量規模的通用術語。 TPS 不準確,因爲並非所有交易都是平等的,因爲它們的復雜程度不同。但爲了簡單起見,我們使用 TPS 作爲規模衡量標準。
如果我們想提高TPS怎麼辦?
Monad 是一款新的 EVM 兼容 L1,最近籌集了2.25億美元,它正在從頭開始構建 EVM,而不是按原樣使用它。它選擇使用第三種方法來提高可擴展性。
接下來,讓我們討論 Monad 帶來的一些重大變化。
以太坊虛擬機(EVM)串行執行交易。在一個事務執行之前,下一個事務必須等待。這樣想吧。假設摩托車裝配倉庫中有一個平台。多輛卡車掉落摩托車零件(每輛卡車都擁有制造 50 輛摩托車所需的所有零件)。裝配倉庫由專門的團隊執行四種不同的功能——卸載、分類、裝配和裝載。
在當前的 EVM 設置中,只有一個平台,並且使用同一位置進行加載和卸載。因此,當卡車停放時,摩托車部件會被卸載、分揀、組裝並裝載到同一輛卡車上。當分揀小組工作時,其他小組都在等待。因此,如果您將他們的工作視爲不同的時段,那麼每個團隊在四個時段中只工作一次。這導致效率顯著低下,凸顯了需要效率更精簡的方法。
現在,假設有四個平台,具有不同的裝卸區域。即使卸貨團隊一次只能處理一輛卡車,他們也不需要等待接下來的三個槽位。他們可以直接移動到下一輛卡車。
分揀、組裝和裝載團隊也是如此。卸貨後,卡車移動到裝貨區,等待裝載隊裝載組裝好的摩托車。因此,只有一個平台和裝卸區的倉庫是有順序地執行所有操作的,而擁有4個平台和不同裝卸區的倉庫則是並行執行的。
將 Monad 視爲相當於具有多個卡車平台的倉庫的基礎設施,但並不那麼簡單。當卡車相互依賴時,就會更加復雜。例如,如果一輛卡車不具備制造 50 輛摩托車的所有零件,那能怎麼辦?交易可能並不總是獨立的。因此,當 Monad 並行執行它們時,它必須處理相互依賴的事務。
那麼,如何處理呢?它執行稱爲樂觀並行執行的操作。該協議只能並行執行獨立事務。例如,想象以下4筆交易:在 Joel 的餘額爲 1 ETH 時
所有這些事務都是並行執行的,並且結果一一提交。如果待處理結果輸出與任何交易的原始輸入衝突,則重新執行交易。事務 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。
此時,一個明顯的問題是我們如何知道我們不必重新執行大部分交易。答案在於,瓶頸制約並不是重新執行,而是訪問以太坊的內存。事實證明,以太坊在數據庫中存儲其狀態的方式使得訪問狀態變得困難(耗時且昂貴)。這就是 Monad 的另一項改進——MonadDb。Monad 以減少與讀取操作相關的開銷的方式構建其數據庫。
當必須重新執行事務時,所有輸入都已經在緩存中,與整體狀態相比,訪問起來要容易得多。
Solana 在其測試網上具有 50k TPS,但現在在主網上的 TPS 約爲 1k。Monad 聲稱在其內部測試網上實現了 10k 的真實 TPS。盡管這並不總能代表現實世界的性能,但我們期待看到 Monad 在外部世界是如何工作的。