以Solana、Sei和Monad為例 探討并行區(qū)塊鏈的設(shè)計空間

訪客 2年前 (2024-03-20) 閱讀數(shù) 296 #區(qū)塊鏈
文章標簽 前沿文章

作者:Ali Sheikh,加密分析師;翻譯:喜來順財經(jīng)xiaozou

本文將概述區(qū)塊鏈的并行設(shè)計架構(gòu),借用三個相關(guān)例子:Solana、Sei和Monad。本文強調(diào)樂觀并行和確定性并行之間的區(qū)別,并了解這些鏈上的狀態(tài)和內(nèi)存訪問的細微差別。

1、前言

1837年,計算機科學家和數(shù)學家Charles Babbage(查爾斯·巴貝奇)設(shè)計了“Analytical Engine(分析機)”,為并行計算奠定了理論基礎(chǔ)。如今,并行化是加密世界的一個關(guān)鍵主題,區(qū)塊鏈正試圖擴展處理、效率和吞吐量的邊界。

并行計算使許多計算或進程能夠同時執(zhí)行,而不是必須按順序或一個接一個地執(zhí)行計算。并行計算指的是將較大的問題分解成多個較小的獨立部分,這些部分可以由多個通過共享內(nèi)存進行通信的處理器來執(zhí)行。并行系統(tǒng)具有許多優(yōu)點,例如提高效率和速度、可擴展性、改進可靠性和容錯性、優(yōu)化資源利用率以及處理超大數(shù)據(jù)集的能力。

然而,認識到并行化的效力取決于底層體系結(jié)構(gòu)和實現(xiàn)的細節(jié)是至關(guān)重要的。區(qū)塊鏈的兩個核心瓶頸是加密功能(哈希函數(shù)、簽名、橢圓曲線等)和內(nèi)存/狀態(tài)訪問。對于區(qū)塊鏈來說,設(shè)計高效并行系統(tǒng)的關(guān)鍵組件之一在于狀態(tài)訪問的細微差別。狀態(tài)訪問是指交易讀取和寫入?yún)^(qū)塊鏈狀態(tài)的能力,包括存儲、智能合約和賬戶余額。為了使并行區(qū)塊鏈有效且具有高性能,必須優(yōu)化狀態(tài)訪問。

目前在優(yōu)化并行化區(qū)塊鏈的狀態(tài)訪問方面有兩個思想流派:確定性并行和樂觀并行。確定性并行要求代碼明確地預先聲明區(qū)塊鏈狀態(tài)的哪些部分將被訪問和修改。這讓系統(tǒng)可以事先確定哪些交易是可以并行處理的,而不會發(fā)生沖突。確定性并行支持可預測性和高效率(特別是在大部分獨立交易的情況下)。然而,它確實給開發(fā)人員帶來了更多的復雜性。

樂觀并行不需要代碼預先聲明其狀態(tài)訪問就可并行處理交易,就好像不會發(fā)生沖突一樣。如果出現(xiàn)沖突,樂觀并行將重新運行、重新處理或串行運行沖突交易。雖然樂觀并行化為開發(fā)人員提供了更大的靈活性,但沖突需要重新執(zhí)行,因此當事務(wù)不沖突時,這種方法是最有效的。至于哪一種方法更好,還沒有正確答案。它們只是實現(xiàn)并行化的兩種不同的可行方法。

下面我們先來探索非加密并行系統(tǒng)相關(guān)的一些基礎(chǔ)知識,然后再來看區(qū)塊鏈并行執(zhí)行的設(shè)計空間,我們將重點關(guān)注三個核心領(lǐng)域:加密并行系統(tǒng)概述、內(nèi)存和狀態(tài)訪問方法以及并行設(shè)計機會。

2、非加密并行系統(tǒng)

通過我們剛剛了解到的關(guān)于并行計算的功能和并行系統(tǒng)的優(yōu)勢,現(xiàn)在就很容易理解為什么并行計算的采用在最近幾年開始流行起來。而且在過去的幾十年里,并行計算就已呈現(xiàn)日益流行之勢并實現(xiàn)了許多突破。

醫(yī)學影像:并行處理從根本上改變了醫(yī)學影像,帶來各種影像模式(如MRI、CT、X射線和光學斷層掃描)的速度和分辨率的顯著提高。英偉達處在這些進步的最前沿,通過其并行處理工具包為放射科醫(yī)生提供更加強大的人工智能功能,使影像系統(tǒng)能夠更有效地處理更多的數(shù)據(jù)和計算負載。

天文學:一些新的天文現(xiàn)象,比如對黑洞的理解,只有使用并行超級計算機才能實現(xiàn)。

