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

推薦閱讀
2023-10-30 15:50:12
收藏
EVM 龐大的用戶生態決定了任何放弃它的區塊鏈網絡短期內都難以與其抗衡。因此非 EVM 生態通過編譯器等甚至 VM 兼容層引入 EVM 生態用戶,利用非 EVM 的虛擬機特性構建新的生態敘事,或是一條必備的成功之路。

作者:PSE Trading Analyst @cryptohawk

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 擁堵時對整個網路用戶體驗、安全性或流動性造成的破壞。

鏈捕手ChainCatcher提醒,請廣大讀者理性看待區塊鏈,切實提高風險意識,警惕各類虛擬代幣發行與炒作,站內所有內容僅係市場信息或相關方觀點,不構成任何形式投資建議。如發現站內內容含敏感信息,可點擊“舉報”,我們會及時處理。
banner
ChainCatcher 與創新者共建Web3世界