Rollup強勢下跌 VM 還有故事要講

2023-10-30 15:35 金色精選


作者:PSE Trading Analyst @cryptohawk,Mirror

TL;DR

1.虛擬機是一個軟件仿真的計算機系統,爲程序提供執行環境。它可以模擬各種硬件設備,使程序在受控且兼容的環境中運行。

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

zkVM 則舍棄 EVM 等效 / 兼容性,將 zk 友好化的優先級提高;

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

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

ESC VM、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 和節點硬件來執行。

1.2 主流 VM

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

代表項目: Optimism、Arbitrum

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

EVM 模擬的內存和存儲器是用於存儲智能合約的狀態和數據的設備。EVM 將內存和存儲器視爲兩個不同的區域,它可以通過讀取和寫入內存和存儲器來訪問智能合約的狀態和數據。

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

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

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

代表項目:Taiko、Scroll、Polygon zkEVM

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

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

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

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

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

1.2.3 zkVM——魚和熊掌不能兼得: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.4 Privacy zkVM——zk 友好 + 原生隱私支持嘗試點燃生態新火花

代表項目:Aleo、Ola、Polygon Miden

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

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

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

代表項目:Eclipse Mainnet、Nitro、MakerDAO Chain(maybe)

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

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

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

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

代表項目:Fuel

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

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

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

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

1.2.7 ESC VM——Ordinal/Smartweave 的繼承者:以太坊之上的計算層

代表項目:Ethscriptions Protocol

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

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

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

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

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

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

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

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

代表項目:ZeroSync

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

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

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

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

(1)點輸入承諾

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

(2)邏輯門承諾

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

(3)二進制電路承諾

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

(4)挑战 - 響應環節

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

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

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

代表項目:Aptos、Sui

Move 是一種用於編寫安全智能合約的編程語言,最初由 Facebook 开發,爲 Diem 區塊鏈提供支持,在 Diem 區塊鏈項目中止後,以 Aptos、Sui 爲代表的項目延續了 Move 語言的運用。Move 區塊鏈最大特點是數據存儲採用全局存儲,由以账戶地址爲根的樹組成,每個地址可以存儲資源數據和模塊代碼。

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

總結,Move 模塊類似於系統可執行文件運行時加載的動態庫模塊,而腳本類似於主程序。 用戶可以編寫自己的腳本來訪問全局存儲,包括調用模塊,而發布模塊或執行腳本通過 Move VM 進行操作。

1.3 生態發展趨勢

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

1.3.1 錢包前端兼容

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

1.3.2 VM 後端兼容

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 擁有了更高原生的兼容性。

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

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。

標題:Rollup強勢下跌 VM 還有故事要講

地址:https://www.sgitmedia.com/article/14241.html

相關閱讀: