深入Monad:重新定義交易速度的EVM 創新

作者:Decentralised.Co 來源:X,@Decentralisedco 翻譯:善歐巴,金色財經

交易可擴展性一直是業界討論的熱門話題。過去幾週,我們一直在探討Monad 如何幫助提升交易處理速度(TPS)。本文詳細解釋了Monad 的運作原理。

TPS 是我們一直在關注的衡量標準。我們希望區塊鏈能夠支援更高的TPS,從而容納更多用戶和應用程式。下圖顯示了以太坊和L2 的TPS 數字。目前為止,沒有一條鏈突破過100 TPS 的大關。需要注意的是,TPS 是一個用於衡量可擴展性的通用術語。由於並非所有交易都一樣複雜,單純的TPS 資料並不夠準確。但為了方便起見,我們仍將TPS 視為衡量可擴展性的指標。

提高TPS 的方法有哪些?

一種方法是像Solana 一樣,從頭開始建立一個全新的系統。 Solana 犧牲了與EVM 的兼容性來換取速度。它使用多執行緒執行而不是單執行緒執行(可以類比多核心CPU 和單核心CPU),並行處理交易,並使用不同的共識機制。

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

第三種方法是將EVM 分解成單獨的組件並進行最佳化以提高可擴展性。

Monad 是一個新近籌集了2.25 億美元的EVM 相容L1 區塊鏈,它選擇從頭開始建立EVM 而不是直接使用現有版本。 Monad 採用了第三種方法來提高可擴展性。

以下我們將討論Monad 引入的一些重大改變。

平行執行

以太坊虛擬機器(EVM) 串列執行交易。在上一個交易執行完成之前,下一個交易必須等待。可以舉個例子:想像一個摩托車組裝倉庫的平台。多輛卡車運送摩托車零件(每輛卡車都裝有製造50 輛摩托車所需的所有零件)。組裝倉庫有四個不同的功能,每個功能都由專門的團隊負責- 卸載、分類、組裝和裝載。

EVM

在目前的EVM 設置中,只有一個平台,同一個地點用於裝卸貨物。因此,當卡車停下來時,摩托車零件會在同一個卡車上卸載、分類、組裝和裝載。當分類團隊工作時,其他團隊都在等待。因此,如果把他們的工作視為不同的插槽,那麼每個團隊每四個插槽中只會工作一次。這導致了嚴重的效率低下,凸顯了需要更簡化的方式。

現在想像有四個擁有獨立裝卸區域的平台。即使卸載團隊一次只能處理一輛卡車,他們也不必等待接下來的三個插槽才能進行工作。他們可以直接移到下一輛卡車旁開始工作。

分類、組裝和裝載團隊也是如此。當卡車完成卸載後,它會駛向裝載區,等待裝載團隊裝載組裝好的摩托車。因此,只有一個平台和裝卸區域的倉庫會依序執行所有操作,而擁有4 個平台和不同裝卸區域的倉庫則可以並行處理任務。

EVM

可以將Monad 視為擁有多個卡車平台的倉庫基礎設施,但它比這個例子複雜得多。當卡車之間存在依賴關係時,複雜性就會增加。例如,如果一輛卡車上沒有製造50 輛摩托車所需的所有零件呢?交易並不總是獨立的。因此,當Monad 並行執行它們時,它必須處理相互依賴的交易。

如何做到這一點?它執行一種稱為樂觀並行執行的操作。該協議只能並行執行獨立的交易。例如,考慮4 筆交易,其中喬爾(Joel) 的餘額為1 ETH:

  • 喬爾向薩烏拉夫(Saurabh) 發送0.2 ETH。

  • 西德(Sid) 鑄造一個NFT。

  • 喬爾向西德發送0.1 ETH。

  • 什洛克(Shlok) 購買PEPE。

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

請注意,由於所有4 筆交易都從相同的初始狀態(喬爾餘額為1 ETH)開始,因此這裡關注的是喬爾的餘額。發送0.2 ETH 後喬爾的餘額變為0.8 ETH。在向西德發送0.1 ETH 後,他的餘額變為0.9 ETH。結果逐一提交,確保輸出不會與任何輸入衝突。在1 的待處理結果提交後,喬爾的新餘額變為0.8 ETH。

這個輸出與3 的輸入衝突。因此,現在用0.8 ETH 的輸入重新執行3。執行完3 之後,喬爾的餘額變成0.7 ETH。

MonadDb

EVM

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

當一個交易需要重新執行時,所有輸入都已經快取在快取記憶體中,與存取整體狀態相比,快取記憶體的存取速度要快得多。

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

Total
0
Shares
Related Posts