Rollup浪潮之下,VM還有故事要講

撰文:PSE Trading Analyst @cryptohawk

TL;博士

1.虛擬機是一個軟體仿真的計算機系統,為程式提供執行環境。 它可以類比各種硬體設備,使程式在受控且相容的環境中運行。

2.乙太坊虛擬機(EVM)是一種基於棧的虛擬機,用於執行乙太坊智能合約; zkEVM 在 EVM 等效 / 相容上做了一定的 zk-proof 生成效率優化;

zkVM 則捨棄 EVM 等效 / 相容性,將 zk 友好化的優先順序提高;

privacyzkVM 則是在 zkVM 上疊加了原生隱私特性;

SVM、FuelVM、MoveVM 共性是通過並行執行追求性能極致,但在設計細節上有各自的特點;

ESCVM、BitVM 分別在ETH和 BTC 鏈上進行了一定創新性的計算層實驗,但目前環境下真實落地需求較低。

3.EVM 龐大的用戶生態決定了任何放棄它的區塊鏈網路短期內都難以與其抗衡,因此非 EVM 生態通過轉譯器 / 編譯器 / 位元組碼解釋器甚至 VM 相容層引入 EVM 生態使用者,利用非 EVM 的虛擬機特性構建新的生態敘事,或是一條必備的成功之路。

**1.1 什麼是 VM? **

虛擬機(VM)是虛擬化計算資源的構建塊,它具有與計算機幾乎相同的功能,包括運行應用程式和操作系統。 虛擬機的這個概念並不新穎,該技術被廣泛應用於眾多技術生態系統中。

在區塊鏈的背景下,虛擬機(VM)是一種運行程序的軟體,通常被稱為執行區塊鏈智慧合約的運行時環境。 虛擬機通常通過類比不同的硬體設備來提供一個虛擬的計算機環境。 不同的虛擬機可以類比的硬體設備有所不同,但通常包括 CPU、記憶體、硬碟、網路介面等。 當一筆鏈上交易被提交時,虛擬機負責處理該交易並更新受該交易執行影響的區塊鏈狀態(整個網路的當前全域狀態)。 改變網路狀態的具體規則由 VM 定義。 處理交易時,VM 將智慧合約代碼轉換為節點 / 驗證器硬體可以執行的格式。

VM 當中最為重要的內核便是 LLVM(low-level-virtual-machine),他可以看作是編譯器最重要的內核。 圖中是原始 EVM 的運作方案,智慧合約通過 LLVM IR 的中間代碼進行轉化,轉化成 Bytecode。 這些 Bytecode 會存儲在區塊鏈上,當智慧合約被調用的時候,便會將 Bytecode 轉化成對應的 Opcode,再由 EVM 和節點硬體來執行。

