萬字解讀並行 EVM :如何突破區塊鏈性能瓶頸?

中級4/15/2024, 3:33:01 PM
本文深入探討並行EVM的技術細節和市場前景,解析如Sei、Monad、Canto等主要區塊鏈項目的並行執行機制,並分析了它們在行業中的潛在影響和市場地位。通過並行執行優化,區塊鏈網路能夠極大提升處理速度和效率,支撐Web3領域的廣泛發展。

TL;DR

1、並行 EVM 是鏈上交易量發展到一定程度後出現的一種新敘事。並行 EVM 主要分爲單體區塊鏈和模塊化區塊鏈。單體區塊鏈又分爲 L1 和 L2 。並行 L1 公鏈分爲兩大陣營:EVM 和非 EVM 。目前並行 EVM 敘事處於發展的早期階段;

2、拆解並行 EVM 的技術實現路徑,主要包含虛擬機和並行執行機制兩大方面。在區塊鏈的語境下,虛擬機是指對分布式狀態機進行虛擬的進程虛擬機,用於執行合約;

3、並行執行是指發揮多核處理器的優勢,盡可能在同一時間同時執行多個交易,而保證最終狀態與串行執行時結果一致;

4、並行執行機制分爲消息傳遞、共享內存、和嚴格狀態訪問列表三大類。共享內存又分爲內存鎖模型和樂觀並行化。無論哪種機制均提高了技術的復雜性;

5、並行 EVM 敘事既有行業增長的內在驅動因素,又需要從業者高度關注其可能存在的安全問題;

6、並行 EVM 各標的項目均以不同的方式提供了並行執行思路,既有技術上的共性又有自己的獨特建樹。

1.行業綜述

1.1歷史沿革

性能已經成爲行業進一步發展的瓶頸。區塊鏈網路爲個人和企業進行交易創造了一種新的、去中心化的信任基礎。

以比特幣爲代表的第一代區塊鏈網路以分布式記帳的方式開創了去中心化的電子貨幣交易新模式,革命性地開創了一個新時代。以以太坊爲代表的第二代區塊鏈網路則充分發揮想象力,提出以分布式狀態機的方式實現去中心化應用( dApp )。

從那時起,區塊鏈網路開啓了它自己十幾年飛速發展的歷史,從 Web3 基礎設施到以 DeFi 、 NFT 、社交網絡和 GameFi 等爲代表的各種賽道,誕生了無數或技術或商業模式的創新。行業的蓬勃發展需要不斷吸引新用戶參與去中心化應用的生態建設,這反過來又對產品體驗提出了更高的要求。

而 Web3 作爲一種“前無古人”的新產品形態,不但要在滿足用戶需求上有所創新(功能性需求),還要考慮怎樣在安全性和性能之間取得平衡(非功能性需求)。自誕生以來,人們提出了各種各樣的解決方案試圖解決性能問題。

這些解決方案大致可以分爲兩類:一類是鏈上擴容方案,如分片( sharding )和有向無環圖( DAG );一類是鏈下擴容方案,如 Plasma 、閃電網絡、側鏈和 Rollups 等。但這還遠遠跟不上鏈上交易快速增長的速度。

尤其是經歷了 2020 年 DeFi Summer 以及 2023 年年末比特幣生態中銘文的持續爆發,業界迫切需要新的性能提升方案來滿足“高性能、低費率”的要求。並行區塊鏈就是在這樣的背景下誕生的。

1.2市場規模

並行 EVM 敘事標志着並行區塊鏈領域形成了兩強相爭的競爭格局。以太坊對交易的處理是串行的,交易要按順序一個接一個的執行,資源的利用率不高。如果將串行處理的方式變爲並行處理將帶來性能的巨大提升。

以太坊競爭對手如 Solana 、 Aptos 和 Sui 都是自帶並行處理能力的,生態也發展的很不錯,代幣流通市值分別達到 450 億、33 億和 19 億美元,它們形成了並行非 EVM 陣營。面對挑戰,以太坊生態也不甘示弱,紛紛站出來爲 EVM 賦能,它們形成了並行 EVM 陣營。

Sei 在其 v2 版本升級提案中高調宣稱將成爲“第一個並行 EVM 區塊鏈”,當前流通市值 21 億美元,預後還有更大的發展。當下營銷熱度第一的並行 EVM 新公鏈 Monad 很受資本青睞,潛力也不可小視。而市值1.7億美元、自帶免費公共基礎設施的 L1 公鏈 Canto 也宣布了自己的並行 EVM 升級提案。

除此之外,一衆還處在早期階段的 L2 項目也在通過整合多種 L1 鏈的能力提供跨生態的性能提升。除 Neon 做到了 6900 萬美元流通市值外,其他項目還缺少相關數據。相信未來還會出現更多的 L1 和 L2 項目加入並行區塊鏈戰場。

不但並行 EVM 敘事還有很大的市場增長空間,而且並行 EVM 敘事所屬的並行區塊鏈板塊也還有很大的市場增長空間,因此市場前景廣闊。

目前 L1 和 L2 整體流通市值爲 7521.23 億美元,並行區塊鏈流通市值爲 525.39 億美元,僅佔約 7% 。而其中並行 EVM 敘事相關項目流通市值 23.39 億美元,僅佔並行區塊鏈流通市值的 4% 。

1.3行業圖譜

業界一般將區塊鏈網路分爲 4 層結構:

  1. Layer(網路):區塊鏈底層網路,處理基礎的網路通信協議
  2. Layer 1(基礎設施):依賴各種共識機制對交易進行驗證的去中心化網路
  3. Layer(擴展):依賴於 Layer 1 的各種二層協議,旨在解決 Layer 1 的各種局限性,尤其是可擴展性
  4. Layer 3(應用):依賴於 Layer 或 Layer 1 ,用於構建各種去中心化應用( dApp )

並行 EVM 敘事項目主要分爲單體區塊鏈和模塊化區塊鏈,單體區塊鏈又分爲 L1 和 L2 。從項目總數和幾個主要賽道的發展可以看出,各並行 EVM L1 公鏈生態相比以太坊生態仍然存在很大的發展空間。

DeFi賽道有“高速低費率”的訴求,遊戲賽道有“強實時交互”的訴求,二者都對執行速度有一定要求。並行 EVM 必然會給這些項目帶來更好的用戶體驗,推動行業的發展進入到全新的階段。

L1 是自帶並行執行能力的新公鏈,是高性能基礎設施。L1 這一派中,以 Sei v2、Monad 和 Canto 爲代表的項目自行設計並行 EVM ,兼容以太坊生態並提供高吞吐量交易處理能力。

L2 通過整合其他 L1 鏈的能力,提供跨生態合作的擴容能力,是 rollup 的顯學。L2 這一派中, Neon 是 Solana 網路上的 EVM 模擬器, Eclipse 利用 Solana 執行交易但在 EVM 上做結算。Lumio 與 Eclipse 類似,只是把執行層換成了 Aptos 。

在上述單體區塊鏈解決方案之外, Fuel 提出了自己的模塊化區塊鏈思路。它將在第二個版本中將自己定位成以太坊 rollup 操作系統,提供更靈活、更徹底的模塊化執行能力。

Fuel 專注於執行交易,而將其餘部分外包給一個或多個獨立層的區塊鏈,從而實現更靈活的組合:既可以成爲 L2 ,也可以成爲 L1 ,甚至是側鏈或狀態通道。目前 Fuel 生態有17個項目,主要集中在 DeFi 、 NFT 和基礎設施三個領域。

不過只有 Orally 跨鏈預言機已投入實際應用。去中心化借貸平台 Swaylend 和永續合約交易平台 SPARK 上了測試網,其他項目還在開發中。

2.技術實現路徑

要實現去中心化的交易執行,區塊鏈網路必須履行 4 個職責:

  • 執行:執行和驗證交易
  • 數據可用性:分發新區塊到區塊網路的所有節點
  • 共識機制:驗證區塊,達成共識
  • 結算:結算並記錄交易的最終狀態

並行 EVM 主要是對執行層的性能優化。這又分爲一層網路( L1 )解決方案和二層網路( L2 )解決方案兩種。L1 的解決方案引入交易並行執行機制,讓交易在虛擬機中盡量並行執行。L2 的解決方案本質上是利用已經並行化的 L1 虛擬機實現某種程度上的“鏈下執行+鏈上結算”。

所以要理解並行 EVM 的技術原理,就要將其拆解開來:先理解什麼是虛擬機( virtual machine )再理解什麼是並行執行( parallel execution )。

2.1 虛擬機

在計算機科學中,虛擬機是指對計算機系統進行的虛擬( virtualization )或者模擬( emulation )。

虛擬機分爲兩種,一種叫系統虛擬機( system virtual machine ),可以將一臺物理機虛擬化爲多臺機器,運行多個操作系統,從而提高資源利用率。另一種叫進程虛擬機( process virtual machine ),爲某些高級編程語言提供抽象,讓使用這種語言編寫的計算機程序以一種平台無關的方式運行在不同平台上。

JVM 就是一種爲 Java 編程語言設計的進程虛擬機。Java 語言編寫的程序首先被編譯成 Java 字節碼(一種中間狀態的二進制代碼), Java 字節碼由 JVM 解釋執行:JVM 將字節碼送給解釋器,由解釋器翻譯成不同機器上的機器碼,然後在機器上運行。

區塊鏈虛擬機是進程虛擬機的一種。在區塊鏈的語境下,虛擬機是指對分布式狀態機進行的虛擬,用於分布式地執行合約,運行 dApp 。類比 JVM , EVM 就是一種爲 Solidity 語言設計的進程虛擬機,智能合約首先被編譯成 opcode 字節碼,然後由 EVM 解釋執行。

以太坊之外的新興公鏈在實現自己的虛擬機時,更多採用的是基於 WASM 或 eBPF 字節碼的虛擬機。WASM 是一種體積小、加載快、可移植且基於沙盒安全機制的字節碼格式,開發人員可以使用多種編程語言( C 、 C++ 、 Rust 、 Go 、 Python 、 Java 甚至 TypeScript 等)編寫智能合約,然後編譯成 WASM 字節碼並執行。Sei 公鏈上執行的智能合約正是採用了這一字節碼格式。

eBPF 前身是 BPF ( Berkeley Packet Filter ,伯克利包過濾器),原本是用於網路數據包的高效過濾,後經過演化形成了 eBPF ,提供更豐富的指令集。

它是一項允許在不改動源碼的情況下對操作系統內核進行動態幹預和修改其行爲的革命性技術。後來這項技術從內核中走出來,發展出了用戶態 eBPF 運行時,其具有高性能、安全和可移植性。在 Solana 上執行的智能合約都會編譯成 eBPF 字節碼並在其區塊鏈網路上運行。

而其他的 L1 公鏈中, Aptos 和 Sui 使用 Move 智能合約編程語言,編譯成特有的字節碼在 Move 虛擬機上執行。Monad 則自行設計了兼容 EVM opcode 字節碼( Shanghai fork )的虛擬機。

2.2並行執行

並行執行是這樣一種技術:

  1. 能夠發揮多核處理器的優勢同時處理多個任務,增大系統吞吐量;
  2. 確保得到的交易結果與按順序串行執行交易時完全相同。

區塊鏈網路常用 TPS (每秒處理的交易數量)作爲衡量處理速度的技術指標。並行執行的機制比較復雜,也很考驗開發人員的技術水平,要解釋清楚並不容易。下面從一個“銀行”的例子入手,解釋什麼是並行執行。

