探索並行區塊鏈的未來:前沿項目、挑戰與機遇

科技墨鏡挨著戴 2024-05-15 04:42:23

前言

1.0 區塊鏈交易

區塊鏈是一個虛擬機,它是運行在分布式物理計算機網絡之上的軟件計算模型,任何人都可以加入該網絡,但任何單個實體都難以控制。區塊鏈的概念最早出現在中本聰于 2008 在臭名昭著的比特幣白皮書中,它是比特幣實現密碼安全點對點支付的核心基礎設施。交易對于區塊鏈就像日志對于社交媒體和互聯網公司一樣,它們都是記錄特定網絡活動的記錄,但關鍵的區別在于區塊鏈上的交易是不可篡改的並且通常是公開可查的。

那麽,什麽是交易?

區塊鏈上的交易涉及使用公鑰密碼學將數字資産從分布式賬本上的一個地址轉移到另一個地址。交易可用于去中心化點對點轉移,或用于各種身份驗證和核查過程。

1.1 區塊鏈交易的工作原理

當發起交易時(例如,Bob 向 Alice 發送一些代幣),Bob 的交易會廣播到底層的區塊鏈網絡。隨後,網絡上集群的專用節點開始工作,驗證和確認交易的合法性。一旦足夠數量的節點驗證了交易內容,該交易就會與其他用戶交易一起添加到一個區塊中。一旦一個區塊填滿,它就會被添加到鏈上,因此得名“區塊鏈”。Bob 的交易現在成爲安全透明賬簿的一部分,他和 Alice 都可以核實內容。

大體上說,所有區塊鏈交易都包含元數據,這些元數據可以幫助操作和保護網絡的節點識別和執行給定的一組指令和參數。每個交易都將包含原始發送者輸入的高級數據,例如要轉移的金額、目標地址和確認交易的數字簽名,以及各種自動創建和附加的低級數據,盡管這些數據會因網絡和設計而異。

然而,最終在交易執行之前,網絡層幕後涉及的過程會因區塊鏈的設計而異。

1.1.1 內存池 (Mempool)

內存池 (mempool) 是區塊鏈設計的一個常見特征,由比特幣和以太坊等傳統區塊鏈網絡實現。內存池只是緩沖區或“等待室”,用于存放尚未添加到區塊並執行的待處理交易。

爲了更好地理解,我們可以列出使用內存池的區塊鏈上交易的生命周期:

用戶發起並簽名一筆交易。

參與區塊鏈網絡的專用節點驗證交易內容的合法性並包含適當的參數。

驗證後,交易會與其他待處理交易一起路由到公共內存池。

最終,根據交易支付的 gas 費用相對于內存池中其他交易的費用,用戶的待處理交易將與其他待處理交易集群一起被選中,形成區塊鏈上的下一個區塊。此時,我們的交易狀態將顯示爲“成功”。

在經過一定時間或基于區塊的阈值後,區塊本身會被最終確認,交易成爲記錄在區塊鏈上的不可變日志,除非發生 51% 攻擊(這在其他情況下極其難以實現),否則該交易將無法被篡改。

1.1.2 無內存池方案 (Solana)

需要注意的是,並非所有區塊鏈都采用內存池設計。例如,Solana 區塊鏈通過持續生成區塊來實現高速吞吐量,它不使用內存池,而是將交易直接轉發給區塊生成者。

讓我們來看一下非內存池區塊鏈上的交易生命周期:

用戶發起並簽名他們正在使用的應用程序的交易。

應用程序將交易信息路由到遠程過程調用 (RPC) 服務器。

RPC 提供者將交易發送給當前指定 的區塊生成者和接下來的三個生成者。 這是一種預防措施,以防當前領導者無法及時執行交易。Solana 采用槽位領導者調度程序,幫助 RPC 更輕松地路由交易。

然後,區塊生成者將簽名交易發送給共識節點進行驗證。

共識節點投票驗證交易內容,完成後,交易狀態會路由回 RPC > 應用程序 > 用戶,顯示爲“成功”或“失敗”。

類似于基于內存池的區塊鏈,經過一定時間或基于區塊的阈值後,區塊本身會被最終確認。

1.2 順序執行

