作者:knower,加密KOL;翻譯:金色財經xiaozou

1、MegaETH簡介

本文的主要內容將是我對MegaETH白皮書的一些個人想法,如果力所能及的話,我可能會從此處進一步擴展。不管這篇文章最後變成了什麼樣,我都希望你能從中瞭解到一些新的東西。

 

MegaETH的網站很酷,因爲上面有一隻機械兔,配色很顯眼。在此之前,只有一個Github——有一個網站讓一切變得簡單得多。

我瀏覽了MegaETH Github,得知他們正在開發某種類型的執行層,但我要誠實地說,也許我這個想法是錯的。事實是,我對MegaETH的瞭解還不夠深入,現在他們成了EthCC的熱門話題。

我需要知道一切,確保我看到的技術和那些酷酷的傢伙看到的一樣。

MegaETH白皮書說,他們是一個與EVM兼容的實時區塊鏈,旨在爲加密世界帶來類似web2的性能。他們的目的是通過提供每秒超10萬筆交易、不到一毫秒的區塊時間和一美分的交易費等屬性提升以太坊L2的使用體驗。

他們的白皮書強調了L2數量在增長(在我之前的一篇文章中討論過這一點,儘管這一數字已經攀升到50多個,還有更多L2處於“積極開發”中)以及他們在加密世界中缺乏PMF。以太坊和Solana是最受歡迎的區塊鏈,用戶會被其中一方所吸引,只有在有代幣可挖的情況下才會選擇其他的L2。

我不認爲太多的L2是件壞事,就像我也不認爲這一定是件好事,但我承認我們需要退後一步,來審視爲什麼我們這個行業創造了這麼多的L2。

奧卡姆剃刀會說,風投們很享受這種感覺,知道他們真的有可能打造下一個L2(或L1)王者,並從對這些項目的投資中獲得滿足,但我也認爲,也許許多加密開發者實際上想要更多的L2。雙方可能都是對的,但關於哪一方更加正確的結論並不重要,最好是客觀地看待當前的基礎設施生態系統,利用好我們現有的一切。

 

我們目前可用的L2的性能很高,但還不夠。MegaETH的白皮書說,即使opBNB(相對)較高的100 MGas/s,這也只能意味着每秒650次Uniswap交易——現代或web2基礎設施每秒可以進行100萬次交易。

我們知道,儘管加密優勢來自於去中心化特性和實現無需許可的支付,但仍然相當緩慢。如果像Blizzard這樣的遊戲開發公司想要將Overwatch帶到鏈上,他們是做不到的——我們需要更高的點擊率來提供實時PvP和其他的web2遊戲自然而然提供的功能。

MegaETH對L2困局的解決方案之一是將安全性和抗審查性分別委託給以太坊和EigenDA,將MegaETH轉變爲世上性能最高的L2,而無需任何利弊權衡。

L1通常需要同構節點,這些節點執行相同的任務,沒有專業化的空間。在這種情況下,專業化指的是排序或證明之類的工作。L2繞過了這個問題,允許使用異構節點,將任務分離出來以提高可擴展性或減輕其中的一些負擔。這一點可以從共享排序器(如Astria或Espresso)的日益流行和專業化的zk證明服務(如Succinct或Axiom)的興起中看出。

“創建實時區塊鏈涉及的不僅僅是使用現成的以太坊執行客戶端和增加排序器硬件。例如,我們的性能實驗表明,即使配備了512GB RAM的強大服務器,Reth在最近的以太坊區塊上的實時同步設置中也只能達到大約1000 TPS,相當於大約100 MGas/s。”

MegaETH通過從完整節點抽象交易執行來擴展這種劃分,僅使用一個“主動”排序器來消除典型交易執行中的共識開銷。“大多數完整節點通過p2p網絡從該排序器接收狀態差異,並直接應用差異來更新本地狀態。值得注意的是,它們不會重新執行交易;相反,他們使用證明者(prover)提供的證明間接驗證區塊。”

除了“它很快”或“它很便宜”的評論外,我沒有讀到太多關於MegaETH如何好的分析,所以我將嘗試仔細分析它的架構並將其與其他L2進行比較。

MegaETH使用EigenDA來處理數據可用性,這在當今是相當標準的做法。像Conduit這樣的Rollup-as-a-Service(RaaS:rollup即服務)平臺允許你選擇Celestia、EigenDA甚至Ethereum(如果你願意的話)作爲rollup的數據可用性供應商。兩者之間的區別是相當技術性的,並不完全相關,似乎選擇一個而非另一個的決定更多的是基於共鳴而不是其他任何東西。

