zkEVM性能實測指南:開發者如何選擇ZK rollups項目?
原文作者: Jarrod Watts
原文編譯:BlockBeats
以太坊擴容戰爭中,Optimistic rollups 因其EVM 高度兼容甚至完全等效,導致該賽道的Arbitrum 和Optimism 在開發者採用上佔據先天優勢,其L1 到L2 無縫移植代碼和豐富的開發工具可快速吸引開發者進駐並在平台上部署和創建應用。
與之對比,ZK 系則更難一些。其技術上固有的特性導致ZK rollups 需要定制自己的虛擬機,這意味著項目方需要做更多的工作來「解釋」來自EVM 的代碼甚至是從頭開發編寫全新代碼。不過,目前包括Taiko、Polygon、Linea、Scroll 和ZkSync Era 的多個ZK rollups 賽道項目均推出了自己的zkEVM 實現。
作為擴容聖杯,zkEVM 對開發者的合約部署體驗有至關重要的影響,面對面對琳瑯滿目的ZK rollups 項目,開發者到底該如何選擇?
本文編譯了來自Jarrod Watts 發布的推文總結二級標題
一級標題
二級標題
在解讀ZK-EVM 是什麼之前,先看看為何需要ZK-EVM?
ZK Rollups 為以太坊帶來擴展性和高性能,硬幣的另一面是,ZK Rollups 解決方案與EVM(以太坊虛擬機)不兼容,這意味著ZK Rollups 方案僅能支持執行有限的操作,包括轉賬、鑄幣或銷毀,並且還得為用戶開發錢包等工具。
因此,我們需要與EVM 兼容的ZK Rollups,為此,多家公司都開發了自己的ZK-EVM。
ZK-EVM,即零知識EVM,它是一種與零知識證明兼容的以太坊虛擬機實現。
ZK-EVM 主要功能是對以太坊L2(第2 層)上交易進行批量處理,並將該批量交易的「有效性證明」發回至以太坊L1 上。通常,zkEVM 可以做以太坊主網的一切。它將Solidity 或Vyper 中人類可讀的代碼編譯成字節碼,執行智能合約,並更新區塊鏈狀態。
二級標題
二級標題
opcodes、字節碼和EVM 分別是什麼?
科普時間到,操作碼(opcodes)、字節碼和EVM 分別是什麼?
根據
根據
根據以太坊開發者文檔,一個舊的有效狀態(S)+一組新的有效交易(T),以太坊將產生一個新的有效輸出狀態S'

你可以將其看作是國際象棋這樣的遊戲。以太坊就像是一個棋盤,其中存在不同的遊戲狀態,在以太坊中,這種狀態的可能性則是無限的。棋盤遊戲都有自己特定的移動規則(對比以太坊上的交易),並且對哪類棋子執行哪些操作也有特定的限制。遊戲玩家採取行動(對比的是用戶在以太坊上提交交易),遊戲(以太坊)制定和執行規則,從而在每個回合(對應區塊時間)後產生一個新的棋盤(以太坊全局)狀態。
進行以太坊或任何EVM 兼容的區塊鏈開發,需要使用Solidity 編寫智能合約。 Solidity 是一種高級語言,其目的是人類可讀,這樣開發者就可以專注於編寫代碼,而非寄存器、內存地址、調用堆棧等抽象層面的東西。
然而,EVM 卻無法讀取Solidity。相反,它只能理解「字節碼」(bytecode),這是一種二進制、機器可讀的低級代碼。
在EVM 中,「字節碼」(bytecode)代表的是一系列EVM「操作碼」(opcodes),操作碼是程序的低級可讀指令,代表的是可在EVM 中執行的特定操作。
由於Solidity 這樣的高級語言無法在EVM 中被直接執行,因此,我們需要一種方法將智能合約代碼從人類可讀的Solidity 語言操作碼字節碼,然後由EVM 執行,這就是編譯器的工作。
當使用Remix IDE 編譯器對Solidity 代碼編譯後,可看到該智能合約轉換成的特定的操作碼,並查看從該操作碼生成的字節碼。

以下是操作碼:

以下是上面操作碼對應的字節碼。

一級標題
一級標題
不同類型的ZK-EVM
由於一開始以太坊設計並沒有考慮到ZK 友好性,因此理論上,越接近以太坊設計,生成ZK 證明就越困難且耗時。 2022 年8 月,以太坊創始人Vitalik 曾發表博文「聽Vitalik 解讀不同類型ZK-EVM 的未來」,對不同ZK-EVM 進行了分類。
在該文中,Vitalik 基於EVM 兼容性和ZK 證明生成時間(性能)兩個維度對各類ZK-EVM 進行了分類,Vitalik 在該圖表中羅列了四種(半)類型,目前市面上所有ZK- EVM 產品都可被囊括其中。

