詳解 Layer1 並行執行:Aptos、Sui、Linera 和 Fuel 如何實現?
原文標題:《The Case for Parallel Processing Chains》
原文作者:Mohamed Fouda
原文編譯:深潮 TechFlow
當我們重新審視區塊鏈技術的演變時,可以看到一個強勁的趨勢正在顯現,即新的 L1 注重並行執行。
這並不是什麼新鮮技術,目前 Solana 就在 Sealevel 的執行環境中使用。
然而,在過去的牛市中,DeFi 和 NFT 令人印象深刻的表現也讓人們意識到,技術迫切需要改進。
在下輪市場中,一些採用並行執行理念的著名項目即將出現,這些項目的名單是 Aptos、Sui、Linera 和 Fuel。
本文將會討論這些項目的異同,以及它們所面臨的挑戰。
問題
智能合約平台可以創建廣泛的去中心化應用程序。為了執行這些應用,需要一個共享的計算引擎。網絡中的每個節點都運行這個計算引擎,以及執行應用程序和用戶與應用程序的互動。當節點從執行中得到相同的結果時,他們就會達成共識,並推動鏈的運轉。
以太坊虛擬機是最主要的智能合約(SC)執行引擎,有大約 20 種不同的實現方式。
自 EVM 發明以來,它已經建立了開發人員採用的臨界質量。
除了以太坊和以太坊的 L2,其他幾個鏈包括 Polygon、BNB 智能鏈和 Avalanche C 鏈都採用 EVM 作為執行引擎,並專注於改變共識機制以提高網絡吞吐量。
EVM 的一個主要限制性特徵是交易的順序執行。EVM 基本上是一次執行一個交易,將所有其他交易搁置,直到交易執行完畢,區塊鏈狀態被更新。即使兩個交易是獨立的,例如,從 Alice 到 Bob 的付款和從 Carol 到 Dave 的另一個付款,EVM 不能並行執行這些交易。雖然這種執行模式允許有趣的用例,如閃電借貸,但它既沒有效率,也沒有可擴展性。
這種順序執行交易是網絡吞吐量的主要瓶頸之一:
- 首先,它導致區塊中的交易執行時間更長,限制了區塊時間;
- 此外,它限制了可以添加到區塊中的交易數量,以使節點能夠執行交易並確認區塊。
以太坊的平均吞吐量約為 17 tx/秒。這種低吞吐量意味著在高活動期間,例如 NFT Mint,網絡礦工/驗證者不能處理所有的交易,隨之而來的是費用競標戰,以確保優先執行,推動交易費用上升。以太坊的平均費用在某些時候超過了 0.2 個 ETH(約 800 美元),許多用戶都因此不敢使用以太坊。
順序執行的第二個問題是網絡節點的低效率。順序指令執行不能從多個處理器核心中獲益,這導致硬件利用率低,效率低下。這阻礙了可擴展性,並導致不必要的能源消耗。
並行執行能解決這個問題嗎?
EVM 結構的限制為並行執行(PE)的 L1 新領域創造了條件。並行允許在多個處理器內核之間劃分交易處理,提高硬件利用率,從而實現更好的可擴展性。在高吞吐量鏈中,增加硬件資源與可執行的交易數量直接相關。
在高頻活動期間,驗證者節點可以委託更多的核心來處理額外的交易負載。計算資源的動態擴展允許網絡在高需求時期實現更高的吞吐量,從而顯著改善用戶體驗。
這種方法的另一個優點是改善了交易確認的延遲,節點資源的動態擴展使得確認所有可能的網絡負載的低延遲交易成為可能。
交易不需要等待幾十或幾百個區塊,也不需要為優先確認而產生過多的費用。改進後的確認時間提高了交易的終結性,為低延遲區塊鏈打開了大門。保證執行交易的低延遲使幾個以前不可能實現的用例成為可能。
改變鏈式執行模式以允許 PE 並不是一個新的想法,一些項目已經對此進行了探索。一種方法是將 EVM 使用的會計模型從 Accounts 模型替換為 Unspent Transaction Output (UTXO) 模型。UTXO 執行模型在比特幣中使用,它允許並行處理交易,這使得它成為支付的理想選擇。
但由於 UXTO 的功能有限,需要進行擴展以實現智能合約所需的複雜互動。例如,Cardano 為此目的使用了擴展的 UTXO 模型,而 Findora 使用了混合 UTXO 模型,它實現了兩種會計模型並允許用戶在兩種模型之間更改資產類型。
PE 的另一種方法並不改變賬戶模型,而是專注於改善鏈狀態的架構和修改。例如 Solana 的 Sealevel 框架。
並行執行是如何工作的?
並行執行的工作方式是確定獨立的交易並同時執行它們。如果一個交易的執行會影響到另一個交易的執行,那麼兩個交易就是相關聯的。例如,同一池中的 AMM 交易是相關聯的,必須按順序執行。
雖然並行處理的概念聽起來很簡單,但困難就在細節中,主要的挑戰是如何有效地識別 "獨立 "交易。獨立交易的分類需要了解每筆交易如何改變區塊鏈內存或鏈狀態,與同一智能合約(如 AMM 池)互動的交易可以同時改變合約狀態,因此,不能同時執行。
以目前應用程序之間的可組合程度,識別是否相互關聯是一項具有挑戰性的任務。想像一下,一個將 UNI 換成 USDC 的 AMM 交易,AMM 發現執行它的最有效路線是 UNI -> ETH -> DAI -> AAVE -> USDC。所有參與該交易的池子不能處理任何其他交易,直到該交易完全執行,然後所有參與的池子的狀態才能被更新。
識別獨立交易
在本節中,對不同的並行執行引擎所使用的方法進行了比較。重點討論的是控制狀態(內存)訪問的方法。區塊鏈狀態可以被認為是一個 RAM 存儲器,每個鏈上的賬戶,或智能合約,都擁有一系列可以修改的內存位置。關聯交易是那些試圖改變同一区塊中相同內存位置的交易,不同的鏈利用不同的內存架構和不同的機制來識別這些交易。
這一類的幾條鏈都是建立在 Facebook 已消亡的區塊鏈項目 Diem 所開發的技術之上。Diem 團隊創建了智能合約語言 Move,專門改善 SC 的執行。Aptos、Sui 和 Linera 是屬於這一組的三個高知名度的項目。除了這個小組,Fuel 是另一個專注於 PE 的知名項目,使用自己的 SC 語言。
Aptos
Aptos 建立在 Diem 的 Move 語言和 MoveVM 的基礎上,創建了一個高吞吐量的鏈,實現了並行執行。
Aptos 的方法是檢測關聯關係,同時對用戶/開發者透明,也就是說,不要求交易明確聲明它們使用哪一部分狀態(內存位置)。
Aptos 使用的是 Software Transactional Memory (STM)的修改版,稱為 Block-STM。
在 Block-STM 中,交易在塊內被預先排序,並在處理器線程之間進行劃分,以便被執行。
在過程中,交易的執行都是假定沒有關聯關係。被交易修改的內存位置被記錄下來,執行後,所有交易的結果都被驗證。在驗證過程中,如果一個交易被發現訪問了被前面的交易修改過的內存位置,這個交易就會被廢止。該交易的結果被刷新,然後重新執行。
這個過程不斷重複,直到塊中的所有交易都被執行。
當使用多個處理器核心時,Block-STM 會加快執行速度,加速的多少來自於交易的相互關聯程度。
Aptos 團隊的結果表明,使用 32 個核心可以將高相互關聯性能提高 8 倍,將低相互關聯性能提高 16 倍。如果一個區塊中的所有交易都是相互依賴的,那麼與順序執行相比,Block-STM 會導致性能上的輕微損失。Aptos 聲稱,這種方法可以實現 160,000 TPS 的吞吐量。
Sui
另一種 PE 方法是要求交易明確聲明他們所修改的鏈狀態部分,這種方法目前被 Solana 和 Sui 使用。
Solana 將內存單元稱為賬戶,而交易必須說明它修改了哪些賬戶。Sui 也使用了類似的方法。
Sui 也通過使用 MoveVM 建立在 Diem 的技術之上。然而,Sui 使用不同版本的 Move 語言。
Sui Move 的實現改變了 Diem 的核心存儲模型和資產權限,這代表了與使用核心 Diem Move 的 Aptos 的重大區別。
Sui Move 定義了一個狀態存儲模型,允許更容易識別獨立交易。
在 Sui 中,狀態存儲被定義為 Objects。Objects 通常代表資產,並且可以共享,這意味著多個用戶可以修改該對象。每個 Objects 在 Sui 執行環境中都有一個唯一的 ID,並有指向所有者地址的內部指針。通過使用這些概念,很容易通過檢查交易是否使用相同的 Objects 來識別關聯。
通過將聲明關聯關係的工作轉移給開發者,使執行引擎的實施變得更容易,這意味著理論上它可以有更好的性能和可擴展性。然而,這是以不太理想的開發者體驗為代價的。
Sui 還沒有啟動,最近剛剛推出了測試網。
Sui 的創始人聲稱,並行執行的實施以及使用 Narwhal 和 Tusk 共識機制導致吞吐量超過 100,000 tx/秒。這個吞吐量,如果是真的,那麼它可能比 Solana 當前的約 2400 tx/秒的吞吐量有很大的提升,並且將超過 Visa 和 Mastercard 的吞吐量。
Linera
Linera 是並行處理領域的最新成員,最近宣布了他們的第一輪融資,由 a16z 牽頭。關於項目實施的細節不多。然而,根據他們的融資公告帖子,我們知道它是基於同樣在 Facebook 開發的 FastPay 協議。
Fastpay 是基於一種叫做 Byzantine Consistent Broadcast 的技術,這項技術專注於加速獨立的支付,例如發生在銷售點網絡中的支付。它允許一組驗證者確保付款的完整性,只要超過三分之二的驗證者是誠實的。快速支付是實時毛額結算(RTGS)系統的一個變種,用於銀行和金融機構之間的網絡。
在 FastPay 的基礎上,Linera 正計劃建立一個區塊鏈,通過並行執行支付交易,專注於快速結算和低延遲。值得注意的是,Sui 也使用 Byzantine Consistent Broadcast 的方式進行簡單的支付。對於其他交易,Sui 自己的共識機制 Narwhal 和 Tusk 被用於高效處理 DeFi 交易等更複雜的和有關係性的交易。
Fuel
Fuel 專注於成為模塊化區塊鏈中的執行層,這意味著 Fuel 不實施共識或將區塊鏈的數據存儲在 Fuel 鏈上。對於功能性區塊鏈,Fuel 與其他鏈交互以達成共識和數據可用性,例如 Ethereum 或 Celestia。
Fuel 使用 UTXO 來創建嚴格的訪問列表,即用一個列表來控制對同一片狀態的訪問。這個模型建立在規範交易排序的概念之上。在這個方案中,區塊中的交易排序導致了檢測交易之間的關聯關係的顯著簡化。為了實現這個架構,Fuel 公司建立了一個新的虛擬機,稱為 FuelVM 和一種新的語言,稱為 Sway。
FuelVM 是對 EVM 的一種兼容和簡化的表現,可以有效地讓開發者加入到 Fuel 的生態系統中。
此外,由於 Fuel 專注於模塊化區塊鏈,Fuel SC 的執行可以在以太坊主網上解決。這種方法與合併後以太坊的願景一致,即作為以 Rollup 為中心的結算和數據可用性層。在這種架構中,Fuel 可以實現在以太坊上批量和結算的高吞吐量執行。
為了驗證該概念,Fuel 團隊已經創建了一個名為 SwaySwap 的 AMM,類似於 Uniswap,並在測試網上運行。目的是證明 FuelVM 與 EVM 相比性能更高。
並行執行方法的挑戰
並行執行的方法似乎是合乎邏輯和直接的,然而,目前我們仍然面臨著幾個挑戰。首先是估計使用這種並行執行方式可以加速的交易的實際比例。第二個挑戰是網絡的去中心化,也就是說,如果驗證者可以很容易地擴展計算能力以提高吞吐量,那麼完整節點如何跟上以確保鏈的正確性?
可並行交易的百分比
準確估計在任何鏈上可並行執行的鏈上交易的百分比是具有挑戰性的。此外,根據網絡活動的類型,這個百分比在區塊之間會有很大的變化。
例如,一個 NFT Mint 可能會導致一個具有高百分比的關聯性交易的爆發。也就是說,我們可以使用一些假設來獲得可並行交易的平均百分比的粗略估計。
例如,我們可以假設大多數 ETH 和 ERC20 的轉移是獨立的,即從不同的地址發起並接收到不同的地址。所以我們可以假設約 25%的 ETH 和 ERC20 轉帳是相互關聯的,即向 SC 存款以及將交易所熱錢包的資產聚合到冷錢包。
另一方面,同一池中的所有 AMM 交易都是有關聯性的。鑑於大多數 AMM 通常由少數池子主導,而且 AMM 交易具有高度的可組合性,並與多個池子互動,我們可以安全地假設至少 50%的 AMM 交易都是相互關聯的。
通過對以太坊的交易類別進行分析,我們可以發現,在以太坊每天約 120 萬的交易中,20-30%是 ETH 轉帳,10-20%是穩定幣轉帳,10-15%是 DEX 轉帳,4-6%是 NFT 交易,8-10%是 ERC20 批准,12-15%是其他 ERC20 轉帳。
使用這些數字和假設,我們可以估計,PE 可以加速 SC 平台中大約 70-80%的交易。
這意味著關聯交易的順序執行占所有交易的 20-30%。換句話說,如果使用相同的 Gas 限制,就有可能通過 PE 實現 3 倍-5 倍的吞吐量增長。
一些關於構建並行執行 EVM 的實驗顯示了類似的估計,其中可以持續實現 3-5 倍的吞吐量提高。
在實踐中,高吞吐量鏈使用更高的 Gas 限制和更短的塊時間來實現比至少 100 倍以太坊的吞吐量提高。增加的吞吐量需要強大的驗證節點來處理這些區塊,這一要求導致了第二個挑戰,即網絡的中心化。
網絡的中心化
在高吞吐量的網絡中,網絡每秒可以處理數以萬計的交易。
驗證節點受到費用和網絡獎勵的激勵來處理這些交易,並投資於專用伺服器或可擴展的雲架構來處理這些交易。而對於使用鏈並需要運行完整節點與鏈互動的公司或個人,情況並非如此。這些實體無法負擔複雜的伺服器來處理這種大規模的交易負載。這將推動鏈上用戶依賴專門的 RPC 節點供應商,例如 Infura,從而導致更多的中心化。
如果不選擇使用消費級硬件來運行完整節點,高吞吐量的鏈可能會變成一個封閉的系統,一小部分實體擁有對網絡的絕對權力。在這種情況下,這些實體可以協調審查交易、實體甚至應用程序,例如 Tornado Cash,它們可以將這些鏈轉變為與 Web 2 沒有什麼不同的許可系統。
目前,在 Sui 測試網運營一個完整節點的要求低於 Aptos 測試網節點的要求。然而,我們預計當主網啟動和應用程序開始在鏈上出現時,這些需求將發生重大變化。
去中心化的倡導者們一直在提出解決方案來解決這些預期的問題。這些解決方案包括使用輕型節點,通過使用 ZK 有效性證明或欺詐證明來驗證區塊的正確性。
Fuel 團隊在這方面很積極,與以太坊社區關於去中心化重要性的精神相一致。並不清楚 Aptos 和 Sui 團隊是否優先實施這些方法或其他促進去中心化。Linera 團隊在他們的介紹帖子中簡要地討論了這些問題,但協議實施尚未確認這一承諾。
總結
並行執行引擎是提高智能合約平台吞吐量的有前途的解決方案。
結合共識機制的創新,交易的並行執行可以使鏈的吞吐量接近或超過 10 萬 TPS,這樣的性能可以與 Visa 和 Mastercard 相媲美,可以實現當今最具挑戰性的幾個用例,例如完全的鏈上遊戲和去中心化小額支付。
這些令人印象深刻的吞吐量改進並不是沒有挑戰,即關於如何確保去中心化,我們期待致力於解決這些問題的創始人。