作者:StarkWare;編譯:凹凸曼
Validity Rollups 是以安全和去中心化的方式增加以太坊吞吐量的最有前途的方式;zkEVM 和 Cairo VM (CVM) 是有效性匯總中使用的兩種類型的 VM。
zkEVM 專注於以太坊兼容性,但犧牲了性能和可擴展性。
Starknet 中使用的 Cairo VM 將性能和可擴展性置於兼容性之上。
在談論擴展以太坊時,Rollups 是今年的熱門話題。在各種類型的 rollups 中,我們認爲 Validity Rollups (VRs),也稱爲 zk-rollups,是以安全和去中心化的方式增加以太坊吞吐量的最有希望的方式。這種擴展解決方案的核心是使用有效性證明進行可驗證計算。他們是這樣工作的:
運營商不是在以太坊主網上處理每筆交易,而是將交易執行卸載到鏈下環境。這個鏈下環境作爲第 2 層,意味着在以太坊之上運行的層。
在處理大量交易後,第 2 層操作員返回結果以應用於以太坊的狀態,以及驗證鏈下執行完整性的有效性證明。該證明保證一批中的所有交易都是有效的,並由鏈上驗證者合約自主驗證。這允許以太坊將結果應用到它的狀態。
Validity Rollups
注意:Validity Rollups 通常被錯誤地稱爲零知識匯總,但這並不准確。大多數 Validity Rollup 不使用 ZKP,也不用於確保隱私的目的。因此,術語「Validity Rollup」更准確。
在繼續之前,我們需要回答的第一個問題是:什么是虛擬機 (VM)?簡單地說,它是一個可以運行程序的環境,就像運行 Windows 操作系統的 Mac。它在對某些輸入執行計算後在狀態之間轉換。以太坊虛擬機 (EVM) 是運行以太坊智能合約的 VM。
零知識虛擬機 (zkVM) 是一種程序執行環境,它與程序輸出一起允許生成可以輕松驗證的有效性證明。此有效性證明證明程序已正確執行。當使用術語「zkEVM」時,它通常是指利用以太坊虛擬機 (EVM) 並能夠證明 EVM 執行的匯總。這個術語可能會產生誤導,因爲 EVM 本身並不生成這些證明;相反,證明是由一個單獨的證明機制生成的,該機制以 EVM 執行的結果爲起點。此外,這些證明是關於有效性而非隱私的,因此它們不完全是零知識證明。盡管如此,爲了保持一致性,我們將在本文中堅持使用傳統術語「zkEVM」。
雖然所有 Validity Rollups 都旨在利用有效性證明來擴展以太坊,但它們在選擇 VM 來執行鏈下交易方面有所不同。許多 Validity Rollups 選擇復制 EVM 的設計(因此被稱爲「zkEVM rollups」),試圖在 L2 rollup 上復制以太坊。 Starknet 使用一種新的 VM——Cairo VM (CVM)——專門設計用於優化有效性證明效率。
這兩種方法各有優缺點,但 zkEVM 以性能換取以太坊兼容性,而 Cairo VM 將性能優先於兼容性,優先考慮擴展能力。
zkEVM 是一個 Validity Rollup,其目標是將以太坊體驗完全引入 Layer-2 區塊鏈。它旨在將以太坊开發人員環境復制爲匯總。借助 zkEVM,开發人員在編寫智能合約或將智能合約移植到更具可擴展性的解決方案時,無需更改代碼或放棄其 EVM 工具(和智能合約)。
這種方法的一個主要缺點是它降低了有效性證明的擴展潛力。由於 zkEVM 致力於與以太坊兼容,因此速度較慢且資源密集度更高。與 CVM 不同,EVM 在設計時並未考慮證明效率。這限制了可以提高效率和可擴展性的優化的使用,最終影響系統的整體性能。
zkEVM 方法的核心挑战植根於 EVM 的原始藍圖——它並非設計用於在有效性證明上下文中運行。因此,反映其功能的努力無法釋放有效性證明的全部潛力,導致效率達不到最佳水平。這種低效率最終會拖累系統的整體性能。 EVM 與有效性證明的兼容性受到以下因素的阻礙:
EVM 採用基於堆棧的模型,而有效性證明更有效地用於基於寄存器的模型。 EVM 基於堆棧的特性使得證明其執行的正確性以及爲其本機工具鏈提供直接支持變得更加困難。
以太坊存儲布局嚴重依賴 Keccak 和大型 Merkle Patricia Tree,這兩者都不利於有效性證明並施加大量證明負擔。例如,Keccak 對於 x86 架構(我們通常在其上運行 EVM)非常快,但需要 90k 步來證明(內置特殊構建)。而 Pedersen(一種對 zk 友好的哈希函數)需要 32 個步驟。即使使用遞歸壓縮,在 zkEVM 中使用 Keccak 也意味着最終由用戶支付的大量證明者資源。
因此,各種 zkEVM 旨在爲以太坊工具提供不同級別的支持——zkEVM 與以太坊的兼容性越高,性能就越差。 (有關 zkEVM 類型的更多信息,請跳至文章末尾。)
zkEVM 解決方案投入大量开發時間來「讓 EVM 爲 Validity Rollups 工作」,將兼容性置於長期性能和可擴展性之上。還有另一種選擇:使用全新的專用虛擬機,並在頂部添加對以太坊工具的支持作爲附加層。這是 Starknet 所採用的方法,Starknet 是 2021 年 11 月推出的無需許可的 Validity Rollup。Starknet 是第一個在完全可組合的網絡上提供通用智能合約平台的 Validity Rollup。
Starknet 使用 Cairo-VM (CVM),這是一種同名的高級語言。 Cairo-VM 是爲高效生成程序執行的有效性證明而設計的 VM。
使用 Cairo(虛擬機和語言),我們有:
1. 優化的有效性證明——每條指令都有一個有效的代數表示
2.用於編寫可證明程序的 Rust-like 語言
3. 高級 Cairo 和 Cairo 匯編(VM 指令)之間的中間表示(Sierra),允許高效執行 Cairo 代碼
开發一種新語言可以讓人們根據它要滿足的特定需求對其進行定制,並爲其配備能夠滿足以前未滿足需求的功能。
爲了創建關於某些計算的有效性證明,首先必須將該計算表示爲描述該計算的一系列數學約束。由於優化計算以提高效率的挑战以及對專用工具的需求,過程可能非常棘手。
Cairo 語言最初旨在簡化此任務,並使其更容易向 StarkEx 添加功能和復雜的業務邏輯。 Cairo 程序被編譯成代數機器代碼——一個數字序列——由一個固定的 VM 執行。有了 Cairo,生成描述計算的數學約束的整個復雜性——有效性證明的一個棘手問題——被抽象出來並被固定的約束集(總共少於 50 個約束)捕獲。因此,开發人員可以利用有效性證明來擴展他們的應用程序,而無需了解底層數學和基礎設施,只需使用他們熟悉的語法編寫代碼即可。
Starknet 是關於創新的,這反映在其多元化的代碼方法中。Cairo 使用 STARKs 獲得最佳擴展的能力不僅限於那些在 Cairo 本地編寫合約的人。开發人員可以選擇最適合他們的方法:
在 Cairo 本地編寫代碼:隨着 Cairo 1.0 的發布,开發人員現在可以使用符合人體工程學且安全的 Rust 語言,這使得編寫程序邏輯變得更加容易且不易出錯。
Solidity 兼容性:Solidity 开發人員可以編寫可供 Cairo VM 使用的代碼。這種方法提供了與以太坊類似的开發人員體驗,並使 Solidity 智能合約可移植到 Starknet。有兩種方法可以實現這一點:
轉譯:轉譯是指將用一種編程語言編寫的源代碼轉換爲另一種語言的過程。 Nethermind 團隊創建了 Warp 轉譯器,用於將 Solidity 代碼轉譯到 Cairo。 Warp 使 Solidity 智能合約可移植到 Starknet,有效地使其成爲 Type 4 zkEVM。它已經被用於轉譯和部署 Uniswap 合約,只需進行極小的改動。
Starknet 上的 zkEVM:Cairo VM 可用於證明另一個 VM 的執行。 Kakarot 是一個用 Cairo 編寫的 zkEVM,可用於在 Starknet 上運行以太坊智能合約。 Cairo VM 和 zkEVM 不是競爭方法,我們可以同時擁有 Cairo VM 和 zkEVM,而不是在 Cairo VM 和 zkEVM 之間進行選擇!
盡管存在時間很短,但 Cairo 是 TVL 排名第四的最受歡迎的智能合約語言,並且已經獲得超過 3.5 億美元的資金。
zkEVM 旨在將以太坊環境復制爲 rollup,並允許开發人員使用熟悉的以太坊工具。然而,這種方法抑制了有效性證明的全部潛力,並且可能是資源密集型的。
Cairo VM 專爲有效性證明系統而設計,不受 EVM 的限制。它由一種新的、安全且符合人體工程學的 Rust 啓發的編程語言支持,稱爲 Cairo 1.0,形成了一個強大的工具,旨在通過使用 STARK 證明擴展以太坊來獲得最大效率。
看到 Cairo 每周取得的成績,以及开發人員不同選擇的增長,如 Kakarot zkEVM 和 Warp,令人興奮。隨着 Starknet dApp 進入生產階段,展示了 Cairo 的強大功能,我們相信它將在未來用於更雄心勃勃的項目。
由於上面概述的 STARK 擴展的三種途徑,以及毫無疑問將在未來幾個月內提供的其他途徑,开發人員現在對擴展區塊鏈擁有前所未有的控制權。
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。
標題:爲什么說Validity Rollups是以太坊最有希望的擴容方式?
地址:https://www.torrentbusiness.com/article/42168.html
標籤:zkEVM