在資訊更替快速的區塊鏈領域中,投資人都在尋找下一個熱門敘事。然而,區塊鏈的底層敘事進步快速,卻鮮少有人提及。本文源自 PAUL TIMOFEEV, MIKE JIN 和 GABE TRAMBLE 所著文章《Parallel Execution: The Next Generation of Blockchains》,由 白話區塊鏈 整理、編譯及撰稿。
(前情提要:分析》EVM的「並行化」有何意義?是EVM霸權下的終局? )
(背景補充:Bankless:今年瞄準六大賽道LRT、Solana、並行EVM、20億鎂空投 )
如果說以分散式記帳方式的比特幣是區塊鏈 1.0,那麼,以分散式狀態機的方式實現去中心化應用( dApp )的以太坊則是區塊鏈 2.0。區塊鏈網路從 2008 年發展到現在,不過才十幾年的歷史,但誕生了無數技術和商業模式的創新,從 Web3 基礎設施到以 DeFi 、 NFT 、社交網路和 GameFi 等為代表的各種賽道,行業的蓬勃發展不斷吸引新使用者參與,這反過來也對產品體驗提出了更高的要求。
而區塊鏈不可能三角(Blockchain Impossible Triangle),又稱為區塊鏈三難問題,根據當前的技術,目前還無法很好的在同一個系統中同時實現所有要素。
因此自誕生以來,人們提出了各種各樣的解決方案試圖解決效能問題。這些解決方案大致可以分為兩類:一類是鏈上擴容方案,如分片( sharding )和並行區塊鏈;一類是鏈下擴容方案,如閃電網路、側鏈和 Rollups 等。
今天我們就以 Solana、Sei 和 Monad 等案例,來看看業內的並行區塊鏈的設計原理和發展狀況。
以下為正文:
區塊鏈交易
區塊鏈是虛擬機器,一種基於去中心化物理電腦網路的軟體計算模型,任何人都可以加入,但對於任何單個實體來說,想要控制它是極其困難的。
區塊鏈的概念首次在中本聰(Satoshi Nakomoto)2008 年撰寫的比特幣白皮書中出現,以作為實現比特幣加密安全的點對點支付的核心基礎設施。 交易對於區塊鏈來說就像日誌對於社交媒體和網際網路公司來說一樣,它們作為該特定網路的活動記錄,其關鍵區別在於區塊鏈上的交易是不可變的,並且通常是公開可觀察的。
但是交易到底是什麼呢?
區塊鏈上的交易是將數位資產從分散式帳本上的一個地址轉移到另一個地址,通過使用公鑰密碼學進行安全保護,可以用去中心化的點對點轉帳、也可以用於各種認證和驗證過程來記錄交易。
區塊鏈交易的工作原理
當發起一筆交易時,例如 Bob 向 Alice 傳送一些 Token,Bob 的交易會被分享到底層的區塊鏈網路中。隨後,網路上的專門節點群開始驗證和確認該交易是否合法。 一旦足夠多的節點驗證了交易的內容,該交易就會與其他使用者的交易一起新增到一個區塊中。當一個區塊被填滿後,它就會被新增到鏈上,因此得名為 「區塊鏈」。 Bob 的交易現在成為了一個安全透明的帳本的一部分,他和 Alice 都可以驗證其內容。
總的來說,所有區塊鏈交易都包含元資料,指的是幫助執行和保護網路的節點識別和執行一組給定的指令和引數。 每個交易都有原始傳送者輸入的高階資料,例如需要轉移的金額、目標地址以及用於確認交易的數位簽名,以及各種低階資料,這些資料會自動建立並附加,不過具體資料的形式會根據網路和設計的不同而有所差異。
然而,最終,在交易執行之前,在網路層背後涉及的過程會根據區塊鏈的設計而有所不同。
記憶體池
記憶體池(或稱為 mempool)是傳統區塊鏈網路(如比特幣和以太坊)中常見的一部分。 記憶體池實際上是一種緩衝區或 「等候室」,用於存放待處理的交易,這些交易尚未被新增到區塊並執行。
為了更好地理解,我們可以描述一下在使用記憶體池的區塊鏈上交易的生命週期:
- 使用者發起並簽署一筆交易;
- 參與區塊鏈網路的專門節點驗證交易的內容,確保其合法,幷包含適當的引數;
- 一旦驗證通過,該交易與其他待處理交易一起被發送到公共記憶體池中;
最終,根據交易支付的 gas 費用相對於記憶體池中其他交易的情況,我們使用者的待處理交易與其他待處理交易一起被選中形成區塊鏈上的下一個區塊。此時,我們的交易狀態將顯示為 「成功」。
經過一段時間或基於區塊數的閾值後,區塊本身被最終確認,並且該交易成為記錄在區塊鏈上的不可變日誌,除非發生 51% 攻擊,否則幾乎無法被篡改,而進行這樣的攻擊是一項非常困難的任務。
無記憶體池(Solana)
需要注意的是, 一些區塊鏈,如 Solana,並不使用記憶體池,而是直接將交易轉發給區塊生產者,以實現通過連續的區塊生產來實現高速度和吞吐量。
在無記憶體池的區塊鏈上交易的生命週期是怎麼樣的呢?一起來看看:
- 使用者為其正在使用的應用程式發起並簽署一筆交易;
- 應用程式將交易資訊路由到遠端過程呼叫(RPC)伺服器;
- RPC 提供者將交易傳送給當前指定的區塊生產者以及接下來的三個生產者;這是一種預防性措施,以防當前的領導者不能及時執行交易。Solana 採用了一個槽位領導者計劃,有助於 RPC 更輕鬆地路由交易;
- 區塊生產者將已簽名的交易傳送給共識節點進行驗證;
共識節點投票驗證交易的內容,一旦完成,交易狀態將通過 RPC→ 應用程式→ 使用者的路徑返回,狀態為 「成功」 或 「失敗」。
與基於記憶體池的區塊鏈類似,區塊本身在一定時間或達到基於區塊的閾值後被最終確認。
順序執行
較早的區塊鏈,即比特幣和以太坊,採用了順序執行機制來處理交易 。每次新增到區塊鏈的交易都會引發網路狀態的變化,為了安全起見,虛擬機器結構被設計成一次只能處理一個狀態變化。
這導致了底層網路吞吐量的嚴重瓶頸 ,因為可以新增到區塊的交易數量受限,從而導致等待時間更長,交易成本出現前所未有的飆升,有時甚至使網路無法使用。 此外,順序執行模型在使用硬體元件時效率較低 ,因此無法從計算方面的突破,如多個處理器核心,獲得好處。
並行執行
什麼是並行執行?
平行計算是電腦體系結構的關鍵組成部分,其起源可以追溯到 20 世紀 50 年代末,儘管其理論和構想甚至可以追溯到 1837 年。 按照定義,平行計算是指同時利用多個處理元素來解決一個操作的行為,其中將一個更大且更復雜的任務分解為較小的任務,比序列方式更高效地完成。
最初只在高效能運算系統中實施,隨著網際網路時代對計算需求的指數增長,平行計算已經發展成為如今電腦體系結構中的主導正規化。
這種計算體系結構標準在區塊鏈中也同樣適用,只是電腦解決的主要任務是處理和執行交易,或者是從智慧合約 A 向智慧合約 B 的價值轉移,因此稱為並行執行。
並行執行意味著區塊鏈不再按順序處理交易,而是可以同時處理多個不衝突的交易。這可以極大地提高區塊鏈網路的吞吐量,使其更具可擴展套件性和高效性,以處理更高負載的活動和對區塊空間的需求。
舉個簡單的類比,考慮一家設有多個收銀通道的雜貨店的效率,與只有一個通道供所有顧客使用相比。
延伸閱讀:並行EVM是什麼、如何提升區塊鏈網路效能?新興的SVM能挑戰以太坊地位?
為什麼並行執行很重要?
區塊鏈中的並行執行旨在提高網路的速度和效能效率,尤其是在網路面臨更高的流量和資源需求時。在加密貨幣生態系統的背景下,並行執行意味著如果 Bob 想要鑄造最新的熱門 NFT 收藏品,而 Alice 想要購買她最喜歡的 Memecoin,網路將為兩個使用者提供服務,而不會在效能和使用者體驗方面有任何損失。
雖然這可能只是一個直觀的生活品質特性,但通過並行執行解鎖的網路效能改進為開發新的創新用例和應用提供了機會,這些用例和應用可以利用低延遲和大容量的特性,為將下一批大規模使用者引入加密貨幣生態系統奠定了基礎。
並行執行是如何工作的?
雖然並行執行的前提相對簡單,但底層區塊鏈設計的細微差別會影響並行執行過程的具體實施。 設計具有並行執行功能的區塊鏈最相關的特性是交易能夠訪問其底層網路的狀態,包括帳戶餘額、儲存和智慧合約。
區塊鏈上的並行執行可以分為確定性和樂觀性兩種方式 。確定性並行執行,比如 Solana 等區塊鏈採用的方法, 需要交易事先宣告所有的記憶體依賴關係,即它們事先希望訪問全域性狀態的哪些部分 。雖然這一步驟為開發人員增加了額外的開銷,但更廣泛地說,它允許網路在執行之前對非衝突的交易進行排序和識別,從而創建出一個可預測和高效的優化系統。相反, 樂觀性並行執行的結構是為了同時處理所有交易,基於這樣的假設,即不存在衝突 。這使得底層區塊鏈能夠提供更快的交易執行速度,儘管在衝突發生時可能需要重新執行。如果發現提交了兩個衝突的交易,系統可以重新處理和重新執行它們,無論是並行還是順序執行。
為了更好地理解這些設計細節的影響,通過研究當前推動並行執行前端的團隊,可能會有所幫助。
如今並行執行的現狀
為了更好地理解這些設計細節的影響,通過研究當前推動並行執行前端的團隊,可以更好地分析並行執行的意義。
虛擬機器
Solana 虛擬機器(SVM)
Solana 是第一個圍繞並行執行設計的區塊鏈網路 ,靈感來自創辦人 Anatoly Yakovenko 在電信行業的經驗。Solana 旨在提供一個開發者平臺,以物理學允許的速度執行,因此平行計算所釋放出的速度和效率是一個簡單而直觀的設計選擇。
實現 Solana 快速的速度和高吞吐量的關鍵組成部分是 Sealevel(一項技術),該網路的並行智慧合約執行時的環境。與基於 EVM 和 WASM 的環境不同, Sealevel 採用了多執行緒架構,意味著它可以同時處理多個交易,以符合驗證節點核心的容量。
實現 Solana 並行執行的關鍵在於,當啟用一個交易時,網路會分配一系列指令來執行該交易,具體包括要訪問的帳戶和狀態以及要進行的更改,這是確定哪些交易是非衝突的並可以同時執行的關鍵,同時也使得試圖訪問相同狀態的交易可以並發執行。 參考標籤在機場行李系統中提供的效率。
Solana 還利用了自己訂製的帳戶資料庫 Cloudbreak,用於儲存和管理狀態資料,以實現並發讀寫事務。Cloudbreak 經過優化以實現並行執行,通過水平擴展套件將狀態資料分佈和管理在多個節點上。
由於其並行架構,Solana 可以處理大量交易並且仍然快速執行,使交易幾乎即時達到最終性。 Solana 目前平均每秒處理 2000 到 10000 個交易。此外,針對 SVM 的用例正在逐漸擴大,例如 Eclipse 團隊正在推出旨在利用 SVM 作為執行環境的 Layer 2 基礎設施。
並行 EVM
並行 EVM 描述了一種新的區塊鏈執行環境,旨在將 Solana 和以太坊的設計優點結合起來,具有 Solana 的速度和效能以及以太坊的安全性和流動性。 通過並行處理交易而不是按照傳統的 EVM 設計順序執行,並行 EVM 使開發人員能夠在高效能網路上構建應用程式,並能夠利用與 EVM 流動性和開發工具的連線。
Sei Network
Sei Network 是一個與 EVM 相容的開源 Layer1 區塊鏈,託管了許多圍繞高效能構建的去中心化應用程式。 Sei 旨在為使用者和開發人員提供快速速度和低成本,並行執行是實現這種效能和使用者體驗的關鍵組成部分。 目前,Sei 的主網提供了 390 毫秒的區塊確認時間,並處理了超過 19 億個交易。
最初,Sei 採用了確定性並行執行模型, 在該模型中,智慧合約事先宣告其所需的狀態訪問,以便系統能夠同時執行非衝突的交易。 隨著 V2 升級的開始,Sei 正在轉向樂觀性並行模型 ,這意味著所有交易在提交到網路後將被並行處理(執行階段),然後將被與之前的交易進行衝突資訊驗證(驗證階段)。如果存在兩個或多個衝突的交易,即試圖訪問相同網路狀態的交易,Sei 將識別衝突點,然後根據衝突的性質重新執行交易,可以是並行或順序執行。
為了儲存和維護交易資料,Sei 還將引入 SeiDB,這是一個訂製資料庫,旨在通過優化並行執行來改進 V1 的不足之處 。SeiDB 旨在降低儲存冗餘資料的開銷,並實現高效的磁碟使用,以提升網路效能。 V2 減少了追蹤和儲存所需的元資料量,並引入了預寫日誌,以在發生故障時幫助進行資料恢復。
最後,Sei 最近還宣佈推出了其 Parallel Stack,這是一個開源框架,用於使 Layer2 擴展套件解決方案(例如 Rollups)能夠利用並受益於並行執行。
Monad
Monad 是一種即將推出的並行 EVM Layer1 區塊鏈,為以太坊應用程式和基礎設施提供完整的位元組碼和 RPC 相容性。 通過一系列創新的技術實現,Monad 旨在提供比現有區塊鏈更互動的體驗,同時通過優化效能和可移植性來降低交易成本,具有 1 秒的區塊時間和每秒高達 10,000 個 TPS 的最終性。
Monad 實現了並行執行和超標量流水線技術,以優化交易的速度和吞吐量。 類似於 Sei V2,Monad 將採用樂觀執行模型,意味著網路開始同時執行所有傳入的交易,然後分析和驗證交易以查詢衝突,並根據需要重新執行,最終目標是如果交易按順序執行,結果將完全相同。
值得注意的是,為了與以太坊保持同步,Monad 按照線性順序對一個區塊中的交易進行排序,每個交易按順序更新。
為了比當前以太坊客戶端提供更高效地維護和訪問區塊鏈資料,Monad 建立了自己訂製的 MonadDB,原生構建用於區塊鏈。 MonadDB 利用先進的 Linux 核心功能進行高效的非同步磁碟操作,消除了同步輸入 / 輸出訪問的限制。 MonadDB 提供非同步輸入 / 輸出(非同步 I/O)訪問,這是實現並行執行的關鍵功能,系統可以在等待讀取先前交易的狀態時開始處理下一個交易。
舉個簡單的類比,考慮做一道複雜的餐(義大利肉醬面)所涉及的步驟:1)準備醬料,2)煮肉丸,3)煮意面。一個高效的廚師會先燒開煮意面的水,然後準備醬料的材料,然後將意面放入沸水中煮,然後煮醬料,最後再煮肉丸,而不是一次只做一步,完成一個任務後再進行下一步。
Move
Move 是一種程式語言,最初由 Facebook 團隊於 2019 年為其已停用的 Diem 專案開發。 Move 旨在以安全的方式處理智慧合約和交易資料,消除其他語言本地攻擊向量(如重入攻擊)。
MoveVM 作為基於 Move 的區塊鏈的本地執行環境,利用並行化來提供更快的交易執行速度和更高的整體效率。
延伸閱讀:分析》Move 語言超越 Solidity 的時候到了嗎?
Aptos
Aptos 是基於 Move 開發的 Layer1 區塊鏈,由前 Diem 專案成員開發,它實現了並行執行,為應用程式開發人員提供了高效能環境。 Aptos 利用了 Block-STM,這是對軟體事務性記憶體(STM)並發控制機制的修改實現。
Block-STM 是一個多執行緒並行執行引擎,可以實現樂觀並行執行。 交易在區塊內進行預排序和策略性排序,這是高效解決衝突並重新執行這些交易的關鍵。Aptos 進行的研究發現,使用 Block-STM 的並行化技術,理論上可以支援高達 160000TPS 的吞吐量。
Sui
與 Aptos 類似,Sui 是由前 Diem 專案成員開發的 Layer1 區塊鏈,使用 Move 語言。 然而,Sui 使用了自定義的 Move 實現,改變了原始 Diem 設計中的儲存模型和資產許可權。特別是,這使得 Sui 能夠利用狀態儲存模型來表示獨立的交易作為物件。每個物件在 Sui 的執行環境中具有唯一的 ID,通過這種方式,系統可以輕鬆識別非衝突的交易並並行處理它們。
與 Solana 類似,Sui 實現了確定性的並行執行,這要求交易預先宣告它們需要訪問的帳戶。
Movement Labs 是什麼?
Movement Labs 正在構建一套開發者工具和區塊鏈基礎設施服務,以便開發者能夠輕鬆地利用 Move 進行開發。 作為面向 Move 開發者的類似 AWS 的執行即服務提供商,Movement Labs 將並行化作為核心設計特性,以實現更高的吞吐量和更高的整體網路效率。 MoveVM 是一個模組化的執行環境,使區塊鏈網路能夠根據需要擴展套件和調整其事務處理能力,以支援日益增長的交易量,增強其並行處理和執行交易的能力。
Movement 還將推出 M2,這是一個與 EVM 和 Move 客戶端相容的 ZK-rollup 解決方案。M2 將繼承 Block-STM 並行化引擎,並有望實現每秒數萬筆的吞吐量。
小結
當今並行系統面臨的挑戰
在開發並行區塊鏈時,需要思考一些重要的問題和考慮因素:
- 為了通過並行執行實現更好的效能,網路做出了哪些權衡?
- 少量的驗證者可以提高驗證和執行速度,但這是否會損害區塊鏈的安全性,使驗證者更容易共謀對抗網路?
- 是否有大量的驗證者共同部署?這是一種在加密和非加密系統中都常見的減少延遲的策略,但如果特定資料中心受到威脅,網路會發生什麼變化?
- 對於樂觀並行系統,重新執行無效交易的過程是否會在網路擴展套件時造成瓶頸?這種效率如何進行測試和評估?
從高層次來看,並行區塊鏈面臨著分類帳不一樣的風險,即雙重支付和交易順序的變化(事實上,這是順序執行的主要優勢)。 確定性並行化通過為底層區塊鏈上的交易建立內部標記系統來解決這個問題;實施樂觀處理的區塊鏈必須確保用於驗證和重新執行交易的機制安全且可用,並且為了效能而進行的權衡可以合理實現。
未來展望和機遇
電腦的發展歷史告訴我們,並行系統隨著時間的推移往往比順序系統更高效和可擴展套件。 後 Solana 時代的並行區塊鏈的崛起凸顯了這一概念在加密基礎設施中同樣適用。甚至以太坊創辦人 Vitalik 最近也提到並行化是提高 EVM Rollup 可擴展套件性的潛在關鍵解決方案之一。
總體而言,加密 / 區塊鏈的採用增長需要比當前系統更優化的系統,包括並行區塊鏈。 Solana 最近的網路問題凸顯了在開發並行區塊鏈方面仍有很大改進空間。 隨著更多團隊尋求推動鏈上領域的邊界,並吸引下一批大規模使用者和採用區塊鏈本地應用和生態系統, 並行執行模型為構建能夠輕鬆處理大規模網路活動的系統提供了直觀的框架, 以達到與 Web2 公司相匹配的規模。