詳述有效性證明Rollup和Cairo VM技術特性
發表於 2023-06-15 08:42 作者: StarkNet 中文
來源:Scaling Ethereum Efficiently;編譯:Starknet 中文社區
概要
有效性證明 Rollup 以安全和去中心化的方式增加以太坊吞吐量,也是最具潛力的方式;zkEVM 和 Cairo VM(CVM)是有效性證明 Rollup 中所使用到的兩種虛擬機 (VM) 類型。
zkEVM 專注於以太坊兼容性,但犧牲了性能和可擴展性。
Starknet 採用的 Cairo VM 將性能和可擴展性置於兼容性之上。
Rollup 是今年關於擴展以太坊的熱門話題。在各種類型 Rollup 中,我們相信有效性證明 Rollup(以下簡稱 VR,或稱爲 zk-rollup),是以安全和去中心化的方式增加以太坊吞吐量,最有希望的擴容方案。這種擴容方案的核心是採用有效性證明進行可驗證計算。下面來了解其運行原理:
和在以太坊主網上處理每筆交易不同,運營者將交易放到鏈下環境執行。鏈下環境就是 L2,即在以太坊之上運行的操作層。
在大批量交易處理完成後,L2 運營者將結果返回至以太坊狀態中,同時還有一個有效性證明用於驗證鏈下執行的完整性。該證明保證同一批次中的所有交易都有效,並由鏈上驗證合約自主驗證。該操作允許以太坊將結果應用於其狀態。
有效性證明 Rollup
請注意:有效性證明 Rollup 常被錯稱爲零知識證明 Rollup (zkRollup),這並不准確。大部分有效性證明 Rollup 不採用零知識證明,也不用於確保隱私。因此,術語「有效性證明 Rollup」更准確。
鏈下虛擬機
在繼續深入前,我們需要回答第一個問題:什么是虛擬機(VM)?簡而言之,虛擬機是一個可以運行程序的環境,比如 Mac 上運行 Windows 操作系統。VM 在對某些輸入執行計算後,在狀態之間進行轉換。以太坊虛擬機(EVM)就是運行以太坊智能合約的 VM。
零知識虛擬機(zkVM)是程序執行環境,與程序輸出一起生成可輕松驗證的有效性證明。有效性證明用於證明程序已正確執行。當使用「zkEVM」一詞時,通常是指運行以太坊虛擬機(EVM)並能夠證明 EVM 執行的 Rollup。這個術語可能會造成誤會,因爲 EVM 本身無法生成這些證明;相反,證明是由一個單獨的證明器機制產生,該機制將 EVM 的執行結果作爲其起點。此外,上述證明都是與有效性相關,而與隱私無關。因此,准確來說不能稱爲零知識證明。而爲了保持一致性,在本文中仍使用傳統術語「zkEVM」。
盡管所有有效性證明 Rollup 都旨在採用有效性證明來擴展以太坊,而不同方案在 VM 執行鏈下交易方面做出了不同選擇。許多有效性證明 Rollup 選擇復制 EVM 設計(因此稱爲「zkEVM rollup」),嘗試在 L2 rollup 上復制以太坊。Starknet 採用的是 Cairo VM(CVM),是專爲優化有效性證明效率而設計的全新 VM。
上述兩種方式各有利弊和取舍,但 zkEVM 犧牲性能以求以太坊兼容性,而 Cairo VM 將性能置於兼容性之上,優先考慮可擴展能力。
了解 zkEVM 運作方式
zkEVM 是一種有效性證明 Rollup,旨在 L2 區塊鏈上完全引入以太坊體驗。目的是將以太坊开發者環境復制到 Rollup 中。借助 zkEVM,开發者編寫或移植智能合約到擴容方案時,無需調整代碼或棄用原本的 EVM 工具(以及智能合約)。
這種方式有一個關鍵缺陷,即降低了有效性證明的擴展能力。由於重心放在與以太坊兼容,導致 zkEVM 速度更慢且資源密集度更高。與 CVM 不同,EVM 在設計時沒有考慮證明效率。因此限制了在提高效率和可擴展性的優化使用,最終影響系統的整體性能。
EVM 的可證明性
zkEVM 方式的核心挑战在於 EVM 根深蒂固的原始藍圖,起初的設計並不是爲了在有效性證明環境中運行。因此,努力都放在實現以太坊功能上,就無法釋放有效性證明的全部潛力,導致效率不盡人意。這種低效率最終拖了系統整體性能的後腿。EVM 與有效性證明的兼容性受到以下因素的阻礙:
EVM 採用基於堆棧的模型,而有效性證明更高效地用於基於寄存器的模型。EVM 基於堆棧的性質使其本質上更難證明其執行的正確性,並爲其本地工具鏈提供直接支持。
以太坊存儲布局重度依賴於 Keccak 和大型 Merkle Patricia 樹,這兩者都是非有效性證明友好型,帶來巨大證明負擔。例如,Keccak 對於 x86 架構非常快速(通常用於運行 EVM),但需要 9 萬個步驟來證明(需要特殊內置)。而 Pedersen(零知識友好型哈希函數)只需要 32 個步驟。即使採用遞歸壓縮,zkEVM 中使用 Keccak 消耗證明器資源仍舊很高,成本最終還是得由用戶承擔。
因此,各類 zkEVM 旨在爲以太坊工具提供不同程度的支持,但 zkEVM 與以太坊兼容性越高,性能也就越低。(有關更多 zkEVM 類型的信息,請參閱文章結尾處)
了解 Cairo-VM 運作方式
zkEVM 解決方案在「讓 EVM 適用於有效性證明 Rollup」方面投入了大量开發時間,將兼容性置於長遠性能和可擴展性之上。還有另一個選項:採用全新的專用虛擬機,並新增一個額外層用於支持以太坊工具。這就是 Starknet 採取的措施,Starknet 於 2021 年 11 月推出了一個無需許可的有效性證明 Rollup。Starknet 是首個在完全可組合性網絡中,實現通用智能合約平台的有效性證明 Rollup。
Starknet 採用 Cairo-VM(CVM),並創造同名高級語言 Cairo。Cairo-VM 是爲高效生成程序執行的有效性證明而設計。
通過 Cairo(VM 和編程語言)可實現:
優化有效性證明,每條指令都有一個有效代數表達式
用於編寫可證明程序的現代類 Rust 語言
高級 Cairo 語言和 Cairo 匯編(VM 指令)之間的中間表達式(Sierra),可以高效執行 Cairo 代碼
开發一種全新語言可以根據特定需求定制,可以包含以前所不具備的功能,滿足新需要。
Cairo 和編碼多元化
爲了創建某些計算的有效性證明,首先必須將該計算表達爲描述計算的一系列數學約束。這個過程非常復雜,難點在於優化計算以提高效率,而且需要特定工具。
Cairo 語言設計之初就是爲了簡化這一任務,以便 StarkEx 能輕松增添功能和復雜的商業邏輯。將 Cairo 程序編譯成代數機器代碼,即一串數字,由單個固定的 VM 執行。有了 Cairo,生成描述計算的數學約束這個復雜過程(對於有效性證明來說非常棘手)得以抽象化,進而以一組固定的約束條件(總共不到50個約束)來表示。這樣,开發者無需理解底層數學和基礎設施,僅需用熟悉的語法編寫代碼,就能利用有效性證明擴展應用程序。
Starknet 致力於創新,這點在代碼多元化處理方法上展現得淋漓盡致。Cairo 採用 STARK 技術實現最佳擴展功能,不僅限於使用 Cairo 本地環境編寫合約。开發者還可以選擇最適合的方式:
在 Cairo 本地編碼:Cairo 1.0 受 Rust 啓發,更加符合开發者使用習慣且更加安全,編寫程序邏輯變得更加容易且不易出錯。
Solidity 兼容性:Solidity 开發者可以編寫支持 Cairo VM 的代碼。這種方式提供了與以太坊相似的开發者體驗,並支持 Solidity 智能合約遷移至 Starknet。遷移實現方式有兩種:
轉譯:轉譯是將一種編程語言的源代碼轉換成另一種語言的過程。Nethermind 團隊構建了 Warp 轉譯器,用於將 Solidity 代碼轉譯爲 Cairo。Warp 讓 Solidity 智能合約可移植至 Starknet,使其有效成爲第四類 zkEVM。目前已用於轉譯和部署 Uniswap 合約,只需極小的改動即可實現。
Starknet 上的 zkEVM:Cairo VM 能用於證明另一個 VM 的執行。Kakarot 是採用 Cairo 編寫的 zkEVM,可用於在 Starknet 上運行以太坊智能合約。Cairo VM 和 zkEVM 並不是競爭關系,與其在兩者之間做出選擇,不如採用兩者兼得的方式!
盡管 Cairo 問世時間不長,但根據 TVL 排名,Cairo 是第四受歡迎的智能合約編程語言,估值超 3.5 億美元。
總結
zkEVM 旨在將以太坊开發者環境復制到 Rollup 中,並允許开發者使用熟悉的以太坊工具。但這種方式限制了有效性證明的潛力,且資源密集。
專爲有效性證明設計的 Cairo VM 不受到 EVM 的限制。Cairo VM 支持 Cairo 1.0。Cairo 1.0 受 Rust 語言啓發,更加符合开發者使用習慣且更加安全,形成強大的工具,旨在利用 STARK 證明高效擴展以太坊。
看到 Cairo 每周都在發展,Kakarot zkEVM 和 Warp 這種开發者選擇越來越多,令人興奮。隨着 Starknet dApp 投入生產,展現出 Cairo 的強大力量,我們堅信未來 Cairo 會催生出前所未見的優秀項目。
上文概述了 SATRK 擴展的三種路徑,毫無疑問未來幾個月還會有更多創新誕生。开發者現在對擴展區塊鏈有了前所未有的掌控權。
zkEVM 類型
Vitalik 將 zkEVM 主要分爲四個類型:
第一類完全等效以太坊:不改變以太坊生態系統的任何部分。
第二類完全等效 EVM:能和現有 dApp 兼容,並對以太坊的設計做出部分調整以加快證明生成。
第三類大致等效 EVM:支持大部分 EVM 操作碼,移除部分 zkEVM 難以實現的功能(如預編譯和哈希函數)。
第四類等效高級語言:用 Solidity/Vyper 編寫智能合約代碼,並將其轉譯成有效性證明友好型語言。
標題:詳述有效性證明Rollup和Cairo VM技術特性
地址:https://www.coinsdeep.com/article/15460.html
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。