排序器排序並最終執行交易,但也負責發佈區塊、見證和狀態差異。在L2上下文中,見證是證明者用來驗證排序器區塊的附加數據。

狀態差異是對區塊鏈狀態的更改,基本上可以是鏈上發生的任何事情——區塊鏈的功能是不斷附加和驗證添加到其狀態的新信息,這些狀態差異的功能是允許完整節點無需重新執行交易而確認交易。

Prover由特殊的硬件組成,用於計算加密證明以驗證區塊內容。他們還允許節點避免重複執行。有零知識證明和欺詐證明(或者是optimistic證明?),但它們之間的區別現在並不重要。

將所有這些放在一起是完整節點網絡的任務,它充當prover、排序器和EigenDA之間的一種聚合器,(希望)使MegaETH魔法成爲現實。

 

MegaETH的設計是基於對EVM的基本誤解。儘管L2經常將其糟糕的性能(吞吐量)歸咎於EVM,但已經發現revm可以達到14000 TPS。如果不是EVM,那是因爲什麼?

2、當前可擴展性問題

導致性能瓶頸的三個主要EVM低效因素是缺乏並行執行、解釋器開銷和高狀態訪問延遲。

由於RAM富足,MegaETH能夠存儲整個區塊鏈的狀態,以太坊的確切RAM爲100GB。這種設置通過消除SSD讀取延遲顯著加速了狀態訪問。

我不太瞭解SSD讀取延遲,但大概是某些操作碼比其他操作碼更密集,如果你在這個問題上投入更多RAM,則可以將其抽象出來。這在規模化情況下還有效嗎?我不確定,但在本文,我會把這當作事實。我仍然懷疑鏈可以同時確定吞吐量、交易成本和延遲,但我正在努力成爲一個積極的學習者。

我應該提到的另一件事是,我不想過於挑剔。我的想法是永遠不要支持一個協議多過另一個協議,甚至在一開始就同等重視它們——我這樣做只是爲了更好地理解,並幫助任何閱讀本文的人同時獲得同樣的理解。

 

你可能對平行EVM這一趨勢很熟悉,但據說有一個問題。儘管在將Block-STM算法移植到EVM方面已經取得了進展,但據說“在生產中可實現的實際提速本質上受到工作負載中可用並行性的限制。”這意味着,即使並行EVM被釋放並最終部署到主網上的EVM鏈上,該技術也受到大多數交易可能不需要並行執行這一基本現實的限制。

如果交易B依賴於交易A的結果,你就不能同時執行兩個交易。如果50%的區塊交易像這種情況一樣是相互依賴的,那麼並行執行並不像所聲稱的那樣有重大改進。雖然這樣說有點過於簡單化(甚至可能有一點不正確),但我認爲卻正中要害。

Revm和原生執行之間的差距是非常明顯的,特別是revm仍然慢1-2 OOMs,不值得作爲獨立的VM環境。另外還發現,目前沒有足夠的計算密集型合約來保證revm的使用。“例如,我們分析了歷史同步期間每個操作碼所花費的時間,發現revm中大約50%的時間花在了“主機”和“系統”操作碼上。”

 

在狀態同步方面,MegaETH發現了更多問題。狀態同步被簡單地描述爲一個使全節點與排序器活動同步的過程,這個任務可以很快地消耗像MegaETH這樣的項目的帶寬。這裏用一個例子來說明這一點:如果目標是每秒同步100,000個ERC20轉移,那麼這將消耗大約152.6 Mbps的帶寬。這152.6 Mbps據說超過了MegaETH的預估(或性能),基本上是引入了一個不可能完成的任務。

這隻考慮了簡單的代幣轉移,如果交易更加複雜,還忽略了更高消耗的可能性。考慮到現實世界中鏈上活動的多樣性,這是一種可能的情況。MegaETH寫道,Uniswap交易修改了8個存儲slot(而ERC20轉移只修改3個存儲slot),使我們的總帶寬消耗達到476.1 Mbps,這是一個更不可行的目標。

實現100k TPS高性能區塊鏈的另一個問題在於解決鏈狀態根的更新,這是一項管理向輕客戶端發送存儲證明的任務。即使使用專業節點,完整節點仍然需要使用網絡的排序器節點來維護狀態根。以上文每秒同步100,000個ERC20轉移的問題爲例,這將帶來每秒更新30萬個密鑰的成本。

以太坊使用MPT(Merkle Patricia Trie:默克爾前綴樹)數據結構來計算每個區塊後的狀態。爲了每秒更新30萬個密鑰,以太坊需要“轉換600萬次非緩存數據庫讀取”,這比當今任何消費級SSD的能力都要大得多。MegaETH寫道,這個估算甚至沒有包括寫操作(或對Uniswap交易等鏈上交易的估算),這使得挑戰更像是一場西西弗斯式的無休止努力,而不是我們大多數人可能更喜歡的爬坡戰。

