日韩欧美国产麻豆_国产精品成人网站_亚洲精品一区二区三区中文字幕_欧美日韩高清在线一区_亚洲免费福利_97超级碰碰人国产在线观看_日本福利在线观看_精品国产乱码久久久久久1区2区

以Reddio為例,闡述并行EVM的優(yōu)化之路

ceshi閱讀:2025-08-07 06:33:52

眾所周知,EVM的定位是以太坊的“執(zhí)行引擎”和“智能合約執(zhí)行環(huán)境”,可以說是以太坊最重要的核心組件之一。公鏈是一個包含成千上萬節(jié)點的開放性網(wǎng)絡(luò),不同節(jié)點的硬件參數(shù)相差甚大,若想讓智能合約在多個節(jié)點上都跑出相同結(jié)果,滿足“一致性”,要設(shè)法在不同設(shè)備上都搭建出相同的環(huán)境,而虛擬機可以實現(xiàn)這個效果。

以太坊的虛擬機EVM能在不同操作系統(tǒng)(如Windows、Linux、macOS)和設(shè)備上以相同的方式來運行智能合約,這種跨平臺兼容性確保每個節(jié)點運行合約后,都能得到一致的結(jié)果。最典型的例子就是Java虛擬機JVM。

我們平時在區(qū)塊瀏覽器里看到的智能合約,都是先被編譯為EVM字節(jié)碼,然后才存儲到鏈上的。EVM在執(zhí)行合約時,直接按順序讀取這些字節(jié)碼,字節(jié)碼對應(yīng)的每條指令(opCode)都有相應(yīng)的Gas成本。EVM會跟蹤每條指令在執(zhí)行過程中的Gas消耗,消耗量則取決于操作的復(fù)雜度。

此外,作為以太坊的核心執(zhí)行引擎,EVM采用串行執(zhí)行的方式處理交易,所有交易在單一隊列里排隊并按照確定順序先后執(zhí)行。之所以不用并行化的方式,是因為區(qū)塊鏈要嚴格滿足一致性,一批交易在所有節(jié)點中都要按相同次序來處理,如果將交易處理并行化,難以**的預(yù)判交易次序,除非引入對應(yīng)的調(diào)度算法,但這會比較復(fù)雜。

2014~15年的以太坊創(chuàng)始團隊出于時間緊迫,選用了串行執(zhí)行的方式。因為它設(shè)計簡單且易于維護。然而隨著區(qū)塊鏈技術(shù)的迭代和用戶群體越來越大,區(qū)塊鏈對TPS和吞吐量的要求越來越高,在Rollup技術(shù)出現(xiàn)并成熟落地后,EVM串行執(zhí)行帶來的性能瓶頸在以太坊二層身上已經(jīng)**無疑。

Sequencer作為Layer2的關(guān)鍵組件,以單個服務(wù)器的形式承接所有運算任務(wù),如果與Sequencer配合的外部模塊的效率都足夠高,則**的瓶頸將取決于Sequencer本身的效率,此時串行執(zhí)行將成為巨大的阻礙。

opBNB團隊曾通過對DA層和數(shù)據(jù)讀寫模塊進行極致優(yōu)化,Sequencer每秒最多可執(zhí)行約2000多筆ERC-20轉(zhuǎn)賬。這個數(shù)字看起來很高,但如果要處理的交易比ERC-20轉(zhuǎn)賬復(fù)雜很多,TPS數(shù)值必然會大打折扣。所以說,交易處理的并行化將是未來的必然趨勢。

下面我們將從更具體的細節(jié)入手,為大家詳細解釋傳統(tǒng)EVM的局限性,以及并行EVM的優(yōu)勢。

以太坊交易執(zhí)行的兩大核心組件

在代碼模塊層面,除EVM外,go-ethereum中與交易執(zhí)行相關(guān)的另一核心組件是stateDB,用于管理以太坊中的賬戶狀態(tài)和數(shù)據(jù)存儲。以太坊采用名為Merkle Patricia Trie的樹狀結(jié)構(gòu)來充當(dāng)數(shù)據(jù)庫索引(目錄),EVM每一次交易執(zhí)行都會變更stateDB中存放的某些數(shù)據(jù),這些變更**會反映在Merkle Patricia Trie(后面簡稱全局狀態(tài)樹)中。