(1)首先,什麼是串行執行?

情況1:如果我們把系統看成一家銀行,把處理任務的 CPU 看成櫃臺,那麼串行執行任務就好比這家銀行只有一個櫃臺受理業務。此時來銀行辦業務的客戶(任務)只能排成一條長龍,挨個辦業務。對於每個客戶,櫃臺工作人員都要重復同樣的動作(執行指令)來爲客戶辦理業務。沒有輪到自己時客戶只能等待,這就造成交易時間的延長。

(2)那麼什麼是並行執行呢?

情況2:此時銀行看到人滿爲患,就多開了幾個櫃臺來處理業務,有 4 個櫃員在櫃臺同時處理業務,速度就比原來快了約 4 倍,那麼客戶排隊的時間大約也減少到了原來的 1/4,銀行辦理業務的速度就提升。

(3)如果不做保護,兩個人同時給另一個人轉帳會發生什麼錯誤?

情況3:A 、 B 和 C 三個人,他們的帳戶上分別有2 ETH 、1 ETH 和 0 ETH ,現在 A 和 B 分別要給 C 轉帳 0.5 ETH 。在一個交易串行執行的系統中,不會出現任何問題(左箭頭“<=”表示讀取帳本,右箭頭“=>”表示寫入帳本,下同):

但並行執行並沒有它看上去的那麼簡單。有很多很微妙的細節,稍不注意就會導致非常嚴重的錯誤。如果 A 和 B 對 C 的轉帳交易是並行執行的,那麼根據每個步驟執行先後順序的不同,就有可能產生不一致的結果:

並行任務 1 執行 A 到 C 的轉帳,並行任務 2 執行 B 到 C 的轉帳。表中帶*號的步驟都是有問題的:由於任務是並行執行的,在步驟 2 中並行任務 1 做的收支平衡計算還沒來得及寫入帳本,在步驟 3 中任務 2 就把 C 的帳戶餘額(此時仍然是 0 )讀取出來了,並在步驟 5 中基於餘額0做了錯誤的收支平衡計算,然後在步驟 6 的帳本更新操作中把步驟 4 中已經更新的帳戶餘額 0.5 錯誤地再次更新成了 0.5。導致雖然 A 和 B 都同時轉帳了 0.5 ETH 給 C ,而交易執行完畢後 C 的帳戶餘額卻只有 0.5 ETH ,另外 0.5 ETH 不翼而飛了。

(4)如果不做保護,沒有依賴關係的兩個任務並行執行不會出錯

情況4:並行任務1執行 A (餘額2 ETH )轉帳0.5 ETH 給 C (餘額0 ETH ),並行任務2執行 B (餘額1 ETH )轉帳0.5 ETH 到 D (餘額0 ETH )。可以看到兩個轉帳任務之間沒有依賴關係。那麼不管兩個任務的步驟如何交錯執行,都不會有上面的問題:

從兩種場景的對比可以分析得出,只要任務之間存在依賴,並行執行時就有可能發生狀態更新錯誤,反之則不會發生錯誤。滿足以下 2 個條件之一,就稱任務(交易)之間是有依賴關係的:

  1. 一個任務寫入的輸出地址是另一個任務讀取的輸入地址;
  2. 兩個任務輸出到同一個地址。

這並不是去中心化特有的。任何涉及到並行執行的場景都會因爲多個有依賴的任務之間不受保護地訪問共享資源(銀行例子中的“帳本”、計算機系統中的共享內存等)而出現數據不一致,稱爲競態條件問題(data races )。

業界在解決並行執行的競態條件問題上提出了三種執行機制:消息傳遞機制、共享內存機制和嚴格狀態訪問列表機制。

2.3 消息傳遞機制

情況 5 :假設銀行有 4 個櫃臺同時爲客戶辦理業務,現在給 4 個櫃臺的櫃員每個人手裏發一本專屬帳本,這個帳本只有自己能修改。上面記錄了自己所服務的客戶的帳戶餘額。

每個櫃員在爲客戶辦理業務時,如果該客戶的信息在自己的帳本上能查到,那麼就直接辦理;否則就給別的櫃員喊話告知客戶要辦理的業務,別的櫃員聽到後進行辦理。

這就是消息傳遞模型的原理。Actor模型就是消息傳遞模型的一種,每一個負責處理交易的執行者都是一個 actor (櫃員),它們都有可以訪問自己的私有數據(專屬帳本),如果要訪問別人的私有數據,只能通過發消息來實現。

Actor 模型的優點在於每個 actor 都只能訪問自己的私有數據,因此就不會出現競態條件問題。

它的缺點有 2 個,一是每個 actor 都只能串行地執行,在某些場景中並沒有發揮並行優勢(比如 2 號、3 號和 4 號櫃員同時發消息問 1 號櫃員客戶 A 的帳戶餘額是多少,1 號櫃員在這樣的模型中就只能一個一個的處理消息,而這本來是可以並行處理的)。

二是沒有一個全局的有關當前系統狀態的信息,如果系統業務復雜,將很難了解全貌、定位和修復 bug 。

2.4 共享內存機制

2.4.1 內存存鎖模型

情況 6 :假設銀行只有一個大帳本,上面記錄了所有客戶的帳戶餘額。帳本旁邊只有一支籤字筆可以用來修改帳本。

在這種場景下,4 個櫃員在辦理業務時就看誰跑得快了:一個櫃員搶先拿到籤字筆(加鎖)開始辦理業務修改帳本,其他 3 個櫃員就只能等着。直到櫃員用完將筆放下(解鎖),其他 3 個櫃員再去爭奪籤字筆的使用權,如此循環下去,這就是內存鎖模型( memory locks )。

內存鎖就是讓並行執行的任務在訪問共享資源的時候做一個鎖( lock )的操作,鎖住之後對共享資源進行訪問,此時別的任務要等待它修改完之後解鎖( unlock )才能再次鎖住並訪問。

讀寫鎖( read-write lock )的處理更精細化,可以對共享資源加讀鎖( read lock )或者寫鎖( write lock )。區別是多個並行任務可以加多次讀鎖並讀取共享資源數據,此時不允許修改;而寫鎖只能加一把,且加了之後只能由加鎖者獨佔訪問。

Solana 、 Sui 和 Sei v1 採用的就是基於內存鎖的共享內存模型。這種機制看上去簡單,但實現起來很復雜,很考驗開發人員對多線程編程的駕馭能力。一個不小心,就會留下各種各樣的 bug :

情況1:任務鎖住共享資源,但在執行的過程中因出錯崩潰退出,共享資源被鎖住無法訪問;

情況2:任務已經加鎖,但是執行過程中因業務邏輯嵌套出現二次加鎖,導致自己等待自己。

內存鎖模型最容易出現死鎖( dead lock )、活鎖( live lock )和飢餓( starvation )等問題:

(1)多個並行任務爭奪多個共享資源,每個任務都佔有了其中的一部分,都在等待對方釋放資源,就會出現死鎖問題;

(2)並行任務檢測發現還有其他並行任務處於活躍狀態,於是主動讓出自己佔有的共享資源,導致你讓過來我讓過去,發生活鎖;

(3)優先級高的並行任務總是能獲得共享資源訪問權,其他低優先級任務長時間等待,發生“飢餓”。

2.4.2 樂觀並行化

情況 7 :銀行 4 個櫃員每個人在辦理業務時都可以獨立查閱和修改帳本,而不管別的櫃員在沒在用帳本。櫃員使用帳本時在自己查閱和修改了的內容上貼一個個人專屬標籤。每次辦完業務後都會再瀏覽一遍,如果發現貼的不是自己的標籤,說明記錄被別的櫃員修改過了,本次業務就要作廢並重新辦理。

這就是樂觀並行化的基本原理。樂觀並行化的核心思想是先假設所有的任務都是相互獨立的。先並行執行任務,然後再驗證每個任務,如果驗證不通過,則把這個任務重新執行一遍,直到所有任務執行完畢。假設有 8 個並行任務以樂觀並行化的方式執行,期間需要訪問 2 個共享資源 A 和 B 。

階段 1 執行時,任務 1、任務 2 和任務 3 並行執行。但任務 2 和任務 3 同時訪問共享資源 B 產生了衝突,因此任務 3 在下一階段重新調度執行。階段2執行時任務 3 和任務 4 同時訪問了共享資源 B ,此時任務 4 重新調度執行,以此類推,直到所有任務執行完畢。可以看到整個過程中發生衝突的任務會不斷地重復執行。

樂觀並行化模型採用了一種多版本內存數據結構( multi-version in-memory data structure )用來記錄每一個寫入值及其版本信息(類似於銀行櫃員貼標籤)。

每個並行任務的運行分爲兩個階段:執行( execution )和驗證( validation )。執行階段會把所有讀數據和寫數據的行爲記錄下來,形成讀集( read set )和寫集( write set )。驗證階段會用讀集和寫集與多版本數據結構進行對比,如果對比發現不是最新的,則驗證不通過。

樂觀並行化模型發端於軟件事務內存( Software Transaction Memory ,簡稱 STM ),後者是數據庫領域無鎖編程的一種機制。由於區塊鏈網路對交易的處理天然的具備一種確定的順序,因此這一概念被引入並演化出了 Block-STM 機制。Aptos 和 Monad 採用了 Block-STM 作爲自己的並行執行機制。

值得一提的是, Sei 公鏈在即將發布的 v2 版本中棄用了原來的內存鎖模型,改爲採用樂觀並行化模型。Block-STM 執行速度極快,實驗環境中 Aptos 交易執行速度達到了驚人的 160k tps ,比順序執行交易快了 18 倍。

Block-STM 把復雜的交易執行和驗證交給了實現底層機制的核心團隊,開發者可以毫不費勁地像寫順序執行的程序一樣編寫智能合約。

2.5 嚴格狀態訪問列表

消息傳遞和共享內存機制是基於帳戶/餘額數據模型實現的,它記錄了每個鏈上帳戶的餘額信息。就好比銀行的帳本中記錄的是客戶 A 有餘額 1000 元,客戶 B 有餘額 600 元,每次處理交易只需要修改一下帳戶餘額狀態。

如果換一種思路,還可以在每次交易時只記錄交易的具體內容,形成交易流水,也能通過交易流水來計算用戶的帳戶餘額,例如有如下的交易流水:

客戶 A 開戶並存入1000元;

客戶 B 開戶(0元);

客戶 A 向客戶 B 轉帳100元。

通過讀取流水並進行計算,可以知道當前客戶 A 帳戶餘額爲900元;客戶 B 帳戶餘額爲100元。

UTXO( unspent tx output ,未花費的交易輸出)就類似這樣的交易流水數據模型,它是第一代區塊鏈比特幣用來表示數字貨幣的一種方式。每一筆交易都有輸入(怎麼獲得的)和輸出(怎麼花掉的),而 UTXO 可以簡單理解爲還沒有花掉的收款。

比如客戶 A 有 6 個 BTC ,他給客戶 B 轉帳 5.2 個 BTC ,還剩 0.8 個 BTC ,從 UTXO 的角度就可以看成:A 的 6 個價值 1 BTC 的 UTXO 被銷毀, B 獲得了 1 個價值爲 5.2 BTC 的新生成的 UTXO ,同時找零給 A 一個價值 0.8 BTC 的新生成的 UTXO 。即 6 個 UTXO 被銷毀,生成了 2 個新的 UTXO 。