Unity游戲引擎:Unity引擎使用GPU能力(專為大規(guī)模圖形工作負載構(gòu)建)以幫助提高性能和速度。該引擎配備了多線程和并行處理功能,帶來無縫的游戲體驗,能夠創(chuàng)建復雜逼真的游戲環(huán)境。

讓我們來看看三個已部署并行執(zhí)行環(huán)境的區(qū)塊鏈。首先,我們來看Solana,然后是兩個基于EVM的鏈——Monad和Sei。

3、并行設(shè)計概述

(1)Solana

從高層來看,Solan的設(shè)計理念是區(qū)塊鏈創(chuàng)新應隨硬件進步而發(fā)展。隨著時間的推移,硬件根據(jù)摩爾定律不斷改進,Solana的設(shè)計將受益于性能和可擴展性的提高。Solana聯(lián)合創(chuàng)始人Anatoly Yakovenko在五年多以前就設(shè)計了Solana的最初并行架構(gòu),今天,并行性作為區(qū)塊鏈設(shè)計原則正迅速傳播開來。

Solana使用確定性并行方式,這來自于Anatoly過去處理嵌入式系統(tǒng)的經(jīng)驗,在嵌入式系統(tǒng)中,通常會預先聲明所有狀態(tài)。這使CPU能夠知道所有的依賴關(guān)系,從而使它能夠預先載入內(nèi)存的必要部分。結(jié)果就是優(yōu)化了系統(tǒng)執(zhí)行,但是再一次,它要求開發(fā)人員預先做好額外的工作。在Solana上,程序的所有內(nèi)存依賴都是必需的,并在構(gòu)建的交易(即訪問列表)中進行聲明,從而使運行時(runtime)能夠高效地調(diào)度及并行執(zhí)行多個交易。

Solana架構(gòu)的下一個主要組件是Sealevel VM,它是Solana的并行智能合約運行時。Sealevel原生支持基于驗證者的內(nèi)核數(shù)量并行處理多個合約和交易。區(qū)塊鏈中的驗證者是負責驗證交易、提議新區(qū)塊以及維護區(qū)塊鏈完整性和安全性的網(wǎng)絡(luò)參與者。由于交易預先聲明哪些帳戶需要讀寫鎖定,因此Solana調(diào)度器能夠確定哪些交易可以并行執(zhí)行。正因如此,當涉及到驗證時,“區(qū)塊生產(chǎn)者”或Leader就能夠?qū)?shù)千個待處理交易進行排序,并且并行調(diào)度非重疊交易。

Solana的最后一個設(shè)計元素是“pipelining”。當需要以一系列步驟處理數(shù)據(jù),并且每個步驟由不同的硬件負責時,就會觸發(fā)pipelining。這里的關(guān)鍵想法是獲取需要串行運行的數(shù)據(jù),并使用pipelining將其并行化。這些pipelines可以并行運行,并且每個pipeline階段可以處理不同的交易包。

這些優(yōu)化允許Sealevel同時組織和執(zhí)行獨立的交易,利用硬件的能力,一次使用一個程序處理多個數(shù)據(jù)點。Sealevel按programID對指令進行排序,并在所有相關(guān)帳戶上并行執(zhí)行相同指令。

通過這些創(chuàng)新,我們可以看到Solana被有意設(shè)計為支持并行化。

(2)Sei

Sei是一個通用的、開源L1區(qū)塊鏈,專用于數(shù)字資產(chǎn)交易。Sei V2采用樂觀并行方法,因此,它對開發(fā)人員來說更加友好。在樂觀并行模式下,智能合約可以更加無縫地并行執(zhí)行,不需要開發(fā)人員預先聲明它們的資源。這意味著鏈樂觀地并行運行所有交易。盡管如此,當發(fā)生沖突時(即多個交易訪問相同的狀態(tài)),區(qū)塊鏈將跟蹤每個沖突交易所影響的特定存儲組件。

Sei區(qū)塊鏈使用“樂觀并發(fā)控制(OCC)”機制來執(zhí)行交易。并發(fā)交易處理發(fā)生在有多個交易同時在系統(tǒng)中活動時。這種交易方式有兩個階段:執(zhí)行和驗證。