具體來說,stateDB負責(zé)維護所有以太坊賬戶的狀態(tài),包括EOA賬戶和合約賬戶,其存儲的數(shù)據(jù)包括賬戶余額、智能合約代碼等。在交易執(zhí)行過程中,stateDB會對相應(yīng)賬戶的數(shù)據(jù)進行讀寫。而在交易執(zhí)行結(jié)束后,stateDB需要將新的狀態(tài)提交到底層數(shù)據(jù)庫(如LevelDB)中,進行**化處理。

總的來說,EVM負責(zé)解釋和執(zhí)行智能合約指令,根據(jù)計算結(jié)果變更區(qū)塊鏈上的狀態(tài),而stateDB則充當(dāng)全局狀態(tài)存儲,管理所有賬戶和合約的狀態(tài)變化。兩者協(xié)作構(gòu)建了以太坊的交易執(zhí)行環(huán)境。

串行執(zhí)行的具體過程

以太坊的交易類型分兩種,即EOA轉(zhuǎn)賬和合約交易。EOA轉(zhuǎn)賬是最簡單的交易類型,即普通賬戶之間的ETH轉(zhuǎn)賬。這種交易不涉及合約調(diào)用,處理速度非常快。由于操作簡單,EOA轉(zhuǎn)賬收取的gas費極低。

與簡單的EOA轉(zhuǎn)賬不同,合約交易會涉及到智能合約的調(diào)用與執(zhí)行。EVM在處理合約交易時,要逐條解釋和執(zhí)行智能合約中的字節(jié)碼指令,合約的邏輯越復(fù)雜,涉及的指令越多,消耗的資源越多。

舉例來說,ERC-20轉(zhuǎn)賬的處理時間大約是EOA轉(zhuǎn)賬的2倍,而對于更復(fù)雜的智能合約,如Uniswap上的交易操作,耗時更長,甚至可以比EOA轉(zhuǎn)賬慢十幾倍。這是因為DeFi協(xié)議需要在交易時處理流動性池、價格計算、**swap等復(fù)雜邏輯,需要進行非常復(fù)雜的計算。

那么在串行執(zhí)行模式下, EVM與stateDB這兩個組件是如何協(xié)作處理交易的呢?

在以太坊的設(shè)計中,一個區(qū)塊內(nèi)的交易會按先后次序被一筆筆處理,每筆交易(tx)都會有一個獨立實例,用于執(zhí)行該交易的具體操作。盡管每筆交易會使用不同的EVM實例,但所有交易要共用同一個狀態(tài)數(shù)據(jù)庫,也就是stateDB。

在交易執(zhí)行過程中,EVM需要不斷與stateDB交互,從stateDB中讀取相關(guān)的數(shù)據(jù),并將變更后的數(shù)據(jù)寫回stateDB。

我們從代碼角度大致看下EVM和stateDB是如何協(xié)作執(zhí)行交易的:

1. processBlock()函數(shù)會調(diào)用Process()函數(shù)處理一個區(qū)塊中包含的交易;

2. Process()函數(shù)中定義了一個for循環(huán),可以看到交易是被一筆一筆執(zhí)行的;

3. 在所有交易處理完畢后,processBlock()函數(shù)調(diào)用writeBlockWithState()函數(shù),再調(diào)用statedb.Commit()函數(shù),提交狀態(tài)變更結(jié)果。

當(dāng)一個區(qū)塊中所有交易都被執(zhí)行完畢后,stateDB中的數(shù)據(jù)會被Commit到前面提到的全局狀態(tài)樹(Merkle Patricia Trie),并生成新的狀態(tài)根(stateRoot)。狀態(tài)根是每個區(qū)塊中的重要參數(shù),它記錄了區(qū)塊執(zhí)行后新的全局狀態(tài)的“壓縮結(jié)果”。