交易的輸入和輸出串成鏈,並使用數字籤名記錄所有權信息,就形成了 UTXO 模型。採取這種數據模型的區塊鏈需要對某個帳戶地址的所有 UTXO 求和,才能知道當前帳戶餘額。嚴格狀態訪問列表( strict state access list )基於 UTXO 模型實現並行執行。它會提前計算每個交易要訪問的帳戶地址,形成訪問列表。

訪問列表有兩個作用:

(1)判斷交易安全性:交易執行時如果訪問了不在訪問列表中的地址,則執行失敗。

(2)並行執行交易:根據訪問列表形成交易的多個集合,每個交易集合之間在訪問列表上沒有交集(沒有依賴),因此多個交易集合就可以並行執行了。

3.行業增長驅動力

從內在規律上看,任何事物的發展都會經歷”從無到有“到”從有到優“的過程,人類對更快速度的追求是永恆的。爲解決區塊網路執行速度的問題誕生了各種各樣或鏈上或鏈下的解決思路。以 rollup 爲代表的鏈下解決方案已得到充分的價值發現,而並行 EVM 敘事還有很大探索空間。

從歷史背景上看,隨着 SEC 批準現貨比特幣 ETF 和即將發生的比特幣減半等事件,再疊加聯準會可能的降息操作,加密貨幣預期將迎來一段大牛市,行業的蓬勃發展需要更大吞吐量的區塊鏈網路基礎設施作爲堅實的基礎。

從資源管理上看,傳統的區塊網路是串行地處理交易的,這種處理方法雖然簡單,但也是對處理器資源的一種浪費。而並行區塊鏈實現了計算資源的物盡其用,充分”榨幹“了多核處理器的性能,提高了區塊網路的整體效能。

從行業的發展上看,雖然各種技術和商業模式的創新層出不窮,但 Web3 的成長潛力仍然有待挖掘。中心化網路能做到每秒推送 50000 多條消息、發送 340 萬封郵件、完成 100000 次谷歌搜索並讓成千上萬個玩家同時在線,而去中心化暫時還做不到。去中心化要與中心化分庭抗禮,拿下屬於自己的半壁江山,不斷優化並行執行機制,提高交易的吞吐量也是發展的必經之路。

從去中心化應用的發展上看,要吸引更多用戶,體驗上一定要下功夫。性能優化是提升用戶體驗的方向之一。對於 DeFi 用戶來說,要滿足高交易速度,低費率的需求。對於 GameFi 用戶來說,要滿足實時交互的需求。這些都需要並行執行作爲支撐。

4.存在的問題

去中心化、安全性和可擴展性三者只能滿足其二,此爲區塊鏈不可能三角。既然“去中心化”是不可撼動的一極,那麼“可擴展性”的提高就意味着“安全性”的降低。代碼是人寫的,是人寫的就容易出現錯誤。並行計算所帶來的技術復雜性爲安全隱患的滋生提供了溫牀。

多線程編程一是容易因爲各種復雜的並發控制操作不當導致競態條件問題;二是容易因爲訪問了無效的內存地址導致崩潰,甚至出現容易被攻擊者利用的緩衝區溢出漏洞。

至少能從三個角度評估項目的安全性。一看團隊背景。有系統編程經驗的團隊對多線程編程有豐富的經驗,見過並能處理80%的疑難雜症。系統編程一般涉及如下領域:

  • 操作系統
  • 各類設備驅動
  • 文件系統
  • 數據庫
  • 嵌入式設備
  • 密碼學
  • 多媒體編解碼
  • 內存管理
  • 網路
  • 虛擬化
  • 遊戲
  • 高級編程語言

二看代碼可維護性,編寫可維護性強的代碼是有章可循的,比如清晰的架構設計,合理運用設計模式實現代碼的可復用性,運用了測試驅動開發技術編寫了足夠多的單元測試代碼,通過合理的重構消除重復代碼等等。

三看採用的編程語言,有的新銳編程語言從設計上就強調內存安全的高並發性。編譯器會檢查代碼,一旦發現代碼有並發問題或者可能訪問無效的內存地址,就會編譯失敗,從而強迫開發者寫出足夠健壯的代碼。

Rust語言就是出類拔萃者,這也就是爲什麼我們會看到絕大多數並行區塊鏈項目都是用Rust語言開發的原因。有的項目甚至借鑑了 Rust 語言的設計實現了自己的智能合約語言,如 Fuel 的 Sway 語言等等。

5.標的梳理

5.1基於樂觀並行化模型

5.1.1從內存鎖走向樂觀並行

Sei 是基於開源技術的通用公鏈,於 2022 年成立。兩位創始人來自加州大學伯克利分校,團隊其他成員也都具有海外名校背景。

Sei 共獲得 3 輪融資,其中種子輪 500 萬美元,第一輪戰略融資 3000 萬美元,第二輪戰略融資未披露。Sei Network 還募集了總共 1 億美元基金,用於支持其生態發展。

2023 年 8 月, Sei 在主網上線,號稱速度最快的 L1 公鏈,每秒可執行 12500 筆交易,最終確定性僅需 380 ms,目前流通市值近 22 億美元。

目前 Sei 生態有 118 個項目,主要集中於 DeFi 、基礎設施、 NFT 、遊戲和錢包等賽道。社區目前在 Twitter 、 Discord 和 Telegram 分別有 65 萬、60 萬和 4 萬成員。

2023 年 11 月末, Sei 在其官方博客宣布將於 2024 年上半年啓動主網上線後最大的一次版本升級:Sei v2 。Sei v2 號稱第一條並行 EVM 區塊鏈,本次版本升級將帶來如下新功能:

  • 對 EVM 智能合約的向後兼容:開發人員不用修改代碼就可以遷移部署 EVM 智能合約
  • 對諸如 Metamask 等常見工具/應用的重用
  • 樂觀並行化:Sei v2 將放棄內存鎖的共享訪問機制,轉而採用樂觀並行化
  • SeiDB :對存儲層的優化
  • 支持以太坊和其他鏈之間的無縫互操作性

Sei 網路原先的交易並行執行是基於內存鎖模型實現的。在執行前所有待處理交易之間的依賴關係都會被解析並生成 DAG ,然後基於 DAG 對交易的執行順序進行精確編排,這種方式增加了合約開發人員的心智負擔,因爲他們不得不在開發合約時將邏輯編寫到代碼中。

正如上面技術原理部分所介紹的,新版本採用樂觀並行化之後,開發人員就可以像寫順序執行的程序那樣開發智能合約了。交易的調度、執行和驗證等一系列復雜機制,都由底層模塊負責處理。核心團隊在優化的提案設計上還引入通過預填充依賴關係更進一步提升並行執行能力的設計。

具體來說就是引入動態的依賴生成器,在執行前先分析交易的寫操作並將其預填充到多版本內存數據結構中,優化潛在的數據爭用。核心團隊經過分析得出結論,這樣的優化機制雖然不利於最好情況下的交易處理,但會顯著提升最壞情況下的執行效率。

5.1.2 L1賽道潛在潛在顛覆者:Monad

如果你錯過了上面一衆公鏈的發展,那麼 Monad 你一定不能錯過。因爲它被譽爲 L1 賽道的潛在顛覆者。

Monad 由 Jump Crypto 的兩位高級工程師於 2022 年創立,項目於 2023 年 2 月完成 1900 萬美元種子輪投資,2024 年 3 月, Paradigm 就領投 Monad 的一輪超 2 億美元的融資進行談判,如果成功,這將是自開年以來最大的一筆加密貨幣融資。

目前項目已經成功實現了上線內部測試網的裏程碑任務,正朝着下一步開放公共測試網而努力。

Monad 深受資本青睞有兩個突出的原因:一是技術背景過硬,二是善於營銷炒作。Monad Labs 團隊核心成員有 30 人,均在高頻交易、內核驅動和金融科技領域深耕數十年,在分布式系統領域有豐富的開發經驗。

項目的日常運營也十分的“接地氣”:持續地對其 Twitter 上 20 萬關注者和 Discord 上 15 萬成員進行“魔性營銷”。比如每週舉辦 meme 大賽,向社區徵集各種奇奇怪怪紫色動物的表情包或者視頻,在社區進行“精神傳播”。

Monad 的願景是成爲面向開發者的智能合約平台,爲以太坊生態帶來極致的性能提升。Monad 爲以太坊虛擬機引入了兩項機制:一是超標量流水線技術,二是改進的樂觀並行機制。

超標量流水線技術將交易的執行階段並行化。官方文檔舉了一個很形象的例子。洗衣服就像區塊鏈對交易的處理,也要分多個階段完成。傳統的處理方式是對每堆髒衣服進行清洗、烘幹、折疊和儲存,然後再處理下一堆。

超標量流水線則是在第一堆衣服烘幹的時候就開始第二堆衣服的清洗,第一堆衣服在折疊的時候第二堆、第三堆衣服已經在分別烘幹和清洗了,因此每一個階段的處理都不閒着。

樂觀並行機制將交易的執行並行化。 Monad 採用了樂觀並行化實現並行執行。它還實現了自己的靜態代碼分析器,用於預測交易之間的依賴關係,僅在前置的依賴交易執行完畢後再調度後續交易執行,這樣就大大減少了因驗證失敗導致的交易重復執行。

目前性能達到 10000 TPS 並能在 1 秒的時間出塊。隨着項目的進展,核心團隊還會繼續探索更多的優化機制。

5.1.3 高度去中心化的L1項目:Canto

成立於 2022 年,沒有官方基金會、不搞預售、不歸屬任何組織、不進行融資,完全依靠社區驅動,甚至連核心團隊都是匿名的,以松散的組織方式進行工作。這就是基於 Cosmos SDK 打造的、高度去中心化的 L1 項目 Canto 。

雖然是兼容 EVM 的通用區塊鏈,但 Canto 的首要願景是成爲可訪問的、透明的、去中心化和免費的 DeFi 價值平台。通過對賽道的長期研究發現,任何健康的 DeFi 生態項目都包含 3 大基礎要素:

  1. 像 Uniswap、Sushiswap 那樣的去中心化交易所( DEX );
  2. 像 Compound、Aave 那樣的借貸平台;
  3. 像 DAI、USDC 或 USDT 那樣的去中心化代幣。

然而以往的 DeFi 生態最後都回到了同一個宿命:發行治理協議代幣,代幣的價值取決於生態能夠從其未來用戶那裏抽取多少使用費,抽取越多則價值越大。這就好比每個 DeFi 協議就像一個按小時付費的私人停車場,用的人越多估值就越大。

Canto 採取了另一種思路:建設針對 DeFi 的免費公共基礎設施( Free Public Infrastructure ),把自己打造成一個免費停車場,供其生態項目免費使用。

基礎設施包含 3 種協議:去中心化交易所 Canto DEX 、從 Compound v2 分叉出來的池化借貸平台 Canto Lending Market( CLM )以及可通過抵押資產從 CLM 借出的穩定幣 NOTE 。

Canto DEX 以一種無法升級、無需治理的協議永續運行,既不可發行代幣,也不會收取額外費用。避免生態內的 DeFi 應用的各種尋租行爲導致弱肉強食的零和博弈。

借貸平台 CLM 的治理權由質押者控制,質押者充分享受生態發展帶來的利益,反過來又給開發者和 DeFi 用戶創造最好的環境,激勵他們不斷投入。而貸款者借出 NOTE 所產生的利息都會支付給借款人,協議分文不取。