在執(zhí)行階段,交易被樂觀地處理,將所有讀/寫臨時存儲在特定交易存儲中。此后,每個交易都將進入驗證階段,在驗證階段,臨時存儲操作中的信息將根據(jù)先前交易所做的狀態(tài)更改進行檢查。如果交易是獨立的,則交易將并行運行。如果一個交易讀取的數(shù)據(jù)被另一個交易修改過,將產(chǎn)生沖突。Sei的并行系統(tǒng)將通過比較交易的讀取數(shù)據(jù)集與多版本存儲中的最新狀態(tài)變化(這些變化是按交易順序索引的)來識別每個沖突。Sei將在出現(xiàn)沖突的位置重新執(zhí)行并重新驗證實例。這是一個迭代過程,涉及到執(zhí)行、驗證和重新運行,才能修復沖突。下圖說明了當出現(xiàn)沖突時Sei是如何處理交易的。

d2atBVzTCHuOFb4CDlrdmfeySpi8f4XwVk1exrdJ.jpeg

Sei的實現(xiàn)為EVM開發(fā)人員提供了更低的gas費和更廣闊的設(shè)計空間。一直以來,EVM環(huán)境被限制為小于50 TPS,這迫使開發(fā)人員創(chuàng)建遵循反模式的應用程序。Sei V2讓開發(fā)人員能夠接近通常要求高性能和低費用的領(lǐng)域,如DeFi、DePIN和游戲。

(3)Monad

Monad正在建設(shè)一個具有完全字節(jié)碼兼容性的并行EVM L1。Monad的獨特之處不僅在于它的并行引擎,還在于他們在底層構(gòu)建的優(yōu)化引擎。Monad采用了一種獨特的整體設(shè)計方法,結(jié)合了幾個關(guān)鍵特性,如pipelining、異步I/O、共識執(zhí)行分離,以及MonadDB。

Monad設(shè)計的一個關(guān)鍵創(chuàng)新是帶有輕微偏移量的pipelining。偏移量允許通過同時運行多個實例來并行化更多進程。因此,pipelining被用來優(yōu)化許多功能,如狀態(tài)訪問pipeling、交易執(zhí)行pipelining、共識和執(zhí)行內(nèi)部pipelining以及共識機制自身內(nèi)的pipelining。

接下來,我們將具體來看Monad的并行化部分。在Monad中,交易在區(qū)塊內(nèi)是線性排序的,但目標是通過利用并行執(zhí)行更快地達到最終狀態(tài)。Monad的執(zhí)行引擎設(shè)計采用了樂觀并行算法。Monad的引擎同時處理交易,然后執(zhí)行分析,以確保如果交易被一個接一個地執(zhí)行,也將取得相同的結(jié)果。如果存在任何沖突,則需要重新執(zhí)行。這里的并行執(zhí)行是一個相對簡單的算法,但將它與Monad的其他關(guān)鍵創(chuàng)新結(jié)合起來,就讓這種方法變得新穎了。這里需要注意的一點是,即使發(fā)生重新執(zhí)行,通常也很便宜,因為無效交易所需的輸入幾乎一直保留在緩存中,所以這將是一個簡單的緩存查找。重新執(zhí)行被確保一定會成功,因為你已經(jīng)執(zhí)行了區(qū)塊中之前的交易。

Monad還通過分離執(zhí)行和共識(類似于Solana和Sei)以及延遲執(zhí)行來提高性能。其中的想法是,如果你放寬執(zhí)行條件,以便在達成共識之前完成執(zhí)行,則可以并行運行執(zhí)行和共識,從而為兩者增加額外的時間。當然,Monad使用一種確定性算法來處理這種情況,以確保其中的一個不會跑得太遠而失控。

4、狀態(tài)訪問和內(nèi)存的獨特方法

正如我在本文開頭提到的,狀態(tài)訪問是區(qū)塊鏈的典型性能瓶頸之一。狀態(tài)訪問和內(nèi)存的設(shè)計選擇最終可以決定并行系統(tǒng)的特定實現(xiàn)是否會在實踐中提高性能。下面我們來具體了解并比較Solana、Sei和Monad采用的不同方法。

(1)Solana狀態(tài)訪問:AccountsDB / Cloudbreak

Solana利用水平擴展來跨多個SSD設(shè)備分發(fā)和管理狀態(tài)數(shù)據(jù)。如今,許多區(qū)塊鏈使用通用數(shù)據(jù)庫(即LevelDB),這在處理大量并發(fā)讀寫狀態(tài)數(shù)據(jù)方面存在限制。為了避免這種情況,Solana利用Cloudbreak構(gòu)建了自己的自定義帳戶數(shù)據(jù)庫。