我們不難理解,EVM的串行執(zhí)行模式瓶頸很明顯:交易必須按順序排隊執(zhí)行,如果出現(xiàn)耗時很久的智能合約交易,在其處理完畢前,其他交易只能等待,這顯然無法充分利用CPU等硬件資源,效率會受到較大限制。

EVM的多線程并行優(yōu)化方案

如果用生活中的例子來對比串行執(zhí)行與并行執(zhí)行,前者類比為只有一個柜臺的銀行,并行EVM則類比為有多個柜臺的銀行。在并行模式下,可以開啟多個線程同時處理多筆交易,效率可以得到幾倍速的提升,但棘手的地方在于狀態(tài)沖突問題。

如果多筆交易都聲明要改寫某個賬戶的數(shù)據(jù),當(dāng)它們被同時處理時,就會產(chǎn)生沖突,比如某NFT僅能鑄造1個,而交易1和交易2都聲明要鑄造該NFT,如果他們的請求都得到滿足,顯然會出現(xiàn)錯誤,應(yīng)對這類情況需要進行協(xié)調(diào)處理。實際操作中的狀態(tài)沖突往往比我們提到的更頻發(fā),所以如果要將交易處理并行化,就必須要有應(yīng)對狀態(tài)沖突的措施。

Reddio對EVM的并行優(yōu)化原理

我們可以看一下ZKRollup項目Reddio對EVM的并行優(yōu)化思路。Reddio的思路是為每個線程都分配一筆交易,并在每個線程中提供一個臨時的狀態(tài)數(shù)據(jù)庫,稱為pending-stateDB。具體細節(jié)如下:

1. 多線程并行執(zhí)行交易:Reddio設(shè)置多個線程同時處理不同的交易,線程之間互不干擾。這可以幾倍速提升交易處理速度。

2. 為每個線程分配臨時狀態(tài)數(shù)據(jù)庫:Reddio為每個線程都分配一個獨立的臨時狀態(tài)數(shù)據(jù)庫(pending-stateDB)。各個線程在執(zhí)行交易時,不會直接修改全局的stateDB,而是將狀態(tài)變化結(jié)果暫時記錄在pending-stateDB中。

3. 同步狀態(tài)變更:在一個區(qū)塊內(nèi)的所有交易都執(zhí)行完畢后,EVM會將每個pending-stateDB中記錄的狀態(tài)變更結(jié)果依次同步到全局stateDB中。如果不同交易在執(zhí)行過程中沒有發(fā)生狀態(tài)沖突,就可以將pending-stateDB中的記錄順利合并到全局stateDB中。

Reddio對讀寫操作的處理方式進行了優(yōu)化,以確保交易能夠正確訪問狀態(tài)數(shù)據(jù)并避免沖突。

·讀操作:當(dāng)一個交易需要讀取狀態(tài)時,EVM會首先檢查Pending-state的ReadSet。如果ReadSet顯示存在所需數(shù)據(jù),EVM就直接從pending-stateDB中讀數(shù)據(jù)。如果ReadSet中沒有找到對應(yīng)的key-value(鍵值對),就從上一個區(qū)塊對應(yīng)的全局stateDB中讀取歷史狀態(tài)數(shù)據(jù)。

·

寫操作:所有寫操作(即對狀態(tài)的修改)都不會直接寫入全局stateDB,而是先記錄到Pending-state 的WriteSet中。待交易執(zhí)行完成后,通過沖突檢測再嘗試將狀態(tài)變更結(jié)果合并到全局stateDB中。

并行執(zhí)行的關(guān)鍵問題在于狀態(tài)沖突,當(dāng)多筆交易嘗試讀寫相同賬戶的狀態(tài)時,該問題尤為顯著。為此Reddio引入了沖突檢測機制:

· 沖突檢測:在交易執(zhí)行過程中,EVM會監(jiān)測不同交易的ReadSet和WriteSet。如果發(fā)現(xiàn)多個交易嘗試讀寫相同的狀態(tài)項,則視為發(fā)生沖突。

· 沖突處理:當(dāng)檢測到?jīng)_突時,沖突交易將被標記為需要重新執(zhí)行。

在所有交易都執(zhí)行完成后,多個pending-stateDB中的變更記錄會被合并到全局stateDB中。如果合并成功,EVM會將**狀態(tài)提交到全局狀態(tài)樹中,并生成新的狀態(tài)根。