1 ,第一種類型的ZK-EVM 與以太坊完全等效,它們不會更改以太坊系統的任何部分,更易於生成證明。在這種系統中,ZK 證明需要很長時間(幾個小時)才能生成。 Taiko 屬於該類型的ZK-EVM。
2 ,第二種類型完全與EVM 等效,但更改了一些不同的內部表示形式,比如鍊狀態的存儲方式,以加速ZK 證明的生成時間。目前,市面上沒有這種類型的ZK-EVM;不過,Polygon、Linea 和Scroll 正在朝這個方向努力。
2.5 ,在類型2 和類型3 之間,還存在一個類型2.5 。這種類型完全與EVM 等效,只不過增加了某類操作的Gas 成本,以「大幅縮短最壞情況下的證明時間」。目前,市面上沒有這種類型的ZK-EVM;不過,一個名為Kakarot 的新ZK-EVM 項目正在朝這個方面發力。
3 ,類型3 幾乎與EVM 等效,不過等效精確性上做出了一些讓步,以進一步縮短證明時間並簡化EVM 的開發。目前,Polygon、 Linea 和Scroll 屬於這一類型。
一級標題
一級標題
實戰:Taiko、Polygon、Linea、Scroll 和ZkSync Era 開發評測
二級標題
二級標題
Taiko ZK-EVM
Taiko 屬於類型1 ZK-EVM,目前處於測試網階段。 Taiko 可準確地處理以太坊的所有行為;使用相同的哈希函數、gas 價格和加密算法等。
二級標題
二級標題

Linea ZK-EVM
Linea 屬於類型3 ZK-EVM,Linea 目前還不能證明所有操作碼或預編譯;代表的是與以太坊不同的鏈內部狀態,比如使用不同哈希函數。
部署的字節碼與以太坊相同。

此次部署過程幾乎無縫,可輕鬆部署兩個智能合約,並與其進行交互。這與以太坊的行為相同;可使用現有工具和錢包部署智能合約、與其交互、鑄造NFT 等。
二級標題
二級標題
Polygon ZK-EVM
Polygon ZK-EVM 屬於類型3 ZK-EVM,自今年3 月底以來已啟動主網。
Polygon zkEVM 在官方文檔列出了EVM 和zkEVM 之間當前的所有差異

在Polygon zkEVM 上部署字節碼與以太坊相同,這讓部署智能合約並與其交互變得非常簡單。 Vitalik 曾表示,「Polygon zkEVM 具有獨特的設計,他們正在使用ZK 驗證自己稱為zkASM 的內部語言」。
二級標題
二級標題
Scroll
二級標題

二級標題
ZkSync Era
ZkSync Era 屬於類型4 ZK-EVM。與其他ZK-EVM 完全不同,在ZkSync Era 的zkEVM 上部署的智能合約字節碼與以太坊不同。
這讓ZkSync Era 提供一個獨特的功能,即對帳戶抽象(Account abstraction)的原生支持,這將帶來不同的開發者體驗。通常情況下,大多數加密錢包只是標準地址,可以發送和接收資金,並與智能合約互動。有了帳戶抽象,加密錢包是定制化的,可以更複雜的方式設計,提供更廣泛的功能。此外,該zkEVM 仍允許開發者使用相同的高級語言,例如Solidity。
雖然ZkSync Era 的ZK-EVM 與EVM 差異較大,但ZkSync Era 提供了一整套開發者最佳實踐和注意事項。此外,開發者需要對開發流程進行一些小調整,以專門針對ZkSync Era 進行構建。
比如,在下例中,必須使用自定義zkSync 擴展安裝和配置Hardhat 環境,以生成可以部署到Era ZK-EVM 的字節碼。

值得注意的是,

值得注意的是,結語
二級標題
Kakarot ZkEvm
結語
結語
對於終端用戶來說,誰贏得比賽並不重要,因為兼容EVM 的ZK 解決方案的進展是整個行業的一大勝利。對於各項目方而言,與其說是一場競賽,不如說是探索不同方法來推進整個行業的進步,Vitalik 甚至還有一個「多證明者理論」,其基礎前提是,不同的Rollup 可以協同工作,從而增強以太坊的整體安全性。
歸根結底,大家都希望以太坊能夠成功。 L2 擴容轉型是Vitalik 認為以太坊需要經歷的三個技術轉型之一。未來將如何發展,我們拭目以待。