Cloudbreak是為跨I/O操作的并行訪問而設(shè)計的,而非單純依賴于RAM,這本身就很快。I/O操作(輸入/輸出)是指從外部源(如磁盤、網(wǎng)絡(luò)或外圍設(shè)備)讀取數(shù)據(jù)或向其寫入數(shù)據(jù)的操作。最初,Cloudbreak使用RAM內(nèi)部索引將公鑰映射到持有余額和數(shù)據(jù)的帳戶。然而,在撰寫本文時,V1.9索引已經(jīng)從RAM移到了SSD上。這種轉(zhuǎn)變允許Cloudbreak在其隊列中同時處理32個(I/O)操作,從而增強了跨多個SSD的吞吐量。因此,可以高效地訪問區(qū)塊鏈數(shù)據(jù),例如帳戶和交易,就像在使用內(nèi)存映射文件的RAM中一樣。下圖表明了內(nèi)存結(jié)構(gòu)。雖然RAM更快,但它的容量比SSD小,而且通常更昂貴:

AEk8p7nm8i76jAXhmBBHOxpkqMyJCkf5Eu3sXCV8.jpeg

通過橫向擴展和跨多個設(shè)備分發(fā)狀態(tài)數(shù)據(jù),Cloudbreak降低了延遲,提高了Solana生態(tài)系統(tǒng)的效率、去中心化程度和網(wǎng)絡(luò)彈性。

(2)Sei狀態(tài)訪問:SeiDB

Sei重新設(shè)計了它的存儲——SeiDB——以解決以下幾個問題:寫入放大(維護數(shù)據(jù)結(jié)構(gòu)需要多少元數(shù)據(jù),越小越好)、狀態(tài)膨脹、操作緩慢以及性能隨著時間的推移而下降。新的再設(shè)計現(xiàn)分為兩個組件:狀態(tài)存儲和狀態(tài)承諾。記錄和驗證對數(shù)據(jù)的任何更改由狀態(tài)承諾處理,而在任何時候記錄所有數(shù)據(jù)的數(shù)據(jù)庫由狀態(tài)存儲(SS)處理。

在Sei V2中,狀態(tài)承諾使用內(nèi)存映射IAVL樹架構(gòu)(MemIAVL)。內(nèi)存映射IAVL樹存儲較少元數(shù)據(jù),這減少了狀態(tài)存儲和狀態(tài)同步時間,并使運行完整節(jié)點變得更加容易。內(nèi)存映射IAVL樹表示為磁盤上的三個文件(kv文件、branch文件和leaf文件);因此,需要跟蹤的元數(shù)據(jù)更少,這有助于將狀態(tài)存儲減少50%以上。新的MemIAVL結(jié)構(gòu)有助于減少寫入放大因子,因為它減少了維護數(shù)據(jù)結(jié)構(gòu)所需的元數(shù)據(jù)。

更新后的SeiDB允許對狀態(tài)存儲層提供靈活的數(shù)據(jù)庫后端支持。Sei認為,不同的節(jié)點運營商的需求和存儲需求不同。因此,SS設(shè)計是為了適應不同的后端需求,為運營商提供自由度和靈活性,如PebbleDB、RocksDB、SQLite等。

(3)Monad狀態(tài)訪問:MonadDB

Monad的狀態(tài)訪問有一些重要的細微差別。首先,大多數(shù)以太坊客戶端利用兩種類型的數(shù)據(jù)庫:B-Tree數(shù)據(jù)庫(即LMDB)或日志結(jié)構(gòu)合并樹(LSM)數(shù)據(jù)庫(即RocksDB、LevelDB)。這兩種都是通用的數(shù)據(jù)結(jié)構(gòu),不是為區(qū)塊鏈專門設(shè)計的。此外,這些數(shù)據(jù)庫沒有利用Linux技術(shù)的最新進展,特別是在異步操作和I/O優(yōu)化方面。最后,以太坊本身使用MPT樹管理狀態(tài),MPT樹專用于加密,驗證和證明。主要的問題是,客戶端必須將這個特定的MPT樹集成到更通用的數(shù)據(jù)庫(即B-Tree / LSM)中,這會帶來嚴重的性能缺陷,例如過多的磁盤訪問。

所有這些都有助于為Monad決定創(chuàng)建自定義MonadDB數(shù)據(jù)庫奠定基礎(chǔ),MonadDB數(shù)據(jù)庫專用于更高效地處理區(qū)塊鏈數(shù)據(jù)和狀態(tài)訪問。MonadDB的一些關(guān)鍵特性包括并行訪問數(shù)據(jù)庫、針對Merkle Trie數(shù)據(jù)優(yōu)化的自定義數(shù)據(jù)庫、優(yōu)于標準RAM使用的高效狀態(tài)訪問、去中心化特性和可擴展性。