對開發者, Canto還引入了 Contract Secured Revenue 合約收入分配模型。允許按一定比例將用戶在鏈上與合約交互時產生的費用分配給開發者。Canto 這一系列商業模式創新做出了“一箭三雕”的效果。通過提供開放、免費的金融基礎設施創造建設性的生態繁榮基礎。

通過各種方式讓利給生態的開發者和用戶,激勵他們加入並不斷豐富生態。通過將“鑄幣權”牢牢掌握在自己手裏,爲各種去中心化應用創造了跨應用流動性的可能,生態越繁榮,代幣就越值錢。當美東時間 2024 年 1 月 26 日啓用 CSR 提案獲社區投票通過後,其代幣 $CANTO 迎來了一波漲。

完成這一系列商業模式創新後, Canto 在 2024 年 3 月 18 日這天,在官方博客公布了自己新一輪的技術迭代計劃。

除了採用新版本 Cosmos SDK 、集成新技術降低存儲訪問瓶頸外 Canto 還將進行並行 EVM 升級:通過實現 Cyclone EVM 引入樂觀並行化。

Canto 使用的 Cosmos SDK 將交易處理分爲 Proposal、Voting 和 Finalization 三個階段。Voting 中的 ProcessProposal 子過程負責交易的並行執行。並行執行引擎負責執行交易,衝突檢測引擎負責驗證交易有效性。

若無效,回退給執行引擎重新執行;若有效,提交交易給後續處理流程。相信經過此輪技術升級 Canto 的代幣還會有更引人矚目的表現。

5.2 基於嚴格狀態訪問列表:Fuel

Fuel 由虛擬機 FuelVM 、受 Rust 啓發的合約開發語言 Sway 和相關工具鏈組成,是量身定制的模塊化“以太坊 rollup 操作系統”。Fuel 項目成立於 2019 年,2020 年 12 月, Fuel Labs 啓動了以太坊上第一個 optimistic rollup 執行層 Fuel v1 ,經過 3 年多的發展,項目終於要在2024年第三季度上線主網。

Fuel 分別在 2021 年和 2022 年完成了 150 萬美元和 8000 萬美元融資。核心團隊擁有 60 多名工程師,創始人 John Adler 是數據可用性解決方案 Celestia Labs 的聯合創始人,還是 optimistic rollup 方案最早的提出者之一。運營方面,項目在 Twitter 和 Discord 分別有27萬和39萬成員。

在鏈上一筆一筆執行交易要支付 gas 費、要爭奪寶貴的區塊空間,速度還慢。因此自然而然的就會想到各種擴容方案,比如批處理交易的執行,然後再一起打包到鏈上去結算,加快執行速度。

rollup 就是一種在 L1 之外運行的擴容解決方案,它在鏈下批量執行交易,然後向 L1 發送交易數據或執行證明,通過 DA 層保證安全性並對交易進行結算。rollup 有兩種主要類型:基於樂觀機制( optimistic )的和基於零知識證明( ZK )的。

optimistic rollup 假設交易是有效的,一旦發現惡意或錯誤交易就生成欺詐證明交給 L1 回滾處理。ZK rollup 在不暴露交易細節的前提下通過復雜運算生成交易有效性證明,發布到 L1 ,以證明 rollup 正確執行了交易。所以 rollup 是一種區塊鏈執行層技術。

盡管 rollup 加快了交易的執行速度,但現有的實現大多是針對單體區塊鏈設計的。開發人員不得不在技術上做出各種各樣的妥協,這就限制了 rollup 充分發揮其性能。而針對模塊化區塊鏈的新趨勢,業界又沒有適配的 rollup 方案。Fuel 就是爲填補這一空白而誕生的。

Fuel 使用 UTXO 作爲數據模型,採用這種數據模型有一個優點:其交易輸出只有兩種狀態,要麼已花費,永久記錄於區塊的交易歷史中;要麼未花費,可用於未來的交易中。進而做到鏈上每個節點存儲狀態數據最小化。在此基礎上, Fuel 檢查每一筆交易訪問的帳戶信息,在執行交易之前找出依賴關係,調度無依賴關係的交易並行執行,提高交易處理的吞吐量。

5.3跨鏈整合L1鏈的L2解決方案:Neno、Eclipse和Lumio

L2 解決方案有個共性:它們將兩種虛擬機的能力結合起來,提升交易的執行速度。具體地說就是利用並行 L1 來執行交易,但是與其他鏈進行兼容(雙虛擬機支持)。所不同的是不同的項目採取的兼容機制不一樣。這方面 Neon 、 Eclipse 和 Lumio 頗具代表性。

Neon 號稱 Solana 生態第一個並行 EVM 項目,開發者可以利用它無縫地將以太坊生態項目遷移到 Solana 生態中來。Eclipse 是另一個 Solana 生態中兼容 EVM 的最快二層協議,採用模塊化架構構建。這三個項目中只有 Neon 發行了自己的代幣,並做到了 7800 多萬的流通市值。

其他兩個項目還處於比較早期的階段。Lumio 則結合了 Aptos 和以太坊構建了 optimistic rollup 二層協議,以 Move VM 的速度高效執行以太坊應用。

從融資情況上看, Neon 分別在 2021 年 11 月和 2023 年 6 月完成 4000 萬美元和 500 萬美元融資,共計 4500 萬美元。Eclipse 分別在 2022 年 8 月、2022 年 9 月和 2024 年 3 月完成 600 萬美元、900 萬美元和 5000 萬美元融資,共計 6500 萬美元。Lumio 暫未融資。

三個項目均未形成規模性的應用生態,但在各主要社交媒體平台都有數萬到數十萬不等的關注者或成員,有不小的社區活躍度,如下表所示。

從實現機制上看, Neon 是 Solana 網路上的 EVM 模擬器,以智能合約的形式運行。開發人員可以使用諸如 Solidity 、 Vyper 這樣的語言編寫 dApp 應用,並可以使用 MetaMask 、 Hardhat 、 Remix 等以太坊工具鏈和兼容的以太坊 RPC API 、帳戶、籤名和代幣標準等。與此同時享受 Solana 帶來的低費率、高交易執行速度以及並行執行的能力。

以太坊 dApp 前端發來的以太坊交易經過代理轉換生成 Solana 交易,然後在模擬器中執行,修改鏈上狀態。好比我們常在 PC 上使用的遊戲模擬器,能讓我們在臺式機上玩 Switch、PS 等遊戲平台上的獨佔遊戲, Neon 能讓以太坊開發人員在 Solana 網路上運行以太坊應用。

Eclipse 採取了另一種實現思路:通過 SVM 執行交易,通過 EVM 結算交易。 Eclipse 採取模塊化區塊鏈的架構,即它只負責交易的執行,而把其他的職責“外包”出去,通過模塊化組合形成統一解決方案。

比如利用 Celestia 管理數據可用性,利用以太坊執行交易的結算。Eclipse 利用 SVM 保證了執行速度,通過以太坊的驗證和結算保證了安全性。

Lumio 採用的是一種與執行層和結算層無關的設計思路,可支持多種虛擬機,兼容各種 L1/L2 網路:Ethereum、Aptos、Optimism、Avalanche、zkSync ,諸如此類。它通過 Move VM 執行交易,通過 EVM 結算交易,這樣一來就把以太坊生態和 Aptos 生態連接起來了。

然而 Lumio 的雄心並不止步於此,它的願景是提供跨虛擬機調用,以最快的速度和最低的費率實現多種區塊鏈流動性的互聯。

以上就是目前與並行 EVM 敘事有關的主要項目,如下圖所示。

6.結論與展望

人們愛把比特幣比作“分布式帳本”,把以太坊比作“分布式狀態機”。如果把運行區塊鏈網路的所有節點看作是一臺計算機的話,那麼並行區塊鏈本質上就是研究如何榨幹這臺“計算機”的處理器資源,以實現執行速度的最大化。

這是計算技術不斷發展的歷史必然性,就像處理器從單核發展到多核,操作系統從單用戶單線程發展到多用戶多線程一樣。這對於推動行業的不斷發展有着非凡的意義。

並行 EVM 的技術原理可以拆解爲虛擬機和並行執行機制兩個組成部分。在區塊鏈的語境下,虛擬機集成了一套指令集,用於分布式地執行合約,運行 dApp。而並行執行機制主要研究如何最大限度的提高交易執行的速度,同時又保證交易結果的正確。

一方面,並行 EVM 有技術原理上的共性。首先,樂觀並行化模型是 L1 公鏈的共識。但這並不代表內存鎖模型就一無是處。因爲技術沒有高下之分,只有開發人員有水平好壞之別。

其次,以 Fuel 爲代表的項目堅信鏈下擴容機制只有模塊化後才能發揮最大性能。最後,一衆 L2 項目則通過整合並行 L1 公鏈來提高交易吞吐量,實現跨生態擴容能力。

另一方面,並行區塊鏈又有自己獨特的技術建樹。哪怕採用的是同一種並行執行模型,不同的團隊也採用了不同的架構設計模式、數據模型或預處理機制。技術的探索是無止境的,不同的項目會根據不同的願景,在同一個基礎上發展出不同的技術來推動實踐不斷向更高層次發展。

展望未來,還會有更多的 L1 和 L2 項目,加入並行 EVM 的競爭。L1 賽道會形成並行 EVM 和並行非 EVM 兩大陣營在處理器資源、存儲資源、網路資源、文件系統資源和設備資源全面競爭的格局,還會誕生更多與性能提升有關的新敘事。而 L2 賽道會朝着區塊鏈虛擬機模擬器或模塊化區塊鏈的方向發展。

在未來,基礎設施的優化會帶來更快的速度、更低的費用以及更高的效率。Web3 創業者可以大膽的進行商業模式創新,爲全世界創造更好的去中心化產品用戶體驗,進一步繁榮行業生態。對於 Web3 投資者而言,僅僅關注技術那是遠遠不夠的。

在選擇投資標的的時候,投資者不但要看敘事,還要看市值和流動性,要選擇“好敘事”、“低市值”和“高流動性”的項目,然後研究其業務、團隊背景、經濟模型、市場營銷、生態項目等方方面面,從而發現潛力項目,找到適合的投資途徑。

並行 EVM 處在發展的早期階段, Neon、Monad、Canto、Eclipse、Fuel 和 Lumio 還處於價值未被充分發現的階段。尤其是 Monad 、Canto 和 Fuel 。

從 Monad 的營銷風格來看,不但其本身值得關注,而且未來其生態中的 meme 項目也很值得留意,可能會有因炒作熱度產生的暴富神話。而 Canto 已滿足“好敘事”和“低市值”的條件,是否是一個好的投資標的還需要對其各項指標進行深入研究。Fuel 代表着模塊化區塊鏈的熱門發展方向,也可能會誕生新的投資機會,這些都是值得我們關注的方向。

聲明:

  1. 本文轉載自[Gryphsis Academy],原文標題”萬字解讀並行 EVM :如何突破區塊鏈性能瓶頸?“,著作權歸屬原作者[@leesper6],如對轉載有異議,請聯系Gate Learn團隊,團隊會根據相關流程盡速處理。

  2. 免責聲明:本文所表達的觀點和意見僅代表作者個人觀點,不構成任何投資建議。

  3. 文章其他語言版本由Gate Learn團隊翻譯, 在未提及Gate.io的情況下不得復制、傳播或抄襲經翻譯文章。

萬字解讀並行 EVM :如何突破區塊鏈性能瓶頸?