較早的區塊鏈,例如比特幣和以太坊,采用順序執行機制來處理交易。添加到區塊鏈的每個交易都會引發網絡狀態的改變,出于安全考慮,虛擬機被設計爲一次只處理一個狀態更改。

這導致了底層網絡吞吐量的瓶頸,因爲可以添加到區塊中的交易數量受到限制,從而導致更長的等待時間和交易成本前所未有的飙升,有時甚至會使網絡無法使用。此外,順序執行模型利用硬件組件的效率低下,因此無法從計算突破(例如多處理器內核)中受益。

並行執行

2.0 什麽是平行執行?

並行計算是計算機架構的關鍵組件,其起源可以追溯到 1950 年代後期,盡管其思想和理論可以追溯到 1837 年。根據定義,並行計算是指利用多個處理單元同時解決一個操作的行爲,其中一個更大更複雜的任務被分解成更小的任務,以比串行方式更有效地完成。

最初僅在高性能計算系統中實現,並行計算已經演變成當今計算機架構的主導範例,因爲互聯網時代對計算的需求呈指數級增長,這在過去幾十年中由于頻率擴展的限制而更加惡化。

這種架構標准在很大程度上也適用于區塊鏈,只是計算機解決的主要任務是處理和執行交易,或者將價值從智能合約 A 轉移到智能合約 B,因此稱爲平行執行。

平行執行意味著區塊鏈可以同時處理多個非沖突的交易,而不是串行處理交易。這可以大大提高區塊鏈網絡的吞吐量,使其能夠更具可擴展性並更有效地處理更高負載的活動和對區塊空間的需求。

一個更簡單的類比是,考慮一個雜貨店有多個結賬通道供購物者結賬與只有一個通道的效率區別。

爲什麽平行執行很重要?

區塊鏈中的並行執行旨在解鎖網絡速度和性能的效率,尤其是在網絡流量和資源需求增加的情況下。在加密生態系統中,並行執行意味著如果 Bob 想鑄造最新流行的 NFT 系列,而 Alice 想購買她喜歡的迷因幣,那麽網絡將同時爲這兩個用戶提供服務,而不會影響任何性能和用戶體驗。

雖然這看起來只是一個直觀的提升生活質量的功能,但並行執行所帶來的網絡性能提升爲開發新型創新用例和應用程序鋪平了道路,這些用例和應用程序可以利用低延遲和大容量,這本身就爲將下一批用戶群體引入加密生態系統奠定了基礎。

並行執行如何運作?

雖然並行執行的前提相對簡單,但底層區塊鏈的設計細微差別會影響並行執行過程本身的執行方式。設計具有並行執行功能的區塊鏈最相關的特性是交易訪問其底層網絡狀態的能力,包括賬戶余額、存儲和智能合約。

區塊鏈上的並行執行可以分爲確定性執行和樂觀性執行兩種。確定性並行執行,例如 Solana 區塊鏈所采用,本質上要求交易預先聲明所有內存依賴關系,即它們希望預先訪問全局狀態的哪些部分。雖然此步驟會給開發人員帶來額外的開銷,但從更廣泛的意義上來說,它可以讓網絡在執行之前對非沖突的交易進行排序和識別,從而創建一個可預測且高效的優化系統。相反,樂觀性並行執行旨在並行處理所有交易,並假設不存在沖突。這使底層區塊鏈能夠更快地執行交易,但代價是在發生沖突後可能需要重新執行。如果發現提交了兩個沖突的交易,系統可以重新處理並重新執行它們,可以並行執行或順序執行。

爲了更好地理解這些設計細節的影響,可以通過分析當今引領並行執行前沿的團隊來更好地了解並行執行。

並行執行的現狀

爲了更好地理解這些設計細節的影響,可以通過分析當今引領並行執行前沿的團隊來更好地了解並行執行。

3.1 Solana 虛擬機 (SVM)

Solana 是第一個圍繞並行執行設計區塊鏈網絡的項目,靈感來自于創始人 Anatoly Yakovenko 在電信行業之前的經驗。Solana 旨在提供一個盡可能快的開發人員平台,因此並行計算帶來的速度和效率是簡單直觀的設計選擇。

