探索並行區塊鏈的設計概念以及當今哪些團隊正在推動前沿。
原文:Parallel Execution: The Next Generation of Blockchains(Shoal Research)
作者:PAUL TIMOFEEV , MIKE JIN , GABE TRAMBLE
編譯: LlamaC
「推薦寄語:在區塊鏈技術的迭代發展中,平行執行正成為提升交易效率、降低成本和增強用戶體驗的關鍵革新。Solana 作為並行執行的先驅,已展示其與 EVM L2 競爭後的突破性成功。
正文
區塊鏈是虛擬機,一種軟體基礎的運算模型,它運行在任何人都可以加入但極難被單一實體控制的分散式實體電腦網路之上。區塊鏈的概念最初在中本聰 2008 年發表的比特幣白皮書中被提出,作為支援比特幣中加密安全點對點支付的核心基礎設施。對於區塊鏈而言,交易就像是社群媒體和網路公司的日誌;它們作為特定網路活動記錄,關鍵的差異在於區塊鏈上的交易是不可篡改的,通常也是公開可查詢的。
交易究竟是什麼
區塊鏈上的交易涉及將數位資產從一個地址轉移到分散式帳本上的另一個地址,這一過程透過公鑰密碼學技術來保護。交易不僅可用於去中心化的點對點轉賬,還可用於各種認證和驗證流程。
區塊鏈交易如何運作
當一筆交易被發起時,例如 Bob 向 Alice 發送一些代幣,Bob 的交易會被廣播到底層的區塊鏈網路。隨後,網路中的一群專門節點開始工作,驗證並確認交易的合法性。一旦足夠多的節點驗證了交易內容,這筆交易就會被添加到一個區塊中,並與其他用戶交易一起打包。當一個區塊滿了,它就會被添加到區塊鏈上,這就是「區塊鏈」名稱的由來。此時,Bob 的交易成為了一個安全且透明的帳本的一部分,他和 Alice 都可以驗證交易內容。
一般來說,所有區塊鏈交易都包含了元數據,這些數據可幫助操作和保護網路的節點識別並執行一組給定的指令和參數。每一筆交易都會有發送者輸入的高層級數據,例如要轉移的金額、目的地地址和用來確認交易的數字簽名,以及自動創建和附加的各種低層級數據,儘管這些數據會根據網絡和設計的不同而有所變化。
然而,交易執行前在網路層面背後所涉及的過程會根據區塊鏈的設計而有所不同。
記憶體池(Ethereum)
記憶體池(memory pool)簡稱 mempool,是區塊鏈設計的常見特性,傳統區塊鏈網路如比特幣和以太坊都存在記憶體池。 Mempools 本質上是緩衝區或 “等待室”,用於存放那些尚未添加到區塊中執行的待處理交易。
為了更好地理解,我們可以概述一下在採用 mempool 的區塊鏈上,交易的生命週期:
- 用戶發起並簽署一筆交易。
- 參與區塊鏈網路的專門節點驗證交易內容的合法性,並確保其包含適當的參數。
- 一旦驗證通過,交易就會被路由到公共 mempool,並與其他待處理交易一起等待打包。
- 最終,根據用戶為交易支付的燃氣費相對於 mempool 中其他交易的燃氣費,用戶的待處理交易會被選中,並與其他待處理交易一起形成區塊鏈上的下一個區塊。此時,交易狀態將顯示為「成功」。
- 在一定時間或區塊生成閾值過後,區塊本身將被最終確定,交易成為記錄在區塊鏈上不可篡改的日誌,除非發生 51% 攻擊,否則這是極難實現的。
無內存池 (Solana)
值得注意的是,一些區塊鏈,如 Solana,並沒有使用 mempool,而是直接將交易轉發給區塊生產者,以此來實現高速和高吞吐量,透過連續的區塊生產。
讓我們繼續透過非 mempool 區塊鏈上的交易生命週期來了解:
- 用戶為其正在使用的應用程式發起並簽署交易。
- 應用程式將交易資訊路由到遠端過程呼叫(RPC)伺服器。
- RPC 提供者將交易發送給目前指定的區塊生產者,以及接下來的三個生產者;這是在當前領導者無法及時執行交易時的預防步驟。 Solana 採用了時隙領導者計劃,這有助於 RPC 更容易路由交易。
- 區塊生產者隨後將已簽署的交易發送給共識節點進行驗證。
- 共識節點投票驗證交易內容,一旦完成,交易狀態就會被路由回 RPC > 應用程式> 用戶,顯示為「成功」或「失敗」。
- 與基於 mempool 的區塊鏈類似,區塊本身在一定時間或基於區塊的閾值通過後會被最終確定。
順序執行
較老的區塊鏈,尤其是比特幣和以太坊,採用交易的順序執行機制。每筆添加到區塊鏈上的交易都會引發網路狀態的變化,而虛擬機器(VM)被設計為僅為了安全起見一次只處理一個狀態變化。
這導致了底層網路吞吐量的顯著瓶頸,因為能夠添加到區塊中的交易數量受到限制,導致等待時間變長,交易成本的空前飆升,有時甚至使網路無法使用。此外,順序執行模型使用硬體組件的效率相當低,因此無法從計算的突破性進展中受益,例如多處理器核心。
平行執行
平行運算是電腦架構的關鍵組成部分,其起源可以追溯到 20 世紀 50 年代末,儘管其理念和理論甚至可以追溯到 1837 年。根據定義,平行計算指的是同時使用多個處理元素來解決一個操作,其中將一個更大更複雜的任務分解為更小的任務,以便比串行方式更有效地完成。
最初僅在高效能運算系統中實施,隨著網路時代對運算的需求呈指數級增長,以及過去幾十年頻率縮放限制的加劇,平行運算已經演變成當今電腦架構中的主導範式。
這種架構標準同樣適用於區塊鏈,只是電腦解決的主要任務是處理和執行交易,或從智慧合約 A 到智慧合約 B 的價值轉移,因此稱為平行執行。
並行執行意味著,區塊鏈不是按順序處理交易,而是可以同時處理多個不衝突的交易。這可以大大增加區塊鏈網路的吞吐量,使其更具有可擴展性,更有效地處理更高的活動負載和區塊空間的需求。
為了簡化理解,可以想像雜貨店的結帳效率:有多個通道供顧客結帳,與只有一個通道供所有人使用相對比。
為什麼並行執行很重要
區塊鏈中的平行執行旨在提高網路的速度和效能,尤其是在網路看到更高的流量和資源需求時。在加密生態系統的背景下,如果 Bob 想鑄造最新的流行 NFT 系列,而 Alice 想購買她最喜歡的模因幣,網路將同時為兩個用戶服務,而不會影響性能和用戶體驗。
雖然這可能看起來只是一個直觀的生活品質特性,但並行執行所開啟的網路效能提升為開發創新的用例和應用程式鋪平了道路,這些應用程式可以利用低延遲和高容量,這本身為將下一批大規模用戶群引入加密生態系統奠定了基礎。
並行執行如何工作
儘管並行執行的概念相對直接,但底層區塊鏈設計的細節影響了平行執行過程本身的表現。設計具有並行執行的區塊鏈的最重要特性是交易能夠存取其底層網路的狀態,包括帳戶餘額、儲存和智慧合約。
區塊鏈上的平行執行可以被歸類為確定性或樂觀性。確定性並行執行,如 Solana 所採用的,本質上要求交易事先聲明所有記憶體依賴關係,即它們事先想要存取的全域狀態的哪些部分。雖然這一步驟為開發人員創造了額外的開銷,但它允許網路在執行前對不衝突的交易進行排序和識別,創建了一個可預測和高效的最佳化系統。相反,樂觀的並行執行結構是為了並行處理所有交易,基於沒有衝突的假設。這使得底層區塊鏈能夠提供更快的交易執行速度,儘管如果發生衝突,可能需要之後的潛在重新執行。如果發現兩個衝突的交易,即嘗試存取相同網路狀態的交易,系統可以重新處理和重新執行它們,無論是並行還是順序。
為了更好地理解這些設計細節的影響,透過當今推動並行執行前沿的團隊的視角來分析並行執行可能會有所幫助。
當下並行執行的市場格局
Solana 虛擬機器(SVM)
Solana 是第一個圍繞平行執行設計的區塊鏈網絡,靈感來自創始人 Anatoly Yakovenko 在電信行業的過去經驗。 Solana 旨在提供一個開發平台,其運行速度盡可能快,因此平行運算的速度和效率是一個簡單直覺的設計選擇。
Sealevel 是 Solana 網路的平行智慧合約運行時環境,是實現其快速速度和高吞吐量的關鍵元件。與基於 EVM 和 WASM 的環境不同,Sealevel 採用多執行緒架構,這意味著它可以在驗證器核心的容量範圍內同時處理多個交易。
Solana 並行執行的關鍵是在啟用交易時,網路會為該交易分配一系列要執行的指令,具體是存取哪些帳戶和狀態以及進行哪些更改——這是確定哪些交易不衝突並且可以同時執行的關鍵,同時也允許嘗試存取相同狀態的交易同時進行。
考慮機場托運行李系統中標籤提供的效率。
Solana 還利用 Cloudbreak,其自訂的 accountsDB,用於儲存和管理狀態數據,以支援交易的並發讀寫。 Cloudbreak 針對並行執行進行了最佳化,可以水平擴展以跨多個節點分佈和管理狀態資料。
由於其平行架構,Solana 能夠處理大量交易,同時仍快速執行,為交易提供近乎即時的最終性。 Solana 目前平均每秒處理 2,000 到 10,000 筆交易(TPS)。此外,隨著像 Eclipse 這樣的團隊推出旨在利用 SVM 作為執行環境的 Layer 2 基礎設施,SVM 的用例正在緩慢但穩定地擴展。
並行 EVM
Parallel EVM 描述了一種新的區塊鏈執行環境,旨在結合 Solana 和 Ethereum 設計的優點,即 Solana 的速度和效能以及 Ethereum 的安全性和流動性。與傳統的 EVM 設計不同,透過並行而不是順序處理交易,Parallel EVM 使開發人員能夠在一個高效能網路上建立應用程序,同時能夠利用與 EVM 流動性和開發工具的連接。
Sei Network
Sei Network 是一個與 EVM 相容的開源 Layer 1 區塊鏈,它支援圍繞高效能構建的各種去中心化應用程式。 Sei 旨在為使用者和開發者提供快速的速度和低成本,而並行執行是實現此效能和使用者體驗的關鍵組成部分。目前,Sei 提供了 390 毫秒的區塊確認時間,並在其太平洋主網上處理了超過 19 億筆交易。
最初,Sei 採用了確定性並行執行模型,智能合約提前聲明其所需的狀態訪問,以便系統能夠同時運行不衝突的交易。隨著他們 V2 升級的到來,Sei 正在過渡到一個樂觀的並行模型,這意味著所有交易將在提交到網路時並行處理(執行階段),然後在驗證階段檢查與先前交易的衝突資訊。如果發現兩個或更多的衝突交易,即嘗試存取相同網路狀態的交易,Sei 會識別此衝突點,然後根據衝突的性質,要麼並行要麼順序地重新運行交易。
為了儲存和維護交易數據,Sei 還將引入 SeiDB,這是一個客製化資料庫,旨在透過優化並行執行來改進 v1 版本的不足之處。 SeiDB 的目標是減少儲存冗餘資料的開銷,並保持高效率的磁碟使用率,以提高網路效能。 V2 減少了追蹤和儲存所需的元資料量,並啟用了預寫日誌,以協助在崩潰事件中復原資料。
最後,Sei 最近還宣布推出了其 Parallel Stack,這是一個開源框架,用於使 Layer 2 擴展解決方案(例如 rollups)能夠利用並行執行並從中受益。
Monad
Monad 是一個即將到來的平行-EVM Layer 1 區塊鏈,為以太坊應用程式和基礎設施提供完整的字節碼和 RPC 相容性。透過一些創新的技術實現,Monad 旨在保持較低交易成本的同時,透過優化效能和可移植性,提供比現有區塊鏈更具互動性的體驗,具有 1 秒的區塊時間和高達 10,000 TPS 的最終確定性。
Monad 實現了平行執行和超標量管線技術,以優化交易的速度和吞吐量。類似於 Sei v2,Monad 將採用樂觀執行模型,這意味著網路將開始同時執行所有傳入的交易,然後分析和驗證交易以尋找衝突並相應地重新執行,最終目標是,如果交易按順序執行,結果將是相同的。
重要的是要注意,在與以太坊保持同步的同時,Monad 會以線性順序對區塊中的交易進行排序,並順序更新每個交易。
為了比目前以太坊客戶端提供的狀態更有效地維護和存取區塊鏈數據,Monad 創建了自己的客製化 MonadDB,這是為區塊鏈本地構建的。 Monad DB 利用先進的 Linux 核心特性,實現高效率的非同步磁碟操作,消除了同步輸入/輸出存取的限制。 MonadDB 提供非同步輸入/輸出(async I/O)訪問,這是實現並行執行的關鍵特性,系統可以在等待讀取先前交易的狀態的同時開始處理下一筆交易。
一個簡單的類比是,考慮烹飪一個多步驟的餐點(例如肉丸意麵)。所涉及的步驟是 1)準備醬汁,2)煮肉丸,和 3)煮麵條。一個高效的廚師會先為麵條煮水,然後準備醬汁的配料,然後在現在沸騰的水中煮麵條,接著煮醬汁,最後煮肉丸,而不是一次完成一個步驟,每完成一個任務後再進行下一個。
Move
Move 是一種程式語言,最初由 Facebook 團隊在 2019 年為現已廢棄的 Diem 專案開發。 Move 旨在以安全的方式處理智能合約和交易數據,消除了其他語言固有的攻擊向量,例如可重入性攻擊。
MoveVM 作為基於 Move 的區塊鏈的本地執行環境,利用並行化提供更快的交易執行速度和更高的整體效率。
Aptos
Aptos 是由前 Diem 專案成員開發的基於 Move 的 Layer 1 區塊鏈,它透過並行執行提供了高效能的環境給應用程式開發者。 Aptos 利用 Block-STM,這是一種軟體事務記憶體(STM)並發控制機制的修改實作。
Block-STM 是一個多執行緒並行執行引擎,它允許樂觀並行執行。交易在區塊內被預先排序和策略性地排序,這對於有效解決衝突和重新執行交易至關重要。 Aptos 的研究發現,使用 Block-STM 的平行化理論上可以支持高達 160,000 TPS。
Sui
與 Aptos 類似,Sui 是由前 Diem 專案成員開發的 Layer 1 區塊鏈,它也使用 Move 語言。然而,Sui 採用了自訂的 Move 實現,該實現從原始的 Diem 設計中改變了儲存模型和資產權限。特別是,這允許 Sui 使用狀態儲存模型將獨立交易表示為物件。每個物件在 Sui 的執行環境中都有唯一 ID ,從而允許系統輕鬆識別不衝突的交易再並行處理它們。
與 Solana 類似,Sui 實施了確定性並行執行,要求交易提前聲明它們需要存取的帳戶。
Movement Labs
Movement 正在建立一套開發者工具和區塊鏈基礎設施服務,以便開發者能夠輕鬆存取在 Move 上建立的好處。作為 Move 開發者的 AWS 類別執行即服務平台,Movement 將並行化作為核心設計特性,以實現更高的吞吐量和更大的整體網路效率。 MoveVM 是一個模組化的執行環境,它允許區塊鏈網路根據需要擴展和調整其交易處理能力,以支援日益增長的交易量,增強其並行處理和執行交易的能力。
Movement 也將推出 M2,這是一個將與 EVM 和 Move 用戶端互通的 ZK-rollup。 M2 將繼承 Block-STM 並行化引擎,並有望因此實現數萬個 TPS。
平行系統的挑戰
關於平行區塊鏈的發展,有一些重要的問題和考慮需要深思:
- 網路為了透過並行執行實現更好的效能而做出了哪些權衡?
- 較少的驗證者保護網路可以加快驗證和執行速度,但這是否會妥協區塊鏈的安全性,使其更容易受到驗證者的共謀攻擊?
- 是否有大量的驗證者共址?這是一種在加密和非加密系統中都常見的最小化延遲的策略,但如果特定資料中心受到威脅,網路會發生什麼?
- 對於樂觀的平行系統,重新執行無效交易的過程是否會隨著網路的擴展而成為瓶頸?這種效率是如何被測試和評估的?
從高層次來看,平行區塊鏈面臨著帳本不一致的風險,即雙重支付和交易順序的變化(這確實是順序執行的主要好處)。確定性並行化透過在底層區塊鏈上為交易創建內部標記系統來解決這個問題。實施樂觀處理的區塊鏈必須確保它們用來驗證和重新執行交易的機制是安全和實用的,並且為了效能所做的權衡可以合理實施。
未來展望
計算機的歷史告訴我們,隨著時間的推移,平行系統往往比順序系統更有效和可擴展。 Solana 之後的平行區塊鏈的崛起強調了這個概念也適用於加密基礎設施。即使是 Vitalik 也提到並行化為提高 EVM rollups 可擴展性的潛在關鍵解決方案之一。廣義上講,加密/區塊鏈的採用成長需要比今天可用的系統更優越的系統,包括平行區塊鏈。 Solana 最近的網路挑戰突顯了平行區塊鏈開發中還有很大的改進空間。隨著更多的團隊尋求推動鏈上前沿的界限,並將下一批大規模用戶群體和採用引入到區塊鏈原生應用和生態系統中,平行執行模型為構建能夠高效處理網路活動量級、輕鬆搭配 Web2 公司規模的系統提供了一個直覺的框架。
免責聲明:作為區塊鏈資訊平台,本站所發布文章僅代表作者及來賓個人觀點,與 Web3Caff 立場無關。文章內的資訊僅供參考,均不構成任何投資建議及要約,並請您遵守所在國家或地區的相關法律法規。