中級4/15/2024, 3:33:01 PM
本文深入探討並行EVM的技術細節和市場前景,解析如Sei、Monad、Canto等主要區塊鏈項目的並行執行機制,並分析了它們在行業中的潛在影響和市場地位。通過並行執行優化,區塊鏈網路能夠極大提升處理速度和效率,支撐Web3領域的廣泛發展。

TL;DR

1、並行 EVM 是鏈上交易量發展到一定程度後出現的一種新敘事。並行 EVM 主要分爲單體區塊鏈和模塊化區塊鏈。單體區塊鏈又分爲 L1 和 L2 。並行 L1 公鏈分爲兩大陣營:EVM 和非 EVM 。目前並行 EVM 敘事處於發展的早期階段;

2、拆解並行 EVM 的技術實現路徑,主要包含虛擬機和並行執行機制兩大方面。在區塊鏈的語境下,虛擬機是指對分布式狀態機進行虛擬的進程虛擬機,用於執行合約;

3、並行執行是指發揮多核處理器的優勢,盡可能在同一時間同時執行多個交易,而保證最終狀態與串行執行時結果一致;

4、並行執行機制分爲消息傳遞、共享內存、和嚴格狀態訪問列表三大類。共享內存又分爲內存鎖模型和樂觀並行化。無論哪種機制均提高了技術的復雜性;

5、並行 EVM 敘事既有行業增長的內在驅動因素,又需要從業者高度關注其可能存在的安全問題;

6、並行 EVM 各標的項目均以不同的方式提供了並行執行思路,既有技術上的共性又有自己的獨特建樹。

1.行業綜述

1.1歷史沿革

性能已經成爲行業進一步發展的瓶頸。區塊鏈網路爲個人和企業進行交易創造了一種新的、去中心化的信任基礎。

以比特幣爲代表的第一代區塊鏈網路以分布式記帳的方式開創了去中心化的電子貨幣交易新模式,革命性地開創了一個新時代。以以太坊爲代表的第二代區塊鏈網路則充分發揮想象力,提出以分布式狀態機的方式實現去中心化應用( dApp )。

從那時起,區塊鏈網路開啓了它自己十幾年飛速發展的歷史,從 Web3 基礎設施到以 DeFi 、 NFT 、社交網絡和 GameFi 等爲代表的各種賽道,誕生了無數或技術或商業模式的創新。行業的蓬勃發展需要不斷吸引新用戶參與去中心化應用的生態建設,這反過來又對產品體驗提出了更高的要求。

而 Web3 作爲一種“前無古人”的新產品形態,不但要在滿足用戶需求上有所創新(功能性需求),還要考慮怎樣在安全性和性能之間取得平衡(非功能性需求)。自誕生以來,人們提出了各種各樣的解決方案試圖解決性能問題。

這些解決方案大致可以分爲兩類:一類是鏈上擴容方案,如分片( sharding )和有向無環圖( DAG );一類是鏈下擴容方案,如 Plasma 、閃電網絡、側鏈和 Rollups 等。但這還遠遠跟不上鏈上交易快速增長的速度。

尤其是經歷了 2020 年 DeFi Summer 以及 2023 年年末比特幣生態中銘文的持續爆發,業界迫切需要新的性能提升方案來滿足“高性能、低費率”的要求。並行區塊鏈就是在這樣的背景下誕生的。

1.2市場規模

並行 EVM 敘事標志着並行區塊鏈領域形成了兩強相爭的競爭格局。以太坊對交易的處理是串行的,交易要按順序一個接一個的執行,資源的利用率不高。如果將串行處理的方式變爲並行處理將帶來性能的巨大提升。

以太坊競爭對手如 Solana 、 Aptos 和 Sui 都是自帶並行處理能力的,生態也發展的很不錯,代幣流通市值分別達到 450 億、33 億和 19 億美元,它們形成了並行非 EVM 陣營。面對挑戰,以太坊生態也不甘示弱,紛紛站出來爲 EVM 賦能,它們形成了並行 EVM 陣營。

Sei 在其 v2 版本升級提案中高調宣稱將成爲“第一個並行 EVM 區塊鏈”,當前流通市值 21 億美元,預後還有更大的發展。當下營銷熱度第一的並行 EVM 新公鏈 Monad 很受資本青睞,潛力也不可小視。而市值1.7億美元、自帶免費公共基礎設施的 L1 公鏈 Canto 也宣布了自己的並行 EVM 升級提案。

除此之外,一衆還處在早期階段的 L2 項目也在通過整合多種 L1 鏈的能力提供跨生態的性能提升。除 Neon 做到了 6900 萬美元流通市值外,其他項目還缺少相關數據。相信未來還會出現更多的 L1 和 L2 項目加入並行區塊鏈戰場。

不但並行 EVM 敘事還有很大的市場增長空間,而且並行 EVM 敘事所屬的並行區塊鏈板塊也還有很大的市場增長空間,因此市場前景廣闊。

目前 L1 和 L2 整體流通市值爲 7521.23 億美元,並行區塊鏈流通市值爲 525.39 億美元,僅佔約 7% 。而其中並行 EVM 敘事相關項目流通市值 23.39 億美元,僅佔並行區塊鏈流通市值的 4% 。

1.3行業圖譜

業界一般將區塊鏈網路分爲 4 層結構:

  1. Layer(網路):區塊鏈底層網路,處理基礎的網路通信協議
  2. Layer 1(基礎設施):依賴各種共識機制對交易進行驗證的去中心化網路
  3. Layer(擴展):依賴於 Layer 1 的各種二層協議,旨在解決 Layer 1 的各種局限性,尤其是可擴展性
  4. Layer 3(應用):依賴於 Layer 或 Layer 1 ,用於構建各種去中心化應用( dApp )

並行 EVM 敘事項目主要分爲單體區塊鏈和模塊化區塊鏈,單體區塊鏈又分爲 L1 和 L2 。從項目總數和幾個主要賽道的發展可以看出,各並行 EVM L1 公鏈生態相比以太坊生態仍然存在很大的發展空間。

DeFi賽道有“高速低費率”的訴求,遊戲賽道有“強實時交互”的訴求,二者都對執行速度有一定要求。並行 EVM 必然會給這些項目帶來更好的用戶體驗,推動行業的發展進入到全新的階段。

L1 是自帶並行執行能力的新公鏈,是高性能基礎設施。L1 這一派中,以 Sei v2、Monad 和 Canto 爲代表的項目自行設計並行 EVM ,兼容以太坊生態並提供高吞吐量交易處理能力。

L2 通過整合其他 L1 鏈的能力,提供跨生態合作的擴容能力,是 rollup 的顯學。L2 這一派中, Neon 是 Solana 網路上的 EVM 模擬器, Eclipse 利用 Solana 執行交易但在 EVM 上做結算。Lumio 與 Eclipse 類似,只是把執行層換成了 Aptos 。

在上述單體區塊鏈解決方案之外, Fuel 提出了自己的模塊化區塊鏈思路。它將在第二個版本中將自己定位成以太坊 rollup 操作系統,提供更靈活、更徹底的模塊化執行能力。

Fuel 專注於執行交易,而將其餘部分外包給一個或多個獨立層的區塊鏈,從而實現更靈活的組合:既可以成爲 L2 ,也可以成爲 L1 ,甚至是側鏈或狀態通道。目前 Fuel 生態有17個項目,主要集中在 DeFi 、 NFT 和基礎設施三個領域。

不過只有 Orally 跨鏈預言機已投入實際應用。去中心化借貸平台 Swaylend 和永續合約交易平台 SPARK 上了測試網,其他項目還在開發中。

2.技術實現路徑

要實現去中心化的交易執行,區塊鏈網路必須履行 4 個職責:

  • 執行:執行和驗證交易
  • 數據可用性:分發新區塊到區塊網路的所有節點
  • 共識機制:驗證區塊,達成共識
  • 結算:結算並記錄交易的最終狀態

並行 EVM 主要是對執行層的性能優化。這又分爲一層網路( L1 )解決方案和二層網路( L2 )解決方案兩種。L1 的解決方案引入交易並行執行機制,讓交易在虛擬機中盡量並行執行。L2 的解決方案本質上是利用已經並行化的 L1 虛擬機實現某種程度上的“鏈下執行+鏈上結算”。

所以要理解並行 EVM 的技術原理,就要將其拆解開來:先理解什麼是虛擬機( virtual machine )再理解什麼是並行執行( parallel execution )。

2.1 虛擬機

在計算機科學中,虛擬機是指對計算機系統進行的虛擬( virtualization )或者模擬( emulation )。

虛擬機分爲兩種,一種叫系統虛擬機( system virtual machine ),可以將一臺物理機虛擬化爲多臺機器,運行多個操作系統,從而提高資源利用率。另一種叫進程虛擬機( process virtual machine ),爲某些高級編程語言提供抽象,讓使用這種語言編寫的計算機程序以一種平台無關的方式運行在不同平台上。

JVM 就是一種爲 Java 編程語言設計的進程虛擬機。Java 語言編寫的程序首先被編譯成 Java 字節碼(一種中間狀態的二進制代碼), Java 字節碼由 JVM 解釋執行:JVM 將字節碼送給解釋器,由解釋器翻譯成不同機器上的機器碼,然後在機器上運行。

區塊鏈虛擬機是進程虛擬機的一種。在區塊鏈的語境下,虛擬機是指對分布式狀態機進行的虛擬,用於分布式地執行合約,運行 dApp 。類比 JVM , EVM 就是一種爲 Solidity 語言設計的進程虛擬機,智能合約首先被編譯成 opcode 字節碼,然後由 EVM 解釋執行。

以太坊之外的新興公鏈在實現自己的虛擬機時,更多採用的是基於 WASM 或 eBPF 字節碼的虛擬機。WASM 是一種體積小、加載快、可移植且基於沙盒安全機制的字節碼格式,開發人員可以使用多種編程語言( C 、 C++ 、 Rust 、 Go 、 Python 、 Java 甚至 TypeScript 等)編寫智能合約,然後編譯成 WASM 字節碼並執行。Sei 公鏈上執行的智能合約正是採用了這一字節碼格式。

eBPF 前身是 BPF ( Berkeley Packet Filter ,伯克利包過濾器),原本是用於網路數據包的高效過濾,後經過演化形成了 eBPF ,提供更豐富的指令集。

它是一項允許在不改動源碼的情況下對操作系統內核進行動態幹預和修改其行爲的革命性技術。後來這項技術從內核中走出來,發展出了用戶態 eBPF 運行時,其具有高性能、安全和可移植性。在 Solana 上執行的智能合約都會編譯成 eBPF 字節碼並在其區塊鏈網路上運行。

而其他的 L1 公鏈中, Aptos 和 Sui 使用 Move 智能合約編程語言,編譯成特有的字節碼在 Move 虛擬機上執行。Monad 則自行設計了兼容 EVM opcode 字節碼( Shanghai fork )的虛擬機。

2.2並行執行

並行執行是這樣一種技術:

  1. 能夠發揮多核處理器的優勢同時處理多個任務,增大系統吞吐量;
  2. 確保得到的交易結果與按順序串行執行交易時完全相同。

區塊鏈網路常用 TPS (每秒處理的交易數量)作爲衡量處理速度的技術指標。並行執行的機制比較復雜,也很考驗開發人員的技術水平,要解釋清楚並不容易。下面從一個“銀行”的例子入手,解釋什麼是並行執行。