多線程并行優(yōu)化對性能的提升是顯而易見的,特別是應(yīng)對復(fù)雜智能合約交易時。

根據(jù)并行EVM的研究顯示,在低沖突工作負載(交易池中較少矛盾的或者占用相同資源的交易)中,基準測試的TPS相比傳統(tǒng)的串行執(zhí)行,提升了3~5倍左右。在高沖突工作負載中,理論上如果將所有優(yōu)化手段都用上甚至可以達到60倍。

總結(jié)

Reddio的EVM多線程并行優(yōu)化方案,通過為每個交易分配臨時狀態(tài)庫,并在不同線程中并行執(zhí)行交易,顯著提高了EVM的交易處理能力。通過優(yōu)化讀寫操作和引入沖突檢測機制,EVM系公鏈能夠在保證狀態(tài)一致性的前提下,實現(xiàn)交易的大規(guī)模并行化,解決了傳統(tǒng)串行執(zhí)行模式帶來的性能瓶頸。這為以太坊Rollup未來的發(fā)展奠定了重要基礎(chǔ)。

后續(xù)我們會進一步深入分析Reddio的實現(xiàn)細節(jié),如如何進一步從優(yōu)化存儲效率提升效率,沖突高發(fā)時的優(yōu)化方案,以及如何借助GPU做優(yōu)化等等內(nèi)容。

本文 軟文網(wǎng) 原創(chuàng),轉(zhuǎn)載保留鏈接!網(wǎng)址:/qkl/2451.html

標簽:
聲明

1.本站遵循行業(yè)規(guī)范,任何轉(zhuǎn)載的稿件都會明確標注作者和來源;2.本站的原創(chuàng)文章,請轉(zhuǎn)載時務(wù)必注明文章作者和來源,不尊重原創(chuàng)的行為我們將追究責(zé)任;3.作者投稿可能會經(jīng)我們編輯修改或補充。