MonadDB專為區(qū)塊鏈設(shè)計,使其比使用通用數(shù)據(jù)庫的性能更高。自定義MonadDB專用于高效管理Merkle Trie類型數(shù)據(jù),支持同時并行訪問多個Trie節(jié)點。雖然MonadDB與上述一些通用數(shù)據(jù)庫的單次讀取成本是相同的,但MonadDB的關(guān)鍵特性是它可以并行運行多個讀取,從而帶來巨大提速。

MonadDB支持對并行訪問數(shù)據(jù)庫的同步狀態(tài)訪問。因為Monad是從頭開始構(gòu)建這個數(shù)據(jù)庫的,所以它能夠利用最新的Linux內(nèi)核技術(shù)和SSD的全部功能來實現(xiàn)異步I/O。使用異步I/O,如果一個交易需要從磁盤讀取狀態(tài),這不應該為待完成操作帶來阻力。相反,它應該立刻開始讀取并同時繼續(xù)處理其他交易。這就是異步I/O顯著加快MonadDB處理速度的做法。Monad能夠通過優(yōu)化SSD使用以及減少對過多RAM的依賴,收獲更好的硬件性能。這具有與去中心化和可擴展性對齊的額外好處。

phvyCfH404MQnL3HC7t8POehZ7BSBFabXQtOpZ7J.jpeg

5、結(jié)論

總之,通過Solana、Sei和Monad的視角探索區(qū)塊鏈中的并行化發(fā)展,可以全面了解不同架構(gòu)和方法是如何提高性能和可擴展性的。Solana的確定性并行注重預先聲明狀態(tài)訪問,提供了可預測性和效率,使其成為高吞吐量需求的應用程序的有力選擇。另一方面,Sei的樂觀并行方法優(yōu)先考慮了開發(fā)人員的靈活性,非常適合交易沖突不頻繁的環(huán)境。憑借其獨特的樂觀并行方式和自定義MonadDB,Monad提供了一個創(chuàng)新解決方案,利用最新的技術(shù)進步來優(yōu)化狀態(tài)訪問和性能。

每個區(qū)塊鏈都提供了一種獨特的方法來解決并行化挑戰(zhàn),并有一套自己的利弊權(quán)衡。Solana的設(shè)計旨在最大限度提高硬件利用率和吞吐量,而Sei則專注于簡化開發(fā)過程,Monad則把重心放在了為區(qū)塊鏈數(shù)據(jù)提供量身定制的數(shù)據(jù)庫解決方案。這些差異凸顯了區(qū)塊鏈生態(tài)系統(tǒng)的多樣性,以及根據(jù)應用程序的特定需求選擇合適平臺的重要性。

隨著區(qū)塊鏈領(lǐng)域的不斷發(fā)展,Solana、Monad和Sei所展現(xiàn)出的并行化技術(shù)的進步無疑將激發(fā)進一步的創(chuàng)新。邁向更高效、更可擴展且對開發(fā)人員更加友好的區(qū)塊鏈的旅程正在進行中,從這些平臺中吸取的經(jīng)驗將對塑造區(qū)塊鏈技術(shù)的未來發(fā)揮至關(guān)重要的作用。

熱門
主站蜘蛛池模板: 国产精品成人va在线播放| 美女内射毛片在线看免费人动物| 天堂…中文在线最新版在线| 丰满多毛的大隂户毛茸茸| 欧美xxxxx在线观看| 亚洲综合精品香蕉久久网| 精品无码成人片一区二区98| 国产人与动zozo| 久久久久久久久人体| 国产精品第二页在线播放| porn在线精品视频| 成人免费草草视频| 久久狠狠色噜噜狠狠狠狠97| 欧美一级三级在线观看| 国产一区二区精品久久凹凸| 色偷偷女男人的天堂亚洲网| 国产裸模视频免费区无码| tube美国xxxx69| 成人免费看www网址入口| 久久久久亚洲av无码专区蜜芽 | 国产精品午夜无码AV天美传媒 | 调教她的尿孔h导尿| 国产日韩一区二区三区在线观看 | 美女巨胸喷奶水视频www免费| 国产人成精品免费视频| 欧美大黑bbb| 国产精品亚洲精品日韩电影| 91香蕉视频污污| 日本三级生活片| 久热香蕉精品视频在线播放| 精品一区二区三区在线观看| 国产AV国片精品有毛| 边吃奶边摸下我好爽免费视频| 国产成人欧美视频在线| chinese激烈高潮HD| 岛国大片在线免费观看| 中文字幕国产在线| 极品丝袜老师h系列全文阅读 | 国产**一级毛片视频直播| 国产精品久久福利网站| 6580岁老太婆|