(1)首先,什麼是串行執行?

情況1:如果我們把系統看成一家銀行,把處理任務的 CPU 看成櫃臺,那麼串行執行任務就好比這家銀行只有一個櫃臺受理業務。此時來銀行辦業務的客戶(任務)只能排成一條長龍,挨個辦業務。對於每個客戶,櫃臺工作人員都要重復同樣的動作(執行指令)來爲客戶辦理業務。沒有輪到自己時客戶只能等待,這就造成交易時間的延長。

(2)那麼什麼是並行執行呢?

情況2:此時銀行看到人滿爲患,就多開了幾個櫃臺來處理業務,有 4 個櫃員在櫃臺同時處理業務,速度就比原來快了約 4 倍,那麼客戶排隊的時間大約也減少到了原來的 1/4,銀行辦理業務的速度就提升。

(3)如果不做保護,兩個人同時給另一個人轉帳會發生什麼錯誤?

情況3:A 、 B 和 C 三個人,他們的帳戶上分別有2 ETH 、1 ETH 和 0 ETH ,現在 A 和 B 分別要給 C 轉帳 0.5 ETH 。在一個交易串行執行的系統中,不會出現任何問題(左箭頭“<=”表示讀取帳本,右箭頭“=>”表示寫入帳本,下同):

但並行執行並沒有它看上去的那麼簡單。有很多很微妙的細節,稍不注意就會導致非常嚴重的錯誤。如果 A 和 B 對 C 的轉帳交易是並行執行的,那麼根據每個步驟執行先後順序的不同,就有可能產生不一致的結果:

並行任務 1 執行 A 到 C 的轉帳,並行任務 2 執行 B 到 C 的轉帳。表中帶*號的步驟都是有問題的:由於任務是並行執行的,在步驟 2 中並行任務 1 做的收支平衡計算還沒來得及寫入帳本,在步驟 3 中任務 2 就把 C 的帳戶餘額(此時仍然是 0 )讀取出來了,並在步驟 5 中基於餘額0做了錯誤的收支平衡計算,然後在步驟 6 的帳本更新操作中把步驟 4 中已經更新的帳戶餘額 0.5 錯誤地再次更新成了 0.5。導致雖然 A 和 B 都同時轉帳了 0.5 ETH 給 C ,而交易執行完畢後 C 的帳戶餘額卻只有 0.5 ETH ,另外 0.5 ETH 不翼而飛了。

(4)如果不做保護,沒有依賴關係的兩個任務並行執行不會出錯

情況4:並行任務1執行 A (餘額2 ETH )轉帳0.5 ETH 給 C (餘額0 ETH ),並行任務2執行 B (餘額1 ETH )轉帳0.5 ETH 到 D (餘額0 ETH )。可以看到兩個轉帳任務之間沒有依賴關係。那麼不管兩個任務的步驟如何交錯執行,都不會有上面的問題:

從兩種場景的對比可以分析得出,只要任務之間存在依賴,並行執行時就有可能發生狀態更新錯誤,反之則不會發生錯誤。滿足以下 2 個條件之一,就稱任務(交易)之間是有依賴關係的:

  1. 一個任務寫入的輸出地址是另一個任務讀取的輸入地址;
  2. 兩個任務輸出到同一個地址。

這並不是去中心化特有的。任何涉及到並行執行的場景都會因爲多個有依賴的任務之間不受保護地訪問共享資源(銀行例子中的“帳本”、計算機系統中的共享內存等)而出現數據不一致,稱爲競態條件問題(data races )。

業界在解決並行執行的競態條件問題上提出了三種執行機制:消息傳遞機制、共享內存機制和嚴格狀態訪問列表機制。

2.3 消息傳遞機制

情況 5 :假設銀行有 4 個櫃臺同時爲客戶辦理業務,現在給 4 個櫃臺的櫃員每個人手裏發一本專屬帳本,這個帳本只有自己能修改。上面記錄了自己所服務的客戶的帳戶餘額。

每個櫃員在爲客戶辦理業務時,如果該客戶的信息在自己的帳本上能查到,那麼就直接辦理;否則就給別的櫃員喊話告知客戶要辦理的業務,別的櫃員聽到後進行辦理。

這就是消息傳遞模型的原理。Actor模型就是消息傳遞模型的一種,每一個負責處理交易的執行者都是一個 actor (櫃員),它們都有可以訪問自己的私有數據(專屬帳本),如果要訪問別人的私有數據,只能通過發消息來實現。

Actor 模型的優點在於每個 actor 都只能訪問自己的私有數據,因此就不會出現競態條件問題。

它的缺點有 2 個,一是每個 actor 都只能串行地執行,在某些場景中並沒有發揮並行優勢(比如 2 號、3 號和 4 號櫃員同時發消息問 1 號櫃員客戶 A 的帳戶餘額是多少,1 號櫃員在這樣的模型中就只能一個一個的處理消息,而這本來是可以並行處理的)。

二是沒有一個全局的有關當前系統狀態的信息,如果系統業務復雜,將很難了解全貌、定位和修復 bug 。

2.4 共享內存機制

2.4.1 內存存鎖模型

情況 6 :假設銀行只有一個大帳本,上面記錄了所有客戶的帳戶餘額。帳本旁邊只有一支籤字筆可以用來修改帳本。

在這種場景下,4 個櫃員在辦理業務時就看誰跑得快了:一個櫃員搶先拿到籤字筆(加鎖)開始辦理業務修改帳本,其他 3 個櫃員就只能等着。直到櫃員用完將筆放下(解鎖),其他 3 個櫃員再去爭奪籤字筆的使用權,如此循環下去,這就是內存鎖模型( memory locks )。

內存鎖就是讓並行執行的任務在訪問共享資源的時候做一個鎖( lock )的操作,鎖住之後對共享資源進行訪問,此時別的任務要等待它修改完之後解鎖( unlock )才能再次鎖住並訪問。

讀寫鎖( read-write lock )的處理更精細化,可以對共享資源加讀鎖( read lock )或者寫鎖( write lock )。區別是多個並行任務可以加多次讀鎖並讀取共享資源數據,此時不允許修改;而寫鎖只能加一把,且加了之後只能由加鎖者獨佔訪問。

Solana 、 Sui 和 Sei v1 採用的就是基於內存鎖的共享內存模型。這種機制看上去簡單,但實現起來很復雜,很考驗開發人員對多線程編程的駕馭能力。一個不小心,就會留下各種各樣的 bug :

情況1:任務鎖住共享資源,但在執行的過程中因出錯崩潰退出,共享資源被鎖住無法訪問;

情況2:任務已經加鎖,但是執行過程中因業務邏輯嵌套出現二次加鎖,導致自己等待自己。

內存鎖模型最容易出現死鎖( dead lock )、活鎖( live lock )和飢餓( starvation )等問題:

(1)多個並行任務爭奪多個共享資源,每個任務都佔有了其中的一部分,都在等待對方釋放資源,就會出現死鎖問題;

(2)並行任務檢測發現還有其他並行任務處於活躍狀態,於是主動讓出自己佔有的共享資源,導致你讓過來我讓過去,發生活鎖;

(3)優先級高的並行任務總是能獲得共享資源訪問權,其他低優先級任務長時間等待,發生“飢餓”。

2.4.2 樂觀並行化

情況 7 :銀行 4 個櫃員每個人在辦理業務時都可以獨立查閱和修改帳本,而不管別的櫃員在沒在用帳本。櫃員使用帳本時在自己查閱和修改了的內容上貼一個個人專屬標籤。每次辦完業務後都會再瀏覽一遍,如果發現貼的不是自己的標籤,說明記錄被別的櫃員修改過了,本次業務就要作廢並重新辦理。

這就是樂觀並行化的基本原理。樂觀並行化的核心思想是先假設所有的任務都是相互獨立的。先並行執行任務,然後再驗證每個任務,如果驗證不通過,則把這個任務重新執行一遍,直到所有任務執行完畢。假設有 8 個並行任務以樂觀並行化的方式執行,期間需要訪問 2 個共享資源 A 和 B 。

階段 1 執行時,任務 1、任務 2 和任務 3 並行執行。但任務 2 和任務 3 同時訪問共享資源 B 產生了衝突,因此任務 3 在下一階段重新調度執行。階段2執行時任務 3 和任務 4 同時訪問了共享資源 B ,此時任務 4 重新調度執行,以此類推,直到所有任務執行完畢。可以看到整個過程中發生衝突的任務會不斷地重復執行。

樂觀並行化模型採用了一種多版本內存數據結構( multi-version in-memory data structure )用來記錄每一個寫入值及其版本信息(類似於銀行櫃員貼標籤)。

每個並行任務的運行分爲兩個階段:執行( execution )和驗證( validation )。執行階段會把所有讀數據和寫數據的行爲記錄下來,形成讀集( read set )和寫集( write set )。驗證階段會用讀集和寫集與多版本數據結構進行對比,如果對比發現不是最新的,則驗證不通過。

樂觀並行化模型發端於軟件事務內存( Software Transaction Memory ,簡稱 STM ),後者是數據庫領域無鎖編程的一種機制。由於區塊鏈網路對交易的處理天然的具備一種確定的順序,因此這一概念被引入並演化出了 Block-STM 機制。Aptos 和 Monad 採用了 Block-STM 作爲自己的並行執行機制。

值得一提的是, Sei 公鏈在即將發布的 v2 版本中棄用了原來的內存鎖模型,改爲採用樂觀並行化模型。Block-STM 執行速度極快,實驗環境中 Aptos 交易執行速度達到了驚人的 160k tps ,比順序執行交易快了 18 倍。

Block-STM 把復雜的交易執行和驗證交給了實現底層機制的核心團隊,開發者可以毫不費勁地像寫順序執行的程序一樣編寫智能合約。

2.5 嚴格狀態訪問列表

消息傳遞和共享內存機制是基於帳戶/餘額數據模型實現的,它記錄了每個鏈上帳戶的餘額信息。就好比銀行的帳本中記錄的是客戶 A 有餘額 1000 元,客戶 B 有餘額 600 元,每次處理交易只需要修改一下帳戶餘額狀態。

如果換一種思路,還可以在每次交易時只記錄交易的具體內容,形成交易流水,也能通過交易流水來計算用戶的帳戶餘額,例如有如下的交易流水:

客戶 A 開戶並存入1000元;

客戶 B 開戶(0元);

客戶 A 向客戶 B 轉帳100元。

通過讀取流水並進行計算,可以知道當前客戶 A 帳戶餘額爲900元;客戶 B 帳戶餘額爲100元。

UTXO( unspent tx output ,未花費的交易輸出)就類似這樣的交易流水數據模型,它是第一代區塊鏈比特幣用來表示數字貨幣的一種方式。每一筆交易都有輸入(怎麼獲得的)和輸出(怎麼花掉的),而 UTXO 可以簡單理解爲還沒有花掉的收款。

比如客戶 A 有 6 個 BTC ,他給客戶 B 轉帳 5.2 個 BTC ,還剩 0.8 個 BTC ,從 UTXO 的角度就可以看成:A 的 6 個價值 1 BTC 的 UTXO 被銷毀, B 獲得了 1 個價值爲 5.2 BTC 的新生成的 UTXO ,同時找零給 A 一個價值 0.8 BTC 的新生成的 UTXO 。即 6 個 UTXO 被銷毀,生成了 2 個新的 UTXO 。