還有另一個問題,我們到達了區塊gas的極限。區塊鏈的速度實際上受到區塊gas限額的限制,這是一種自我設置的障礙,旨在提高區塊鏈的安全性和可靠性。“設定區塊gas限額的經驗法則是,必須確保在此限制內的任何區塊都可以在區塊時間內被穩妥處理。”白皮書將區塊gas限額描述爲一種“節流機制”,在假設節點滿足最低硬件要求的情況下,確保節點能夠可靠地跟上步伐。

還有人說,區塊gas限額是保守選擇,用來防止發生最壞的情況,這是另一個現代區塊鏈架構重視安全性勝過可擴展性的例子。當你考慮到每天有多少錢在區塊鏈之間轉移,以及如果爲了略微提高可擴展性而損失這些錢,從而導致核冬天時,可擴展性比安全性更重要的想法就會崩塌。

區塊鏈在吸引高質量的消費應用程序方面可能並不出色,但它們在無需許可的點對點支付方面卻異常優秀。沒人想把這搞砸。

然後要提到的是並行EVM速度依賴於工作負載,它們的性能受到最小化區塊鏈功能過度“加速”的“長依賴鏈”的瓶頸制約。解決這個問題的唯一方法是引入多維gas定價(MegaETH指的是Solana的本地收費市場),這仍然難以實施。我不確定是否有一個專門的EIP,或者這樣的EIP如何在EVM上工作,但我想從技術上來說這是一個解決方案。

最後,用戶不會直接與排序器節點交互,並且大多數用戶不會在家中運行完整節點。因此,區塊鏈的實際用戶體驗在很大程度上取決於它的底層基礎設施,如RPC節點和索引器。無論實時區塊鏈運行得有多快,如果RPC節點不能在高峯時間有效地處理大量讀取請求,快速將交易傳播到排序器節點,或者索引器不能足夠快地更新應用程序視圖以跟上鍊的速度,那麼實時區塊鏈運行得多快也就無關緊要了。”

或許贅述過多,但卻非常重要。我們都依賴於Infura、Alchemy、QuickNode等等,它們運行的基礎設施很可能支持着我們的所有交易。對這種依賴最簡單的解釋來自經驗。如果你曾經試圖在某L2空投後的前2-3小時內申領空投,你就會理解RPC管理這種擁塞是多麼困難。

3、結論

說了這麼多,只是想表達像MegaETH這樣的項目需要跨越許多障礙才能到達它想到達的高度。有篇帖子說,他們已經能夠通過使用異構區塊鏈架構和超優化的EVM執行環境實現高性能開發。“如今,MegaETH擁有一個高性能的實時開發網絡,並且正在朝着成爲最快區塊鏈的方向穩步前進,僅受硬件限制。”

MegaETH的Github列出了一部分重大改進,包括但不限於:EVM字節碼→原生代碼編譯器,大內存排序器節點專用執行引擎,以及面向並行EVM的高效併發控制協議。EVM字節碼/原生代碼編譯器現已可用,名爲evmone,雖然我對編碼不夠精通,無法知曉其核心工作機制,但我已經盡了最大努力來弄清楚它。

evmone是EVM的C++部署,它掌握EVMC API,將其轉換爲以太坊客戶端的執行模塊。它提到了一些其他我不理解的特性,比如它的雙解釋器方法(基線和高級),以及intx和ethash庫。總之,evmone爲更快的交易處理(通過更快的智能合約執行)、更大的開發靈活性和更高的可擴展性(假設不同的EVM部署可以每區塊處理更多的交易)提供了機會。

還有一些其他的代碼庫,但其中大多數都是相當標準的,並沒有與MegaETH(reth、geth)特別相關。我認爲我已經基本完成了白皮書研究工作,所以現在我把問題留給任何閱讀本文的人:MegaETH的下一步是什麼?真的有可能實現有效擴展碼?這一切要多久才能實現?

作爲一名區塊鏈用戶,我很高興能夠見證這一切是否可行。我在主網交易費上花了太多錢,現在是時候改變了,但這種改變仍然感覺越來越難實現,而且不太可能很快發生。

儘管本文內容主要圍繞着架構改進和可擴展性,但仍然需要內部rollup共享流動性和跨鏈工具,才能使rollup A的體驗與rollup B一致。我們還沒有做到這一點,但也許到2037年,每個人都會坐下來回憶我們是如何沉迷於“修復”可擴展性問題的。