! [Rollup浪潮之下,VM還有故事要講] (https://img-cdn.gateio.im/webp-social/moments-69a80767fe-755f00effa-dd1a6f-69ad2a.webp)

1.2 主流 VM

1.2.1 EVM——區塊鏈 VM 共一石,EVM 獨佔八鬥,其餘共分兩斗

代表專案: Optimism、Arbitrum

作為目前行業內開發者&用戶活躍度最高的區塊鏈生態,乙太坊虛擬機 EVM 是一種基於堆疊的虛擬機,它通過類比 CPU、記憶體、記憶體、記憶體和棧等硬體設備來提供一個虛擬的計算機環境,以此執行智慧合約的指令並存儲智慧合約的狀態和數據。 EVM 的指令集包括各種操作碼 Opcode,例如算術操作、邏輯操作、存儲操作、跳轉操作等。

! [Rollup浪潮之下,VM還有故事要講] (https://img-cdn.gateio.im/webp-social/moments-69a80767fe-11a8b0fe4d-dd1a6f-69ad2a.webp)

EVM 類比的記憶體和記憶體是用於儲存智慧合約的狀態和數據的設備。 EVM 將記憶體和記憶體視為兩個不同的區域,它可以通過讀取和寫入記憶體和記憶體來訪問智慧合約的狀態和數據。

EVM 類比的棧用於儲存指令的操作數和結果。 EVM 的指令集中的大多數指令都是基於堆疊的,它們從棧中讀取操作數並將結果推回棧中。

! [Rollup浪潮之下,VM還有故事要講] (https://img-cdn.gateio.im/webp-social/moments-69a80767fe-1f6aa17e7c-dd1a6f-69ad2a.webp)

EVM 的設計過程,顯然是自下而上的,先敲定了類比的硬體環境(堆棧、記憶體),再根據對應的環境設計了自己的一套彙編指令集(Opcode)與位元組碼(Bytecode)。 乙太坊社區為了 EVM 執行效率設計了兩種編譯型的高級語言——Solidity 和 Vyper。 Solidity 自不必強調,Vyper 是 Vitalik 針對 Solidity 中存在的部分缺陷進行改進後設計的 EVM 高級語言,但是在社區沒有獲得很高的採用度,於是漸漸淡出歷史舞臺。

1.2.2zkEVM——我全都要:相容 EVM 環境 + 支援全域狀態根轉換生成 zk-proof

代表專案:Taiko、Scroll、PolygonzkEVM

由於EVM 在構建時並未考慮 zk-proof 計算,因此它具有對證明電路不友好的特性,特別是在特殊的操作碼、基於堆棧的架構、存儲開銷以及證明成本等方面。 而 zkEVM 是一種以相容 zk-proof 計算的方式執行智慧合約的虛擬機,讓 EVM 的執行過程可以通過 zk-proof/validity-proof 來更高效、低成本地驗證。 相比起 OPRollup 執行層只需照搬 EVM,而構建 EVM 的 ZK 友好化是 ZK Rollup 的額外挑戰。

ZK-rollups 不容易與乙太坊虛擬機(EVM)相容。 在電路中證明通用 EVM 計算比證明簡單計算(如前面描述的代幣傳輸)更困難且更耗費資源。

然而,零知識技術的進步(在新選項卡中打開)重新點燃了人們對將EVM計算包裝在零知識證明中的興趣。 這些努力旨在創建一個零知識 EVM (zkEVM) 實現,可以有效地驗證程式執行的正確性。。

與EVM 一樣,zkEVM 在對某些輸入執行計算后在狀態之間轉換。 不同的是,zkEVM 還創建零知識證明來驗證程序執行中每一步的正確性。 有效性證明可以驗證涉及虛擬機狀態(記憶體、堆疊、存儲)和計算本身的操作的正確性(即,該操作是否調用了正確的操作碼並正確執行了它們? )。

! [Rollup浪潮之下,VM還有故事要講] (https://img-cdn.gateio.im/webp-social/moments-69a80767fe-3ab79ab336-dd1a6f-69ad2a.webp)

想法很美好,現實很骨感,目前 Rollup 在實現 ZK 友好化和 EVM 相容(甚至等效)上難以兩全,即要麼盡可能完整複製乙太坊 L1 執行層,包括哈希、狀態樹、事務樹、預編譯等,使得乙太坊 L1 執行用戶端可以按原樣使用來處理 Rollup 區塊; 要麼捨棄 EVM 相容性,重新創建現有的 Opcode,用於在電路中進行證明 / 驗證,從而允許執行智能合約。

1.2.3zkVM——魚和熊掌不能兼得:zk-proof 效率導向的非 evm 虛擬機

代表專案:Starknet、Zksync、RISC ZERO

zkVM 捨棄了 EVM 相容性,以數據證明與狀態更新為核心目標,在密碼學和高級語言之間找到了一層公約數,來為各類應用提供一個通用的框架。

Starkware 由於在整個 ZK 領域起步較早,技術積累較為充分,擁有一定的技術領先。 他是代表性的 ZK 中心主義的技術架構,圍繞 ZK 構建了 Cairo VM 和 Cairo 的語言。 其缺點在於 Cairo 的學習成本較高。

ZKsync 的框架相容了 EVM 和 ZK 兩方面的特點,將 Solidity 和其自主開發的電路語言 Zinc 做了一個融合,在編譯器內部將兩者在 IR 層面上做了統一。 其優點在於編譯器內核的 LLVM 可以相容多種語言。

RISC Zero 使用RISC-V 架構搭建模擬器允許程式師用Rust、C/C++ 和 Go 等通用語言為 zkVM 編寫程式,這意味著應用邏輯不需要局限於可以用Solidity 表達的內容,允許寫出與鏈無關的代碼。

1.2.4Privacy zkVM——zk 友好 + 原生隱私支持嘗試點燃生態新火花

代表專案:Aleo、Ola、PolygonMiden

區塊鏈作為一個公共帳本系統,所有交易都在鏈上進行,這意味著包含與位址或帳戶相關的資產資訊的狀態變化是公開透明的。 因此,在致力於擴容解決方案之外,一些區塊鏈團隊相信下一個要實現的關鍵功能是隱私。

PrivacyzkVM 除去 zk 友好支援擴容的特性外,由於其本身的程式設計語言原生支援的隱私特性,使其上層應用開發者能開出基於隱私相關的 dapp,這將帶來新的應用場景和宏大敘事,比如徹底解決 MEV 問題、保障用戶數據擁有權等。 當然,PrivacyzkVM 設計上的複雜程度需要更龐大的技術團隊實現落地,或許需要還等待幾年時間才能實現。

1.2.5SVM——退潮之後,仍有餘燼:性能設計已達極致的執行環境

代表專案:Eclipse Mainnet、Nitro、MakerDAOChain(maybe)

SVM,即 Solana 虛擬機,主打高性能執行環境,智能合約主要使用 Rust 語言編寫。 相比單線程計算的 EVM 和 EOSWASM 執行環境,通過要求 Solana 事務描述事務在執行時將讀取或寫入的所有狀態, SVM 實現了非重疊事務和僅讀取相同狀態的事務併發執行。

! [Rollup浪潮之下,VM還有故事要講] (https://img-cdn.gateio.im/webp-social/moments-69a80767fe-5d40116bc0-dd1a6f-69ad2a.webp)

另外,為了實現快速驗證 / 廣播大量交易塊,Solana 網路上的事務驗證過程廣泛使用了 CPU 設計中常見的流水線優化。 以滿足一系列步驟處理的輸入數據流並且每個步驟都有不同的硬體負責的情況。 一個典型比喻是洗衣機和烘乾機,它按順序洗滌 / 烘乾 / 摺疊多批衣物。 清洗必須在乾燥之前進行,乾燥之前必須進行摺疊,但這三個操作中的每一個都由單獨的單元執行。

! [Rollup浪潮之下,VM還有故事要講] (https://img-cdn.gateio.im/webp-social/moments-69a80767fe-91e8c6540c-dd1a6f-69ad2a.webp)

另外,SVM 基於寄存器,並且具有比 EVM 小得多的指令集,使得 SVM 的執行更容易在 ZK 中證明。 對於樂觀 Rollup,基於寄存器的設計可以更輕鬆地設置檢查點。

1.2.6FuelVM——buff 疊滿:UTXO 框架下的並行虛擬機

代表專案:Fuel

Fuel VM 是基於 EVM、Solana、WASM、BTC & Cosmos 技術框架下的改良,跟 EVM 相比有以下特點:

! [Rollup浪潮之下,VM還有故事要講] (https://img-cdn.gateio.im/webp-social/moments-69a80767fe-4f38c20156-dd1a6f-69ad2a.webp)

最為獨特的是,Fuel 不僅類似 SVM 設置訪問清單(access lists),具有非重疊事務並行執行交易的能力,還採用 UTXO 模型,分代幣 UTXO 和合約 UTXO,進一步提高了訪問效率和計算輸送量。

! [Rollup浪潮之下,VM還有故事要講] (https://img-cdn.gateio.im/webp-social/moments-69a80767fe-5352b0259c-dd1a6f-69ad2a.webp)

另外,Fuel VM 通過自己的領域特定語言 Sway 和支援工具鏈 Forc 提供了強大且流暢的開發人員體驗,其開發環境保留了 Solidity 等智慧合約語言的優點,同時採用 Rust 工具生態系統中引入的範例。

未來 Fuel VM 還將實現 Sway 語言升級內容,包括位元組碼大小方面的編譯器優化、Sway 將支援更多後端(EVM 後端已經在開發中)、抽象將更加具有經濟性、更多應用程式將從 Solidity/Vyper 遷移到 Sway、改進編譯器級別的重入分析等。

1.2.7ESCVM——Ordinal/Smartweave 的繼承者:乙太坊之上的計算層

代表專案:Ethions Protocol

ESCVM,即 Ethions Virtual Machine,是 Ethions Protocol 提出的一種智慧合約方案。 Ethions Protocol 本身是以太坊鏈上類似於 BTC Ordinal 的協議,專注於探索不同於智慧合約和 L2 的低成本替代方案。

Ethions 允許使用者以極低的成本繞過智慧合約存儲和執行,通過提前約定的協議規則,應用於 Tx 中的 calldata 進行計算。 簡單來說,只要一筆成功的乙太坊交易,其 calldata 符合規定有效的數據規範&唯一&「to」位址不為 0,即可認為合法創建了一個 Ethion,「from」位址為建立者,「to」位址為擁有者。

設計之初,每個 Ethion 更偏向於 NFT 的形式,比如圖片 NFT,直接將圖片內容通過 Base64 格式寫入 calldata 中:

! [Rollup浪潮之下,VM還有故事要講] (https://img-cdn.gateio.im/webp-social/moments-69a80767fe-6ef41e7812-dd1a6f-69ad2a.webp)

最近比較火的 eths 則是參考了 brc-20 的協議規範進行創建的 Ethion:

! [Rollup浪潮之下,VM還有故事要講] (https://img-cdn.gateio.im/webp-social/moments-69a80767fe-79a0ed78e0-dd1a6f-69ad2a.webp)

ESC VM 引入的智慧合約,被稱為「啞合約」(Dumb Contract),作為一個邏輯合約公示,但本身不以 EVM 形式進行鏈上交互。 另外,ESC VM 還增加了一種特殊格式「計算機命令」,使用這種格式創建的 ethions 會被 ESC VM 識別與啞合約交互,比如 Deploy - 部署啞合約,Call - 調用啞合約。

該方案存在一些局限性,一是「啞合約」的函數不是 payable 的,也就是說如果你想通過啞合約來發送 ETH,必須通過一個「橋合約」,而「橋合約」本身存在控制權濫用&資產盜用風險; 二是生態存在准入門檻,不允許任意創建啞合約,其代碼需要通過 Ethions Protocol 治理提案進行定義。

總結下來,ESC VM 是將乙太坊 L1 作為數據存儲層,在此之上建立的一個計算層,通過將合約邏輯、合約調用、合約調用等數據內容放在乙太坊 tx 的 calldata 內實現,ESC VM 的全域狀態共識是 ESC VM 用戶端共識,近似於 Arweave 的 SmartWeave 實現邏輯,只不過 SmartWeave 的數據存儲層是 Arweave。

1.2.8BitVM——一個有趣的研究實驗:BTC 之上的點對點執行通道

代表專案:ZeroSync

ZeroSync 創始人 Robin Linus 於 10 月 9 日發佈了一篇白皮書「BitVM:Compute Anything On Bitcoin」,準確來說它不是一個 VM,而是試圖創建一個圖靈完備的計算空間,其合約存儲在比特幣鏈上,但是合約的邏輯執行在鏈下。 如果認為對方違約,己方可以在鏈上發起挑戰,如果對方無法作出正確回應,則己方可以拿走合約中的所有資金。

其優點在於,可以賦予比特幣圖靈完備性而不需要對比特幣協議進行任何修改,不需要新的操作碼,不需要軟分叉,隨時可以應用。

其缺陷也很明顯,一是只支援兩方之間的交易(一方證明、一方驗證),二是創建一個合約需要創建大量數據以及預簽署大量交易,鏈下資訊存儲成本巨大。

下面是對技術邏輯的簡單介紹:

點輸入承諾

點輸入承諾允許證明者為邏輯門設置輸入值 0 或 1,在這個承諾里存在兩個哈希值 H(A0)、H(A1),證明者需要揭示一個哈希原像,例如 A0,則將輸入值設置為 0,若揭示 A1,則將輸入值設置為 1。

邏輯門承諾

有了輸入值之後,通過組合比特幣的與、非等操作碼,可以在比特幣腳本中組合任意邏輯門。

二進位電路承諾

將數以億計的邏輯門組成一個二進位電路,就可以實現圖靈完備性。 為了將這個二進位電路承諾到比特幣網路中,需要將所有邏輯門放進一個 Taproot 位址的葉節點里。

! [Rollup浪潮之下,VM還有故事要講] (https://img-cdn.gateio.im/webp-social/moments-69a80767fe-a62b8c1b21-dd1a6f-69ad2a.webp)

挑戰 - 響應環節

只是將電路承諾在鏈上還不夠,交易雙方需要一種有效的方式來驗證合約的計算結果是否正確。 在理想情況下,合約在鏈下運行,雙方都很合作且對結果無爭議則皆大歡喜。 但如果交易雙方存在爭議,則需要進入挑戰 – 回應環節驗證計算結果,並通過比特幣腳本強制分配通道餘額。

! [Rollup浪潮之下,VM還有故事要講] (https://img-cdn.gateio.im/webp-social/moments-69a80767fe-fb19acd23b-dd1a6f-69ad2a.webp)

因此,BitVM 遠非某種 BitcoinRollup 或 L2,不具有完整的虛擬機執行環境、全域狀態、用於發佈複雜智慧合約的高級語言,也無法允許任意數量的使用者輕鬆與這些合約進行交互。 用個很通俗的例子來形象說明:BitVM 像是在人人可以用移動終端的時代里,構建了一台比房間還大的巨型計算機。

1.2.9MoveVM——Facebook Web2 基因傳承下的產物

代表專案:Aptos、Sui

Move 是一種用於編寫安全智慧合約的程式設計語言,最初由 Facebook 開發,為 Diem 區塊鏈提供支援,在 Diem 區塊鏈專案中止後,以 Aptos、Sui 為代表的項目延續了 Move 語言的運用。 Move 區塊鏈最大特點是數據存儲採用全域存儲,由以帳戶位址為根的樹組成,每個位址可以存儲資源數據和模組代碼。

! [Rollup浪潮之下,VM還有故事要講] (https://img-cdn.gateio.im/webp-social/moments-69a80767fe-9c80cdc39c-dd1a6f-69ad2a.webp)

Move 有兩種不同類型的程式:模組和腳本。 模組是定義結構類型以及對這些類型進行操作的函數的庫。 結構類型定義了 Move 的全域存儲模式,模組函數定義了更新存儲的規則。 模組本身也存儲在全域存儲中。 而腳本是可執行檔的入口點,類似於傳統語言中的main函數,是未在全域存儲中發佈的臨時代碼片段。

! [Rollup浪潮之下,VM還有故事要講] (https://img-cdn.gateio.im/webp-social/moments-69a80767fe-edebf4204e-dd1a6f-69ad2a.webp)

總結,Move 模組類似於系統可執行檔運行時載入的動態庫模組,而腳本類似於主程式。 用戶可以編寫自己的腳本來訪問全域存儲,包括調用模組,而發佈模組或執行腳本通過MoveVM進行操作。

1.3生態發展趨勢

在 EVM 網路效應如此強大的現在,EVM 使用者向非 EVM 鏈生態遷移已成為新興區塊鏈專案的最大增長點,這將帶來更多的 Dapp 可組合性,更大的連接性可能會在未來幾年引發更快的用戶增長。

1.3.1錢包前端兼容

將EVM使用者引入非 EVM 鏈歷來都是一個主要障礙,但最近推出的Metamask Snap 將打破這一障礙。 EVM 使用者可以繼續使用 MetaMask,無需切換錢包。 得益於 Drift 的開源貢獻構建了出色的 MetaMask Snap 實現,UX 相當於與任何 EVM 鏈交互。 Eclipse 主網用戶將能夠與 MetaMask 中的原生應用程式交互,或使用 Solana 原生錢包(如 Salmon)。

! [Rollup浪潮之下,VM還有故事要講] (https://img-cdn.gateio.im/webp-social/moments-69a80767fe-1d25f15fac-dd1a6f-69ad2a.webp)

1.3.2VM 後端兼容

  • 1.3.2.1轉譯器 / 編譯器

代表專案:Wrap

Warp 是一個 Solidity-Cairo 轉譯器,目前已經由乙太坊著名基礎設施團隊 Nethermind 開發完成。 Warp 可以把 Solidity 代碼轉譯為 Cairo,但轉譯後的 Cairo 程式往往需要修改並增添 Cairo 特性(如調用內置函數,優化記憶體等)才能最大化執行效率。

  • 1.3.2.2位元組碼解釋器 /VM 相容層

代表專案:Kakarot、Neon EVM

Kakarot 是一個部署在 Starknet 上以 Cairo 編寫的、以智慧合約形式實現的 EVM 位元組碼解釋器,它以 Cairo 智慧合約的形式類比了 EVM 的堆疊、記憶體、執行等方面。 相比起代碼轉譯,Kakarot 實現了 EVM 背後 Opcode 與 Pre-compile 的逐條實現,並搭建了 Account Registry、Blockhash Registry 等元件針對帳戶位址映射、Block 信息獲取等方面進行了額外處理,讓 kakarot 擁有了更高原生的相容性。

! [Rollup浪潮之下,VM還有故事要講] (https://img-cdn.gateio.im/webp-social/moments-69a80767fe-92c6ee7313-dd1a6f-69ad2a.webp)

Neon EVM 是一種作為智慧合約運行的 EVM,可以部署在任何 SVM 鏈上。 Eclipse 主網本身採用了 SVM 作為執行環境,但通過 Neon EVM 帶來了完全的 EVM 相容性(包括 EVM 位元組碼支援和乙太坊 JSON-RPC),並且輸送量比單線程 EVM 更高。 另外每個 Neon EVM 實例都有自己的本地費用市場,即一個區塊高度上單合約帳戶交互相關的計算單元存在上限(區塊計算單元的 1/4),因此使用者只需要在特定熱點合約交互或區塊塞滿時需要付出 priority fee。 在這個意義上來說,應用程式部署自己的合約即可獲得近似應用程式鏈的優勢,以此降低因某一特定合約交互 tx 擁堵時對整個網路使用者體驗、安全性或流動性造成的破壞。

! [Rollup浪潮之下,VM還有故事要講] (https://img-cdn.gateio.im/webp-social/moments-69a80767fe-1fa8c035bb-dd1a6f-69ad2a.webp)

參考資料:

1.“Kakarot:探索 Starknet 的 EVM 相容之路”,by Cynic & Starknet Astro,

2.“BitVM 引熱議,比特幣網络可以實現圖靈完備? ”,by Haotian,

4.「Starkware 技術架構與生態梳理」,by Maxlion,

6.「項目調研丨模組化高速執行層 Fuel 研究報告」,from Web3CN,

  1. “Aptos Move VM 的第一個關鍵漏洞分析”,作者:Numen Cyber Labs,

11.「什麼是 SVM - Solana 虛擬機」,by Squads,

12.“Introducing Eclipse Mainnet: The Ethereum SVM L2”,作者:Eclipse,

15.「不同類型的 ZK-EVM」,作者:Vitalik Buterin,

  1. “Cipholio 調研報告:漫談 ZkVM 的方案及未來”,by YOLO SHEN,Cipholio Ventures,
查看原文
此頁面可能包含第三方內容,僅供參考(非陳述或保證),不應被視為 Gate 認可其觀點表述,也不得被視為財務或專業建議。詳見聲明
  • 讚賞
  • 留言
  • 分享
留言
0/400
暫無留言
交易,隨時隨地
qrCode
掃碼下載 Gate APP
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)