交易的輸入和輸出串成鏈,並使用數字籤名記錄所有權信息,就形成了 UTXO 模型。採取這種數據模型的區塊鏈需要對某個帳戶地址的所有 UTXO 求和,才能知道當前帳戶餘額。嚴格狀態訪問列表( strict state access list )基於 UTXO 模型實現並行執行。它會提前計算每個交易要訪問的帳戶地址,形成訪問列表。

訪問列表有兩個作用:

(1)判斷交易安全性:交易執行時如果訪問了不在訪問列表中的地址,則執行失敗。

(2)並行執行交易:根據訪問列表形成交易的多個集合,每個交易集合之間在訪問列表上沒有交集(沒有依賴),因此多個交易集合就可以並行執行了。

3.行業增長驅動力

從內在規律上看,任何事物的發展都會經歷”從無到有“到”從有到優“的過程,人類對更快速度的追求是永恆的。爲解決區塊網路執行速度的問題誕生了各種各樣或鏈上或鏈下的解決思路。以 rollup 爲代表的鏈下解決方案已得到充分的價值發現,而並行 EVM 敘事還有很大探索空間。

從歷史背景上看,隨着 SEC 批準現貨比特幣 ETF 和即將發生的比特幣減半等事件,再疊加聯準會可能的降息操作,加密貨幣預期將迎來一段大牛市,行業的蓬勃發展需要更大吞吐量的區塊鏈網路基礎設施作爲堅實的基礎。

從資源管理上看,傳統的區塊網路是串行地處理交易的,這種處理方法雖然簡單,但也是對處理器資源的一種浪費。而並行區塊鏈實現了計算資源的物盡其用,充分”榨幹“了多核處理器的性能,提高了區塊網路的整體效能。

從行業的發展上看,雖然各種技術和商業模式的創新層出不窮,但 Web3 的成長潛力仍然有待挖掘。中心化網路能做到每秒推送 50000 多條消息、發送 340 萬封郵件、完成 100000 次谷歌搜索並讓成千上萬個玩家同時在線,而去中心化暫時還做不到。去中心化要與中心化分庭抗禮,拿下屬於自己的半壁江山,不斷優化並行執行機制,提高交易的吞吐量也是發展的必經之路。

從去中心化應用的發展上看,要吸引更多用戶,體驗上一定要下功夫。性能優化是提升用戶體驗的方向之一。對於 DeFi 用戶來說,要滿足高交易速度,低費率的需求。對於 GameFi 用戶來說,要滿足實時交互的需求。這些都需要並行執行作爲支撐。

4.存在的問題

去中心化、安全性和可擴展性三者只能滿足其二,此爲區塊鏈不可能三角。既然“去中心化”是不可撼動的一極,那麼“可擴展性”的提高就意味着“安全性”的降低。代碼是人寫的,是人寫的就容易出現錯誤。並行計算所帶來的技術復雜性爲安全隱患的滋生提供了溫牀。

多線程編程一是容易因爲各種復雜的並發控制操作不當導致競態條件問題;二是容易因爲訪問了無效的內存地址導致崩潰,甚至出現容易被攻擊者利用的緩衝區溢出漏洞。

至少能從三個角度評估項目的安全性。一看團隊背景。有系統編程經驗的團隊對多線程編程有豐富的經驗,見過並能處理80%的疑難雜症。系統編程一般涉及如下領域:

  • 操作系統
  • 各類設備驅動
  • 文件系統
  • 數據庫
  • 嵌入式設備
  • 密碼學
  • 多媒體編解碼
  • 內存管理
  • 網路
  • 虛擬化
  • 遊戲
  • 高級編程語言

二看代碼可維護性,編寫可維護性強的代碼是有章可循的,比如清晰的架構設計,合理運用設計模式實現代碼的可復用性,運用了測試驅動開發技術編寫了足夠多的單元測試代碼,通過合理的重構消除重復代碼等等。

三看採用的編程語言,有的新銳編程語言從設計上就強調內存安全的高並發性。編譯器會檢查代碼,一旦發現代碼有並發問題或者可能訪問無效的內存地址,就會編譯失敗,從而強迫開發者寫出足夠健壯的代碼。

Rust語言就是出類拔萃者,這也就是爲什麼我們會看到絕大多數並行區塊鏈項目都是用Rust語言開發的原因。有的項目甚至借鑑了 Rust 語言的設計實現了自己的智能合約語言,如 Fuel 的 Sway 語言等等。

5.標的梳理

5.1基於樂觀並行化模型

5.1.1從內存鎖走向樂觀並行

Sei 是基於開源技術的通用公鏈,於 2022 年成立。兩位創始人來自加州大學伯克利分校,團隊其他成員也都具有海外名校背景。

Sei 共獲得 3 輪融資,其中種子輪 500 萬美元,第一輪戰略融資 3000 萬美元,第二輪戰略融資未披露。Sei Network 還募集了總共 1 億美元基金,用於支持其生態發展。

2023 年 8 月, Sei 在主網上線,號稱速度最快的 L1 公鏈,每秒可執行 12500 筆交易,最終確定性僅需 380 ms,目前流通市值近 22 億美元。

目前 Sei 生態有 118 個項目,主要集中於 DeFi 、基礎設施、 NFT 、遊戲和錢包等賽道。社區目前在 Twitter 、 Discord 和 Telegram 分別有 65 萬、60 萬和 4 萬成員。

2023 年 11 月末, Sei 在其官方博客宣布將於 2024 年上半年啓動主網上線後最大的一次版本升級:Sei v2 。Sei v2 號稱第一條並行 EVM 區塊鏈,本次版本升級將帶來如下新功能:

  • 對 EVM 智能合約的向後兼容:開發人員不用修改代碼就可以遷移部署 EVM 智能合約
  • 對諸如 Metamask 等常見工具/應用的重用
  • 樂觀並行化:Sei v2 將放棄內存鎖的共享訪問機制,轉而採用樂觀並行化
  • SeiDB :對存儲層的優化
  • 支持以太坊和其他鏈之間的無縫互操作性

Sei 網路原先的交易並行執行是基於內存鎖模型實現的。在執行前所有待處理交易之間的依賴關係都會被解析並生成 DAG ,然後基於 DAG 對交易的執行順序進行精確編排,這種方式增加了合約開發人員的心智負擔,因爲他們不得不在開發合約時將邏輯編寫到代碼中。

正如上面技術原理部分所介紹的,新版本採用樂觀並行化之後,開發人員就可以像寫順序執行的程序那樣開發智能合約了。交易的調度、執行和驗證等一系列復雜機制,都由底層模塊負責處理。核心團隊在優化的提案設計上還引入通過預填充依賴關係更進一步提升並行執行能力的設計。

具體來說就是引入動態的依賴生成器,在執行前先分析交易的寫操作並將其預填充到多版本內存數據結構中,優化潛在的數據爭用。核心團隊經過分析得出結論,這樣的優化機制雖然不利於最好情況下的交易處理,但會顯著提升最壞情況下的執行效率。

5.1.2 L1賽道潛在潛在顛覆者:Monad

如果你錯過了上面一衆公鏈的發展,那麼 Monad 你一定不能錯過。因爲它被譽爲 L1 賽道的潛在顛覆者。

Monad 由 Jump Crypto 的兩位高級工程師於 2022 年創立,項目於 2023 年 2 月完成 1900 萬美元種子輪投資,2024 年 3 月, Paradigm 就領投 Monad 的一輪超 2 億美元的融資進行談判,如果成功,這將是自開年以來最大的一筆加密貨幣融資。

目前項目已經成功實現了上線內部測試網的裏程碑任務,正朝着下一步開放公共測試網而努力。

Monad 深受資本青睞有兩個突出的原因:一是技術背景過硬,二是善於營銷炒作。Monad Labs 團隊核心成員有 30 人,均在高頻交易、內核驅動和金融科技領域深耕數十年,在分布式系統領域有豐富的開發經驗。

項目的日常運營也十分的“接地氣”:持續地對其 Twitter 上 20 萬關注者和 Discord 上 15 萬成員進行“魔性營銷”。比如每週舉辦 meme 大賽,向社區徵集各種奇奇怪怪紫色動物的表情包或者視頻,在社區進行“精神傳播”。

Monad 的願景是成爲面向開發者的智能合約平台,爲以太坊生態帶來極致的性能提升。Monad 爲以太坊虛擬機引入了兩項機制:一是超標量流水線技術,二是改進的樂觀並行機制。

超標量流水線技術將交易的執行階段並行化。官方文檔舉了一個很形象的例子。洗衣服就像區塊鏈對交易的處理,也要分多個階段完成。傳統的處理方式是對每堆髒衣服進行清洗、烘幹、折疊和儲存,然後再處理下一堆。

超標量流水線則是在第一堆衣服烘幹的時候就開始第二堆衣服的清洗,第一堆衣服在折疊的時候第二堆、第三堆衣服已經在分別烘幹和清洗了,因此每一個階段的處理都不閒着。

樂觀並行機制將交易的執行並行化。 Monad 採用了樂觀並行化實現並行執行。它還實現了自己的靜態代碼分析器,用於預測交易之間的依賴關係,僅在前置的依賴交易執行完畢後再調度後續交易執行,這樣就大大減少了因驗證失敗導致的交易重復執行。

目前性能達到 10000 TPS 並能在 1 秒的時間出塊。隨着項目的進展,核心團隊還會繼續探索更多的優化機制。

5.1.3 高度去中心化的L1項目:Canto

成立於 2022 年,沒有官方基金會、不搞預售、不歸屬任何組織、不進行融資,完全依靠社區驅動,甚至連核心團隊都是匿名的,以松散的組織方式進行工作。這就是基於 Cosmos SDK 打造的、高度去中心化的 L1 項目 Canto 。

雖然是兼容 EVM 的通用區塊鏈,但 Canto 的首要願景是成爲可訪問的、透明的、去中心化和免費的 DeFi 價值平台。通過對賽道的長期研究發現,任何健康的 DeFi 生態項目都包含 3 大基礎要素:

  1. 像 Uniswap、Sushiswap 那樣的去中心化交易所( DEX );
  2. 像 Compound、Aave 那樣的借貸平台;
  3. 像 DAI、USDC 或 USDT 那樣的去中心化代幣。

然而以往的 DeFi 生態最後都回到了同一個宿命:發行治理協議代幣,代幣的價值取決於生態能夠從其未來用戶那裏抽取多少使用費,抽取越多則價值越大。這就好比每個 DeFi 協議就像一個按小時付費的私人停車場,用的人越多估值就越大。

Canto 採取了另一種思路:建設針對 DeFi 的免費公共基礎設施( Free Public Infrastructure ),把自己打造成一個免費停車場,供其生態項目免費使用。

基礎設施包含 3 種協議:去中心化交易所 Canto DEX 、從 Compound v2 分叉出來的池化借貸平台 Canto Lending Market( CLM )以及可通過抵押資產從 CLM 借出的穩定幣 NOTE 。

Canto DEX 以一種無法升級、無需治理的協議永續運行,既不可發行代幣,也不會收取額外費用。避免生態內的 DeFi 應用的各種尋租行爲導致弱肉強食的零和博弈。

借貸平台 CLM 的治理權由質押者控制,質押者充分享受生態發展帶來的利益,反過來又給開發者和 DeFi 用戶創造最好的環境,激勵他們不斷投入。而貸款者借出 NOTE 所產生的利息都會支付給借款人,協議分文不取。