亚洲精品在线观看91| 国产精品久久久网站 | 操人在线观看| 国产成人在线免费视频| 亚洲午夜久久久影院伊人| 国产精品美女久久久久久免费| 亚洲自拍与偷拍| 成人免费毛片高清视频| 强制捆绑调教一区二区| 亚洲精品激情| 欧美福利一区| 亚欧美无遮挡hd高清在线视频| 老司机免费视频久久 | 亚洲精品一区在线观看| 一区二区三区四区中文字幕| 国产精品欧美一区喷水| 久久综合九色综合久久久精品综合| 国产二区国产一区在线观看| 久久成人免费日本黄色| 蜜臀久久99精品久久久久久9| 久久中文欧美| 久久久久九九视频| 亚洲私人影院在线观看| 樱花影视一区二区| 亚洲成人性视频| 亚洲最新av网址| 在线观看免费视频综合| 欧美日韩一区二区三区四区| 欧美日韩在线不卡| 欧美wwwxxxx| 日本视频久久久| 人人做人人澡人人爽欧美| 国产精品对白刺激| 91九色蝌蚪成人| 懂色中文一区二区三区在线视频| 久久国产日韩欧美| 欧美日韩在线免费观看视频| 日韩日韩日韩日韩日韩| 欧美少妇性生活视频| 波多结衣在线观看| 亚洲欧美日韩网站| www.色多多| 欧洲猛交xxxx乱大交3| 久久9999久久免费精品国产| 亚洲一区精品在线观看| 免费a视频在线观看| 免费永久视频| eeuss影院www影院| h视频免费在线观看| 后进极品白嫩翘臀在线播放| 99精品视频在线免费播放| 女优一区二区三区| 国产一区成人| 99久久99久久久精品齐齐| 一区二区高清在线| 久久国产精彩视频| 91免费在线视频网站| 亚洲午夜精品国产| wwwww黄色| 艳妇乳肉豪妇荡乳av| 九色丨porny丨| 日本在线免费播放| 国产一区二区色噜噜| 日韩电影一区| 久久成人免费日本黄色| 欧美猛男gaygay网站| 久久九九国产精品怡红院 | 精品日韩美女的视频高清| 精品日韩一区二区三区| 欧美福利视频网站| 91免费国产网站| 午夜影院福利社| 欧美一区二区三区四| 在线观看成人影院| 国产区在线观看| 中文字幕一区二区三区中文字幕| 久久久久久久久久久妇女| 亚洲一区免费在线观看| 一区二区三区天堂av| 中文字幕精品一区日韩| 国产成人精品一区二区三区在线观看| 久久99久久久| 欧美最猛黑人猛交69| 在线观看免费视频一区二区三区| 性国裸体高清亚洲| 亚洲精品中文字幕乱码| 日本电影亚洲天堂一区| 欧美黑人一区二区三区| 色七七在线观看| 亚洲一区 视频| 91sese| 黄色小说在线播放| 日韩—二三区免费观看av| 亚洲国产综合色| 国产日产久久高清欧美一区| 免费在线激情视频| 国产av无码专区亚洲av毛网站| 久久综合香蕉| 国产亚洲人成a在线v网站| 国产欧美一区二区精品性色超碰 | 在线视频一区观看| www.日韩一区| 欧美日本黄色| 久久综合网导航| 日韩电影一二三区| 国产一区二区欧美日韩| 日韩中文字幕二区| 手机看片日韩| jazzjazz国产精品久久| 成人h动漫精品| 欧美成人精品高清在线播放 | 国产欧美一区| 成人免费黄色大片| 久久久久国产一区二区三区| 国产精品久久成人免费观看| 欧美日韩色视频| 日产乱码一卡二卡三免费| 国产高清视频在线观看| 久久电影院7| 日韩视频国产视频| 久久99国产精品| 69亚洲精品久久久蜜桃小说| 宅男在线观看免费高清网站| 亚洲小说欧美另类婷婷| 色综合天天综合网天天狠天天| 国产精品视频免费在线观看| 青青青在线免费观看| 欧美极品视频| 国产农村妇女精品一区二区| 中文字幕视频一区二区在线有码| 韩国黄色一级大片| 日韩在线视频免费| 欧美91在线| 一区二区三区四区在线免费观看 | 成年人免费高清视频| 蜜桃视频动漫在线播放| 精品影院一区二区久久久| 国内精品久久久久伊人av| 色婷婷成人在线| 免费大秀视频在线播放| 午夜日韩影院| 国产精品入口麻豆九色| 久久99精品久久久水蜜桃| 精品毛片一区二区三区| 国产淫片在线观看| 91天堂素人约啪| 91精品国产亚洲| 中文字幕一区二区人妻电影丶| 男人精品网站一区二区三区| 欧美videossex另类| 日本va欧美va精品发布| 欧美性视频精品| 中文字幕一区二区人妻电影丶| 最色在线观看| 亚洲日韩成人| 97在线观看视频国产| 亚洲欧美日韩偷拍| h片在线观看视频| 国产乱码精品| 国产精品热视频| 国产探花精品一区二区| 欧美裸体视频| 欧美性xxxx极品hd满灌| 色女人综合av| 国产精品成人无码| 成人在线影视| 成人精品视频一区二区三区尤物| 国产精品一区二区三区精品| 国产一级特黄aaa大片| 成人免费网站www网站高清| 国产精品理伦片| 久操网在线观看| 嫩模私拍啪啪| 久久一区二区三区超碰国产精品| 国产精品大陆在线观看| av中文字幕免费| 深夜日韩欧美| 日韩欧美在线字幕| 99九九精品视频| 含羞草www国产在线视频| 欧美日韩午夜剧场| 人妻精油按摩bd高清中文字幕| 成人黄色激情网站| www久久精品| 男女私大尺度视频| 最新在线观看av| 亚洲一二三四区| 超碰中文字幕在线观看| 成年人黄色电影| 久久九九99| 81精品国产乱码久久久久久| 97超碰人人草| eeuss鲁片一区二区三区| 主播福利视频一区| 中文字幕乱码在线观看| 日本欧美日韩| 在线观看日韩精品| 国产123在线| 免费污视频在线| 日韩欧美卡一卡二|