實現 Solana 高速和高吞吐量的一個關鍵組件是 Sealevel,它是網絡的並行智能合約運行時環境。與基于 EVM 和 WASM 的環境不同,Sealevel 采用多線程架構,這意味著它可以根據驗證器核心的容量同時處理多個交易。

Solana 實現並行執行的關鍵在于,當啓用交易時,網絡會分配一個指令列表供該交易執行,具體說明要訪問哪些賬戶和狀態以及要進行哪些更改 - 這是確定哪些交易是非沖突的並且可以同時執行的關鍵,同時也允許嘗試訪問相同狀態的交易並發執行。可以將此類比于機場值機托運行李系統中標簽帶來的效率提升。

Solana 還利用其自己的定制賬戶數據庫 Cloudbreak 來存儲和管理狀態數據,以實現事務的並發讀寫。Cloudbreak 針對並行執行進行了優化,可水平擴展以跨多個節點分發和管理狀態數據。

得益于其並行架構,Solana 可以處理大量交易並且仍然可以快速執行,使交易接近即時確定性。Solana 目前平均每秒處理 2,000 到 10,000 筆交易 (TPS)。此外,SVM 的用例正在緩慢但確実に拡大,Eclipse 等團隊正在推出 Layer 2 基礎設施,旨在利用 SVM 作爲執行環境。

3.2 並行 EVM

並行 EVM 描述了一種新的區塊鏈執行環境,旨在將 Solana 和以太坊設計的“兩全其美”結合起來,即 Solana 的速度和性能,以及以太坊的安全性和流動性。通過並行處理交易而不是像傳統 EVM 設計那樣順序處理,並行 EVM 使開發人員能夠在高性能網絡上構建應用程序,同時能夠利用與 EVM 流動性和開發人員工具的連接。

3.2.1 Sei Network

Sei Network 是一個兼容 EVM 的開源 Layer 1 區塊鏈,可承載各種圍繞高性能構建的去中心化應用程序。Sei 的構建目標是爲用戶和開發人員提供低成本的高速交易,而並行執行是實現此性能和用戶體驗的關鍵組件。目前,Sei 的區塊確認時間爲 390 毫秒,其太平洋主網上已經處理了超過 19 億筆交易。

最初,Sei 采用確定性並行執行模型,其中智能合約需要預先聲明它們所需的 state 訪問,以便系統同時運行非沖突的交易。隨著其 V2 升級的開始,Sei 正轉而采用樂觀並行模型,這意味著所有交易在提交到網絡 (執行階段) 後將並行處理,然後將被審查是否存在與先前交易沖突的信息 (驗證階段)。如果發生兩個或多個沖突交易,即嘗試訪問相同網絡狀態的交易,Sei 會識別沖突點,然後根據沖突的性質並行或順序地重新運行這些交易。

爲了存儲和維護交易數據,Sei 還將引入 SeiDB,這是一個定制數據庫,旨在通過針對並行執行進行優化來改善 v1 中的缺點。SeiDB 旨在降低存儲冗余數據和維護高效磁盤使用的開銷,以獲得更好的網絡性能。V2 減少了跟蹤和存儲所需元數據的量,並支持預寫日志以幫助在崩潰時進行數據恢複。

最後,Sei 還最近宣布推出其並行堆棧 (Parallel Stack),這是一個開源框架,旨在使 Layer 2 擴展解決方案(例如 Rollup)能夠利用並行執行並從中受益。

3.2.2 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)烹饪意大利面。一個高效的廚師會首先爲意大利面燒水,然後准備醬汁的配料,然後將意大利面扔進沸水中,然後烹饪醬汁,最後是肉丸,而不是一次做完每一步,完成一項任務後再繼續下一項。

3.3 Move

Move 是一種編程語言,最初由 Facebook 團隊在 2019 年爲其現已終止的 Diem 項目開發。Move旨在以安全的方式處理智能合約和交易數據,消除其他語言(例如重入攻擊)中常見的攻擊向量。

MoveVM 是 Move 型區塊鏈的原生執行環境,它利用並行化來提供更快的交易執行速度和更高的整體效率。

3.3.1 Aptos