對開發者, Canto還引入了 Contract Secured Revenue 合約收入分配模型。允許按一定比例將用戶在鏈上與合約交互時產生的費用分配給開發者。Canto 這一系列商業模式創新做出了“一箭三雕”的效果。通過提供開放、免費的金融基礎設施創造建設性的生態繁榮基礎。

通過各種方式讓利給生態的開發者和用戶,激勵他們加入並不斷豐富生態。通過將“鑄幣權”牢牢掌握在自己手裏,爲各種去中心化應用創造了跨應用流動性的可能,生態越繁榮,代幣就越值錢。當美東時間 2024 年 1 月 26 日啓用 CSR 提案獲社區投票通過後,其代幣 $CANTO 迎來了一波漲。

完成這一系列商業模式創新後, Canto 在 2024 年 3 月 18 日這天,在官方博客公布了自己新一輪的技術迭代計劃。

除了採用新版本 Cosmos SDK 、集成新技術降低存儲訪問瓶頸外 Canto 還將進行並行 EVM 升級:通過實現 Cyclone EVM 引入樂觀並行化。

Canto 使用的 Cosmos SDK 將交易處理分爲 Proposal、Voting 和 Finalization 三個階段。Voting 中的 ProcessProposal 子過程負責交易的並行執行。並行執行引擎負責執行交易,衝突檢測引擎負責驗證交易有效性。

若無效,回退給執行引擎重新執行;若有效,提交交易給後續處理流程。相信經過此輪技術升級 Canto 的代幣還會有更引人矚目的表現。

5.2 基於嚴格狀態訪問列表:Fuel

Fuel 由虛擬機 FuelVM 、受 Rust 啓發的合約開發語言 Sway 和相關工具鏈組成,是量身定制的模塊化“以太坊 rollup 操作系統”。Fuel 項目成立於 2019 年,2020 年 12 月, Fuel Labs 啓動了以太坊上第一個 optimistic rollup 執行層 Fuel v1 ,經過 3 年多的發展,項目終於要在2024年第三季度上線主網。

Fuel 分別在 2021 年和 2022 年完成了 150 萬美元和 8000 萬美元融資。核心團隊擁有 60 多名工程師,創始人 John Adler 是數據可用性解決方案 Celestia Labs 的聯合創始人,還是 optimistic rollup 方案最早的提出者之一。運營方面,項目在 Twitter 和 Discord 分別有27萬和39萬成員。

在鏈上一筆一筆執行交易要支付 gas 費、要爭奪寶貴的區塊空間,速度還慢。因此自然而然的就會想到各種擴容方案,比如批處理交易的執行,然後再一起打包到鏈上去結算,加快執行速度。

rollup 就是一種在 L1 之外運行的擴容解決方案,它在鏈下批量執行交易,然後向 L1 發送交易數據或執行證明,通過 DA 層保證安全性並對交易進行結算。rollup 有兩種主要類型:基於樂觀機制( optimistic )的和基於零知識證明( ZK )的。

optimistic rollup 假設交易是有效的,一旦發現惡意或錯誤交易就生成欺詐證明交給 L1 回滾處理。ZK rollup 在不暴露交易細節的前提下通過復雜運算生成交易有效性證明,發布到 L1 ,以證明 rollup 正確執行了交易。所以 rollup 是一種區塊鏈執行層技術。

盡管 rollup 加快了交易的執行速度,但現有的實現大多是針對單體區塊鏈設計的。開發人員不得不在技術上做出各種各樣的妥協,這就限制了 rollup 充分發揮其性能。而針對模塊化區塊鏈的新趨勢,業界又沒有適配的 rollup 方案。Fuel 就是爲填補這一空白而誕生的。

Fuel 使用 UTXO 作爲數據模型,採用這種數據模型有一個優點:其交易輸出只有兩種狀態,要麼已花費,永久記錄於區塊的交易歷史中;要麼未花費,可用於未來的交易中。進而做到鏈上每個節點存儲狀態數據最小化。在此基礎上, Fuel 檢查每一筆交易訪問的帳戶信息,在執行交易之前找出依賴關係,調度無依賴關係的交易並行執行,提高交易處理的吞吐量。

5.3跨鏈整合L1鏈的L2解決方案:Neno、Eclipse和Lumio

L2 解決方案有個共性:它們將兩種虛擬機的能力結合起來,提升交易的執行速度。具體地說就是利用並行 L1 來執行交易,但是與其他鏈進行兼容(雙虛擬機支持)。所不同的是不同的項目採取的兼容機制不一樣。這方面 Neon 、 Eclipse 和 Lumio 頗具代表性。

Neon 號稱 Solana 生態第一個並行 EVM 項目,開發者可以利用它無縫地將以太坊生態項目遷移到 Solana 生態中來。Eclipse 是另一個 Solana 生態中兼容 EVM 的最快二層協議,採用模塊化架構構建。這三個項目中只有 Neon 發行了自己的代幣,並做到了 7800 多萬的流通市值。

其他兩個項目還處於比較早期的階段。Lumio 則結合了 Aptos 和以太坊構建了 optimistic rollup 二層協議,以 Move VM 的速度高效執行以太坊應用。

從融資情況上看, Neon 分別在 2021 年 11 月和 2023 年 6 月完成 4000 萬美元和 500 萬美元融資,共計 4500 萬美元。Eclipse 分別在 2022 年 8 月、2022 年 9 月和 2024 年 3 月完成 600 萬美元、900 萬美元和 5000 萬美元融資,共計 6500 萬美元。Lumio 暫未融資。

三個項目均未形成規模性的應用生態,但在各主要社交媒體平台都有數萬到數十萬不等的關注者或成員,有不小的社區活躍度,如下表所示。

從實現機制上看, Neon 是 Solana 網路上的 EVM 模擬器,以智能合約的形式運行。開發人員可以使用諸如 Solidity 、 Vyper 這樣的語言編寫 dApp 應用,並可以使用 MetaMask 、 Hardhat 、 Remix 等以太坊工具鏈和兼容的以太坊 RPC API 、帳戶、籤名和代幣標準等。與此同時享受 Solana 帶來的低費率、高交易執行速度以及並行執行的能力。

以太坊 dApp 前端發來的以太坊交易經過代理轉換生成 Solana 交易,然後在模擬器中執行,修改鏈上狀態。好比我們常在 PC 上使用的遊戲模擬器,能讓我們在臺式機上玩 Switch、PS 等遊戲平台上的獨佔遊戲, Neon 能讓以太坊開發人員在 Solana 網路上運行以太坊應用。

Eclipse 採取了另一種實現思路:通過 SVM 執行交易,通過 EVM 結算交易。 Eclipse 採取模塊化區塊鏈的架構,即它只負責交易的執行,而把其他的職責“外包”出去,通過模塊化組合形成統一解決方案。

比如利用 Celestia 管理數據可用性,利用以太坊執行交易的結算。Eclipse 利用 SVM 保證了執行速度,通過以太坊的驗證和結算保證了安全性。

Lumio 採用的是一種與執行層和結算層無關的設計思路,可支持多種虛擬機,兼容各種 L1/L2 網路:Ethereum、Aptos、Optimism、Avalanche、zkSync ,諸如此類。它通過 Move VM 執行交易,通過 EVM 結算交易,這樣一來就把以太坊生態和 Aptos 生態連接起來了。

然而 Lumio 的雄心並不止步於此,它的願景是提供跨虛擬機調用,以最快的速度和最低的費率實現多種區塊鏈流動性的互聯。

以上就是目前與並行 EVM 敘事有關的主要項目,如下圖所示。

6.結論與展望

人們愛把比特幣比作“分布式帳本”,把以太坊比作“分布式狀態機”。如果把運行區塊鏈網路的所有節點看作是一臺計算機的話,那麼並行區塊鏈本質上就是研究如何榨幹這臺“計算機”的處理器資源,以實現執行速度的最大化。

這是計算技術不斷發展的歷史必然性,就像處理器從單核發展到多核,操作系統從單用戶單線程發展到多用戶多線程一樣。這對於推動行業的不斷發展有着非凡的意義。

並行 EVM 的技術原理可以拆解爲虛擬機和並行執行機制兩個組成部分。在區塊鏈的語境下,虛擬機集成了一套指令集,用於分布式地執行合約,運行 dApp。而並行執行機制主要研究如何最大限度的提高交易執行的速度,同時又保證交易結果的正確。

一方面,並行 EVM 有技術原理上的共性。首先,樂觀並行化模型是 L1 公鏈的共識。但這並不代表內存鎖模型就一無是處。因爲技術沒有高下之分,只有開發人員有水平好壞之別。

其次,以 Fuel 爲代表的項目堅信鏈下擴容機制只有模塊化後才能發揮最大性能。最後,一衆 L2 項目則通過整合並行 L1 公鏈來提高交易吞吐量,實現跨生態擴容能力。

另一方面,並行區塊鏈又有自己獨特的技術建樹。哪怕採用的是同一種並行執行模型,不同的團隊也採用了不同的架構設計模式、數據模型或預處理機制。技術的探索是無止境的,不同的項目會根據不同的願景,在同一個基礎上發展出不同的技術來推動實踐不斷向更高層次發展。

展望未來,還會有更多的 L1 和 L2 項目,加入並行 EVM 的競爭。L1 賽道會形成並行 EVM 和並行非 EVM 兩大陣營在處理器資源、存儲資源、網路資源、文件系統資源和設備資源全面競爭的格局,還會誕生更多與性能提升有關的新敘事。而 L2 賽道會朝着區塊鏈虛擬機模擬器或模塊化區塊鏈的方向發展。

在未來,基礎設施的優化會帶來更快的速度、更低的費用以及更高的效率。Web3 創業者可以大膽的進行商業模式創新,爲全世界創造更好的去中心化產品用戶體驗,進一步繁榮行業生態。對於 Web3 投資者而言,僅僅關注技術那是遠遠不夠的。

在選擇投資標的的時候,投資者不但要看敘事,還要看市值和流動性,要選擇“好敘事”、“低市值”和“高流動性”的項目,然後研究其業務、團隊背景、經濟模型、市場營銷、生態項目等方方面面,從而發現潛力項目,找到適合的投資途徑。

並行 EVM 處在發展的早期階段, Neon、Monad、Canto、Eclipse、Fuel 和 Lumio 還處於價值未被充分發現的階段。尤其是 Monad 、Canto 和 Fuel 。

從 Monad 的營銷風格來看,不但其本身值得關注,而且未來其生態中的 meme 項目也很值得留意,可能會有因炒作熱度產生的暴富神話。而 Canto 已滿足“好敘事”和“低市值”的條件,是否是一個好的投資標的還需要對其各項指標進行深入研究。Fuel 代表着模塊化區塊鏈的熱門發展方向,也可能會誕生新的投資機會,這些都是值得我們關注的方向。

聲明:

  1. 本文轉載自[Gryphsis Academy],原文標題”萬字解讀並行 EVM :如何突破區塊鏈性能瓶頸?“,著作權歸屬原作者[@leesper6],如對轉載有異議,請聯系Gate Learn團隊,團隊會根據相關流程盡速處理。

  2. 免責聲明:本文所表達的觀點和意見僅代表作者個人觀點,不構成任何投資建議。

  3. 文章其他語言版本由Gate Learn團隊翻譯, 在未提及Gate.io的情況下不得復制、傳播或抄襲經翻譯文章。

即刻開始交易
註冊並交易即可獲得
$100
和價值
$5500
理財體驗金獎勵!