作者:PAUL TIMOFEEV, MIKE JIN, AND G
編譯|白話區塊鏈(ID:hellobtc)
如果說以分布式記賬方式的比特幣是區塊鏈1.0,那么,以分布式狀態機的方式實現去中心化應用( dApp )的以太坊則是區塊鏈2.0。區塊鏈網絡從2008年發展到現在,不過才十幾年的歷史,但誕生了無數技術和商業模式的創新,從 Web3 基礎設施到以 DeFi 、 NFT 、社交網絡和 GameFi 等為代表的各種賽道,行業的蓬勃發展不斷吸引新用戶參與,這反過來也對產品體驗提出了更高的要求。
而區塊鏈不可能三角(Blockchain Impossible Triangle),又稱為區塊鏈三難問題,根據當前的技術,目前還無法很好的在同一個系統中同時實現所有要素。
因此自誕生以來,人們提出了各種各樣的解決方案試圖解決性能問題。這些解決方案大致可以分為兩類:一類是鏈上擴容方案,如分片( sharding )和并行區塊鏈;一類是鏈下擴容方案,如閃電網絡、側鏈和 Rollups 等。
今天我們就以Solana、Sei 和Monad 等案例,來看看業內的并行區塊鏈的設計原理和發展狀況。
以下為正文:
01
區塊鏈交易
區塊鏈是虛擬機器,一種基于去中心化物理計算機網絡的軟件計算模型,任何人都可以加入,但對于任何單個實體來說,想要控制它是極其困難的。
區塊鏈的概念首次在中本聰(Satoshi Nakomoto)2008年撰寫的比特幣白皮書中出現,以作為實現比特幣加密安全的點對點支付的核心基礎設施。交易對于區塊鏈來說就像日志對于社交媒體和互聯網公司來說一樣,它們作為該特定網絡的活動記錄,其關鍵區別在于區塊鏈上的交易是不可變的,并且通常是公開可觀察的。
但是交易到底是什么呢?
區塊鏈上的交易是將數字資產從分布式賬本上的一個地址轉移到另一個地址,通過使用公鑰密碼學進行安全保護,可以用去中心化的點對點轉賬、也可以用于各種認證和驗證過程來記錄交易。
1)區塊鏈交易的工作原理
當發起一筆交易時,例如Bob向Alice發送一些Token,Bob的交易會被分享到底層的區塊鏈網絡中。隨后,網絡上的專門節點群開始驗證和確認該交易是否合法。一旦足夠多的節點驗證了交易的內容,該交易就會與其他用戶的交易一起添加到一個區塊中。當一個區塊被填滿后,它就會被添加到鏈上,因此得名為“區塊鏈”。Bob的交易現在成為了一個安全透明的賬本的一部分,他和Alice都可以驗證其內容。
總的來說,所有區塊鏈交易都包含元數據,指的是幫助運行和保護網絡的節點識別和執行一組給定的指令和參數。每個交易都有原始發送者輸入的高級數據,例如需要轉移的金額、目標地址以及用于確認交易的數字簽名,以及各種低級數據,這些數據會自動創建并附加,不過具體數據的形式會根據網絡和設計的不同而有所差異。
然而,最終,在交易執行之前,在網絡層背后涉及的過程會根據區塊鏈的設計而有所不同。
-
內存池
內存池(或稱為mempool)是傳統區塊鏈網絡(如比特幣和以太坊)中常見的一部分。內存池實際上是一種緩沖區或“等候室”,用于存放待處理的交易,這些交易尚未被添加到區塊并執行。為了更好地理解,我們可以描述一下在使用內存池的區塊鏈上交易的生命周期:
用戶發起并簽署一筆交易;
參與區塊鏈網絡的專門節點驗證交易的內容,確保其合法,并包含適當的參數;
一旦驗證通過,該交易與其他待處理交易一起被發送到公共內存池中;
最終,根據交易支付的gas費用相對于內存池中其他交易的情況,我們用戶的待處理交易與其他待處理交易一起被選中形成區塊鏈上的下一個區塊。此時,我們的交易狀態將顯示為“成功”。
經過一段時間或基于區塊數的閾值后,區塊本身被最終確認,并且該交易成為記錄在區塊鏈上的不可變日志,除非發生51%攻擊,否則幾乎無法被篡改,而進行這樣的攻擊是一項非常困難的任務。
-
無內存池(Solana)
需要注意的是,一些區塊鏈,如Solana,并不使用內存池,而是直接將交易轉發給區塊生產者,以實現通過連續的區塊生產來實現高速度和吞吐量。
在無內存池的區塊鏈上交易的生命周期是怎么樣的呢?一起來看看:
用戶為其正在使用的應用程序發起并簽署一筆交易;
應用程序將交易信息路由到遠程過程調用(RPC)服務器;
RPC提供者將交易發送給當前指定的區塊生產者以及接下來的三個生產者;這是一種預防性措施,以防當前的領導者不能及時執行交易。Solana采用了一個槽位領導者計劃,有助于RPC更輕松地路由交易;
區塊生產者將已簽名的交易發送給共識節點進行驗證;
共識節點投票驗證交易的內容,一旦完成,交易狀態將通過RPC→ 應用程序→ 用戶的路徑返回,狀態為“成功”或“失敗”。
與基于內存池的區塊鏈類似,區塊本身在一定時間或達到基于區塊的閾值后被最終確認。
2)順序執行
較早的區塊鏈,即比特幣和以太坊,采用了順序執行機制來處理交易。每次添加到區塊鏈的交易都會引發網絡狀態的變化,為了安全起見,虛擬機結構被設計成一次只能處理一個狀態變化。
這導致了底層網絡吞吐量的嚴重瓶頸,因為可以添加到區塊的交易數量受限,從而導致等待時間更長,交易成本出現前所未有的飆升,有時甚至使網絡無法使用。此外,順序執行模型在使用硬件組件時效率較低,因此無法從計算方面的突破,如多個處理器核心,獲得好處。
02
并行執行
1)什么是并行執行?
并行計算是計算機體系結構的關鍵組成部分,其起源可以追溯到20世紀50年代末,盡管其理論和構想甚至可以追溯到1837年。按照定義,并行計算是指同時利用多個處理元素來解決一個操作的行為,其中將一個更大且更復雜的任務分解為較小的任務,比串行方式更高效地完成。
最初只在高性能計算系統中實施,隨著互聯網時代對計算需求的指數增長,并行計算已經發展成為如今計算機體系結構中的主導范式。
這種計算體系結構標準在區塊鏈中也同樣適用,只是計算機解決的主要任務是處理和執行交易,或者是從智能合約A向智能合約B的價值轉移,因此稱為并行執行。
并行執行意味著區塊鏈不再按順序處理交易,而是可以同時處理多個不沖突的交易。這可以極大地提高區塊鏈網絡的吞吐量,使其更具可擴展性和高效性,以處理更高負載的活動和對區塊空間的需求。
舉個簡單的類比,考慮一家設有多個收銀通道的雜貨店的效率,與只有一個通道供所有顧客使用相比。
2)為什么并行執行很重要?
區塊鏈中的并行執行旨在提高網絡的速度和性能效率,尤其是在網絡面臨更高的流量和資源需求時。在加密貨幣生態系統的背景下,并行執行意味著如果Bob想要鑄造最新的熱門NFT收藏品,而Alice想要購買她最喜歡的Memecoin,網絡將為兩個用戶提供服務,而不會在性能和用戶體驗方面有任何損失。
雖然這可能只是一個直觀的生活質量特性,但通過并行執行解鎖的網絡性能改進為開發新的創新用例和應用提供了機會,這些用例和應用可以利用低延遲和大容量的特性,為將下一批大規模用戶引入加密貨幣生態系統奠定了基礎。
3)并行執行是如何工作的?
雖然并行執行的前提相對簡單,但底層區塊鏈設計的細微差別會影響并行執行過程的具體實施。設計具有并行執行功能的區塊鏈最相關的特性是交易能夠訪問其底層網絡的狀態,包括賬戶余額、存儲和智能合約。
區塊鏈上的并行執行可以分為確定性和樂觀性兩種方式。確定性并行執行,比如Solana等區塊鏈采用的方法,需要交易事先聲明所有的內存依賴關系,即它們事先希望訪問全局狀態的哪些部分。雖然這一步驟為開發人員增加了額外的開銷,但更廣泛地說,它允許網絡在執行之前對非沖突的交易進行排序和識別,從而創建出一個可預測和高效的優化系統。相反,樂觀性并行執行的結構是為了同時處理所有交易,基于這樣的假設,即不存在沖突。這使得底層區塊鏈能夠提供更快的交易執行速度,盡管在沖突發生時可能需要重新執行。如果發現提交了兩個沖突的交易,系統可以重新處理和重新執行它們,無論是并行還是順序執行。
為了更好地理解這些設計細節的影響,通過研究當前推動并行執行前沿的團隊,可能會有所幫助。
4)如今并行執行的現狀
為了更好地理解這些設計細節的影響,通過研究當前推動并行執行前沿的團隊,可以更好地分析并行執行的意義。
03
虛擬機
1)Solana虛擬機(SVM)
Solana是第一個圍繞并行執行設計的區塊鏈網絡,靈感來自創始人Anatoly Yakovenko在電信行業的經驗。Solana旨在提供一個開發者平臺,以物理學允許的速度運行,因此并行計算所釋放出的速度和效率是一個簡單而直觀的設計選擇。
實現Solana快速的速度和高吞吐量的關鍵組成部分是Sealevel(一項技術),該網絡的并行智能合約運行時的環境。與基于EVM和WASM的環境不同,Sealevel采用了多線程架構,意味著它可以同時處理多個交易,以符合驗證節點核心的容量。
實現Solana并行執行的關鍵在于,當啟用一個交易時,網絡會分配一系列指令來執行該交易,具體包括要訪問的賬戶和狀態以及要進行的更改,這是確定哪些交易是非沖突的并可以同時執行的關鍵,同時也使得試圖訪問相同狀態的交易可以并發執行。參考標簽在機場行李系統中提供的效率。
Solana還利用了自己定制的賬戶數據庫Cloudbreak,用于存儲和管理狀態數據,以實現并發讀寫事務。Cloudbreak經過優化以實現并行執行,通過水平擴展將狀態數據分布和管理在多個節點上。
由于其并行架構,Solana可以處理大量交易并且仍然快速執行,使交易幾乎即時達到最終性。Solana目前平均每秒處理2000到10000個交易。此外,針對SVM的用例正在逐漸擴大,例如Eclipse團隊正在推出旨在利用SVM作為執行環境的Layer 2基礎設施。
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)煮意面。一個高效的廚師會先燒開煮意面的水,然后準備醬料的材料,然后將意面放入沸水中煮,然后煮醬料,最后再煮肉丸,而不是一次只做一步,完成一個任務后再進行下一步。
3)Move
Move是一種編程語言,最初由Facebook團隊于2019年為其已停用的Diem項目開發。Move旨在以安全的方式處理智能合約和交易數據,消除其他語言本地攻擊向量(如重入攻擊)。
MoveVM作為基于Move的區塊鏈的本地執行環境,利用并行化來提供更快的交易執行速度和更高的整體效率。
-
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并行化引擎,并有望實現每秒數萬筆的吞吐量。
04
小結
1)當今并行系統面臨的挑戰
在開發并行區塊鏈時,需要思考一些重要的問題和考慮因素:
為了通過并行執行實現更好的性能,網絡做出了哪些權衡?
少量的驗證者可以提高驗證和執行速度,但這是否會損害區塊鏈的安全性,使驗證者更容易共謀對抗網絡?
是否有大量的驗證者共同部署?這是一種在加密和非加密系統中都常見的減少延遲的策略,但如果特定數據中心受到威脅,網絡會發生什么變化?
對于樂觀并行系統,重新執行無效交易的過程是否會在網絡擴展時造成瓶頸?這種效率如何進行測試和評估?
從高層次來看,并行區塊鏈面臨著分類賬不一樣的風險,即雙重支付和交易順序的變化(事實上,這是順序執行的主要優勢)。確定性并行化通過為底層區塊鏈上的交易創建內部標記系統來解決這個問題;實施樂觀處理的區塊鏈必須確保用于驗證和重新執行交易的機制安全且可用,并且為了性能而進行的權衡可以合理實現。
2)未來展望和機遇
計算機的發展歷史告訴我們,并行系統隨著時間的推移往往比順序系統更高效和可擴展。后Solana時代的并行區塊鏈的崛起凸顯了這一概念在加密基礎設施中同樣適用。甚至以太坊創始人 Vitalik 最近也提到并行化是提高EVM Rollup可擴展性的潛在關鍵解決方案之一。
總體而言,加密/區塊鏈的采用增長需要比當前系統更優化的系統,包括并行區塊鏈。Solana最近的網絡問題凸顯了在開發并行區塊鏈方面仍有很大改進空間。隨著更多團隊尋求推動鏈上領域的邊界,并吸引下一批大規模用戶和采用區塊鏈本地應用和生態系統,并行執行模型為構建能夠輕松處理大規模網絡活動的系統提供了直觀的框架,以達到與Web2公司相匹配的規模。
原文鏈接:https://www.shoal.gg/p/parallel-execution-the-next-generation
原文作者:PAUL TIMOFEEV, MIKE JIN, AND GABE TRAMBLE
本文鏈接:http://www.zhucexiangganggs.com/kp/du/05/5172.html
來源:https://mp.weixin.qq.com/s/JhAEG2wu0_2d_6eDE95kXw