Aptos 是一個由 Diem 項目的前成員開發的基于 Move 的 Layer 1 區塊鏈,它通過實施並行執行來爲應用程序開發人員提供一個高性能的環境。Aptos 利用 Block-STM,這是一種經過修改的軟件事務內存 (STM) 並發控制機制的實現。

Block-STM 是一個支持樂觀並行執行的多線程並行執行引擎。交易在區塊內預先排序並進行戰略性排序,這對于有效地解決沖突和重新執行這些交易至關重要。Aptos 進行的研究表明,理論上可以使用 Block-STM 的並行化來支持高達 160K TPS。

3.3.2 Sui

與 Aptos 類似,Sui 是一個由 Diem 項目的前成員開發的 Layer 1 區塊鏈,它使用 Move 語言。但是,Sui 使用了 Move 的自定義實現,該實現更改了原始 Diem 設計中的存儲模型和資産權限。具體而言,這使 Sui 能夠利用狀態存儲模型將獨立交易表示爲對象。每個對象在 Sui 的執行環境中都有一個唯一的 ID,這樣系統就可以輕松識別非沖突的交易並並行處理它們。

類似于 Solana,Sui 實施確定性並行執行,要求交易預先聲明它們需要訪問哪些賬戶。

3.3.3 Movement Labs

什麽是 Movement?

Movement 正在構建一套開發者工具和區塊鏈基礎設施服務,使開發人員能夠輕松享受構建 Move 應用的優勢。Movement 以類似于 AWS 的執行即服務提供商的身份爲 Move 開發人員提供服務,並將其並行化作爲核心設計功能,以實現更高的吞吐量和更大的整體網絡效率。MoveVM 是一個模塊化的執行環境,使區塊鏈網絡能夠根據需要擴展和調整其交易處理能力,以支持越來越多的交易量,從而增強其並行處理和執行交易的能力。

Movement 還將推出 M2,這是一個與 EVM 和 Move 客戶端都互操作的 ZK rollup。M2 將繼承 Block-STM 並行化引擎,預計因此能提供數萬 TPS 的吞吐量。

總結

4.1 當今並行系統的挑戰

在開發平行區塊鏈的過程中,需要思考一些重要的問題和注意事項:

網絡爲了通過並行執行獲得更好的性能而做出了哪些權衡?

更少的驗證節點可以帶來更快的驗證和執行速度,但這是否會損害區塊鏈的安全性,因爲驗證節點更容易串謀攻擊網絡?

是否有大量的位置相同的驗證節點?這在加密和非加密系統中都是一種常用的最小化延遲的策略,但是如果那個特定的數據中心被攻破,網絡會發生什麽?

對于樂觀並行系統來說,隨著網絡擴展,重新執行無效交易的過程是否會成爲瓶頸?這種效率是如何測試和評估的?

總而言之,平行區塊鏈面臨著賬本一致性問題的風險,例如雙重花費和交易順序的改變(這實際上是順序執行的主要優點)。確定性並行化通過爲底層區塊鏈上的交易創建內部標簽系統來解決這個問題。實施樂觀處理的區塊鏈必須確保它們用來驗證和重新執行交易的機制是安全和有效的,並且爲性能做出的權衡是可以合理實施的。

4.2 未來展望/機遇

計算機的曆史告訴我們,與順序系統相比,並行系統往往隨著時間的推移變得更加高效和可擴展。Solana 之後興起的平行區塊鏈的崛起強調了這個概念也適用于密碼基礎設施。甚至 Vitalik 最近也暗示了並行化是提高 EVM rollup 可擴展性的潛在關鍵解決方案之一。從廣義上講,加密/區塊鏈 adoption 的增長要求系統比當前可用的系統更加優化,其中包括平行區塊鏈。Solana 最近的網絡困境凸顯了平行區塊鏈開發存在巨大改進空間。隨著越來越多的團隊尋求突破鏈上應用的前沿,並將下一批用戶群體和采用引入到區塊鏈原生應用程序和生態系統中,並行執行模型提供了一個直觀 的框架,可以用來構建能夠高效處理大量網絡活動、輕松達到與 Web2 公司相當規模的系統。

0 阅读:0

科技墨鏡挨著戴

簡介:感謝大家的關注