作者: msfew@Foresight Ventures
以太坊的未來路線可謂是為Rollup 量身打造, 而目前最被寄予厚望的方案就是採用了零知識證明技術的zk Rollup.
通常大家的認知中, zk Rollup 需要數年的工程開發才可以真正落地, 這是由於構建zkEVM 的開發難度巨大. 為了讓開發者能無縫移植和部署以太坊智能合約到zk Rollup 中, 開發團隊需要對兼容EVM 的zkEVM 進行開發與性能優化.
實現zkEVM 一直是以太坊基金會和Polygon 等其他zk Rollup 團隊的重點任務. 在長期視角下, zkEVM 的實現不僅能解決以太坊主網共識瓶頸的各個方面:
-
I/O: 通過無狀態和enshrined zkEVMs
-
存儲: 通過無狀態和enshrined zkEVMs
-
計算: 通過enshrined zkEVMs
同時以zkEVM 為核心組件, 可以構建一個真正完美的通用Rollup 網絡.
Polygon 就在近期帶來了這麼一個帶有zkEVM 的alpha 版本zk Rollup, 與Scroll, StarkNet, zkSync, Sin7Y 等的方案相比各有千秋. 這些zkEVM 的存在是Polygon 與以太坊生態的一個巨大飛躍, 也意味著全新且更好的Rollup 用戶體驗即將到來.
0. zkEVM
a) zkEVM 介紹
在了解zkEVM Rollup 如何顛覆以太坊用戶體驗之前, 我們需要認識zkEVM 的概念. 如果你想更深入地了解zk, zkVM 與zkEVM, 歡迎閱讀我們之前的研究文章.
zkEVM 的概念可以被拆解成兩個部分:
-
zk: 零知識證明技術, 可以通過一個精簡的證明來證明一批次tx 的有效性, 達成計算可信, 從而實現擴容.
-
EVM: 以太坊生態的智能合約執行器. 正是EVM 的存在才讓以太坊具有智能合約運行能力, 成為全球計算網絡(相比之下比特幣的功能可能只能算是計算器), 同時EVM 也衍生出EVM 兼容, EVM 等同, EVM 超集的概念.
那麼zkEVM 就是一個至少在編程語言層面兼容EVM 的zk 虛擬機. 智能合約在zkEVM 中運行後, 會生成一個zk 證明, 它可以證明運行狀態轉換的有效性, 保證計算可信. 驗證者只需對證明驗證即可(開銷很小), 無需重新執行(冗餘很大).
b) zkEVM 意義
zkEVM 在各個層面都具有重大的意義:
-
對於Rollup 擴容: zkEVM 可以為批量tx 生成證明從而在主網快速驗證, 以完全可信與無需多輪複雜共識的方式借助主網安全性達成了計算可信.
-
對於DApp 開發者: 開發者無需學習任何zk 相關的硬核知識或Solidity 和Vyper 以外的新語言, 就可以藉助zkEVM 來給任意智能合約賦予zk 的超能力.
-
對於zkEVM 開發者: 無需為網絡上的智能合約的功能編寫不同的電路, 而是只需維護zkEVM 即可.
-
對於Layer3 搭建者: 可以嘗試在zkEVM 中搭建Layer3 的Verifier, 於是Layer3 的批量交易可以進一步被同時證明且批量地打包成一條tx 在主網驗證(L3: 1000 tx → L2: 10 tx → L1: 1 tx), 實現App-rollup.
-
對於以太坊: 多個zkEVM 方案的存在最終會成為重要的Public Goods, 幫助以太坊實現下一階段的Enshrined zkEVM 與zk everything 的Roadmap.
c) zkEVM 方案與進度對比
近期zk Rollup 項目非常活躍. StarkNet 宣布將在未來發幣, Aztec 發布了隱私DeFi, zkSync 發布了主網上線倒計時, Scroll 發布了Pre-Alpha 版本的zkEVM, Polygon 開源了zkEVM 項目的全套代碼……
以太坊生態可謂是一場zk 與zkEVM 的軍備競賽. 而正如我們在之前的zkVM 與zkEVM 文章中所說的, zkEVM 的方案各有千秋, 各有優勢.
首先是技術大方向上的區別, 基本分為兩個方向:
兩個方向上都有不同的選手:
-
基於原生: Polygon, AppliedZKP, Scroll, Taiko. 當然後三者都在同一個Repo 中進行開發, 基本可以視為是同種方案.
-
基於編譯: StarkNet, zkSync, OlaVM 等. 這個賽道上選手最多, 但不同項目的差別其實也比較大.
按照Vitalik 的分類對比方法的話, 分為如下類型:
-
Type 1: 完全適配以太坊L1 的enshrined zkEVM. 如AppliedZKP.
-
Type 2: 完全EVM 等同的zkEVM, 內部結構略有區別. 如未來的Scroll 和Hermez.
-
Type 2.5: EVM 等同, 僅gas cost 不同(可能會導致細微的兼容性差別) 的zkEVM. 如加上複雜操作的precompiles 後的Scroll 和Hermez.
-
Type 3: 幾乎EVM 等同的zkEVM. 如現階段的Scroll 和Hermez.
-
Type 4: 語言層面兼容EVM 的zkEVM, 特性和開發者設施會不同, 同時開發者也無法直接手寫EVM Bytecode. 如zkSync 和StarkNet.
在方案的取捨上, 實際上有非常多的變量. 就像遊戲初始人物加點一樣, 只有一定量的天賦點可以分配給每個變量, 可以說又是一個三難選擇:
-
性能(zk Prover, Verifier, 開銷, 硬件加速)
-
適配性(DApp 開發者, 基礎設施, 開發工具, 礦工)
-
開發難度(維護難度, 開發進度, 系統複雜度, 工程實現複雜度)
其中典型方案的區別為:
-
StarkNet: 完全實現一個全新的zkVM (CairoVM), 性能好, 開發難度不高, 但適配性不足(需要Warp 轉譯器實現EVM), 最大的亮點是已經形成生態, 同時具有storage proof 和fractal scaling 等創新.
-
zkSync: IR 層面的zkEVM (LLVM-IR 部分). 適配性好(語言層面適配), 性能和開發難度都中等, 更加靈活, 最大的亮點是可以在編譯器迭代過程中, 可以通過LLVM 支持除了Solidity 外的其他語言.
-
Hermez 和Scroll: 都算是Bytecode 層面的zkEVM (不代表完全復用EVM Bytecode, 但兩者的差別很細微). 適配性極好, 性能有所犧牲(原始的EVM 並不zk 友好, 電路化之後有很多性能上的挑戰需要攻克), 開發難度很高, 最大的亮點是架構安全性與最原生.
1. Polygon zkEVM Rollup
Polygon Hermez 此次開源的zkEVM Rollup 網絡的核心組件就是zkEVM. 它的整體技術方案與其他方案的對比和我們前文中所述的基本一致.
a) Polygon zkEVM Rollup 架構
Polygon zkEVM Rollup 的整體架構如下:
架構中的核心就是zkEVM 本身. zkEVM 會執行L2 的tx, 並且鏈下證明網絡會為zkEVM 中tx 的執行生成有效性證明, 最終狀態改變和證明會被提交上以太坊主網.
Polygon zkEVM Rollup 的關鍵組件為: PoE 共識算法, zkNode, zkProver, STARK 與SNARK 的Proof Builder, Rollup 跨鏈橋:
-
PoE 共識算法: 為了安全性, 效率, 與去中心化的提升, PoE 算法替換了Hermez 1.0 的PoD 算法. PoE 能與PoS 相結合, 保證Polygon zkEVM Rollup 出塊的去中心化與高效. 任何運行zkNode 的礦工都可以成為Sequencer, 而任何運行zkNode 與zkProver 的礦工可以成為Aggregator. 其中礦工出塊權利的gas fee 將使用$MATIC 進行交易.
-
zkNode: zkNode 是任何想參與Polygon zkEVM Rollup 網絡的礦工所需要運行的軟件. zkNode 會進行tx 的同步, 排序, 與驗證. 除此之外, 如果僅僅是想了解網絡的運行狀態, 而非參與, 就只需要運行一個read-only 節點, 無需運行zkNode.
-
zkProver: zkProver 是任何想作為Aggregator 角色參與Polygon zkEVM Rollup 網絡的礦工所需要運行的軟件. zkProver 顧名思義是一個生成zk 證明的證明器. 本質上, zkEVM 是多項式表示下的狀態轉換, zkProver 中包含了一個Main SM Executor 和多個Secondary State Machines, 來達到對狀態轉換的證明.
-
STARK 與SNARK Proof Builder: 兩個Proof Builder 會生成STARK 與SNARK 兩類不同證明. STARK (PIL STARK) 為狀態轉換批次的多項式約束的滿足生成證明, 而SNARK (SnarkJS) 會對STARK 證明的構建生成constant size 的證明, 從而以更低的成本發佈在鏈上.
Rollup 跨鏈橋: Polygon zkEVM Rollup 除了是一個傳統的Burn/Mint 跨鏈橋以外, 還可以作為與其他L2 進行跨鏈的橋樑.
b) Polygon zkEVM Rollup 設計
Polygon zkEVM Rollup 的設計核心思路就是:
-
去中心化(任何人都可以通過DA 來重建整個Rollup 的狀態, 沒有任何Censorship 和中心化控制的存在)
-
無需准入(任何人都可以參與到網絡中, 作為Sequencer 或Aggregator)
-
安全性(繼承以太坊的安全性, 通過以太坊網絡來幫助Rollup 狀態更新與證明的驗證)
-
性能與高效(通過PoE, 鏈下計算, 跨鏈橋合約的UTXO 模式結算, 以及各種密碼學優化方案進行性能提升)
c) Polygon zkEVM Rollup 特色
真正讓Polygon 方案脫穎而出的優勢有很多.
首先, Polygon 開發團隊間的協作天然地形成了合力. Polygon 的zk 宇宙中包含了Polygon Hermez (也就是我們所說的Polygon zkEVM 的主力開發團隊), Polygon Zero, Polygon Miden, 與Polygon Nightfall, 模塊化方案中更是包括了其他的很多團隊. 雖然三支zk 隊伍的方向略有不同, 但都是zkVM 領域的頂尖團隊, 在技術方案與架構上能直接地進行協作與互相幫助. 比如Polygon Hermez 選擇64-bit 的small field 的STARK 證明生成就是採取了Polygon Zero 的建議.
此外, Polygon zkEVM Rollup 在zk 技術上有很多創新. 比如兩門DSL zkASM 和PIL 的創造, 可以用於解釋EVM 字節碼與編碼多項式承諾; STARK 與SNARK 的結合, 發揮了STARK 的Scalable 和SNARK 的Succinct, 讓證明整體更快的同時最終鏈上空間消耗更小; 優化上, 採用了非常高效的Goldilocks 作為base field, 實現了Keccek 電路的並行計算, 使用Poseidon-hash Merkle tree 作為數據結構進行系統的存儲.
在證明生成去中心化與EVM 等同性上, Polygon Hermez 與Scroll 都以各自的方式做出了很大的努力. 要實現EVM 等同性, 就必須要將EVM 的操作碼通過zk 電路的形式來編寫, Polygon 通過zkASM 來解釋, 然後在zkExecutor 中執行(Geth 本質上一樣是解釋), 而Scroll 是直接可以對Geth 客戶端的Execution Trace 生成證明. 兩者在兼容性上實際沒有區別(runtime 的解釋或者轉譯不會對適配性有影響), 對比下, Polygon 的方案在EVM 等同性上做到了對證明節點更友好, 更高效, 對比之下, Scroll 側重於完全復用Geth 的安全基礎, 更方便審計.
我認為Polygon Hermez 的zkEVM 的方案在原生EVM 支持與性能之間擊中了Sweet Spot, 不僅通過zkASM 對EVM 進行解釋, 避免了EVM 底層開發複雜度極高的問題, 同時也通過不同角度的創新與優化讓性能不再是zkEVM 的致命問題.
2. zkEVM Rollup 方案的優勢
a) Layer 1 與Rollup
用戶苦Layer 1 gas 已久也, 在我們之前MEV 的研究裡, 討論到了一個理想的網絡的形態.
在一個理想的網絡裡:
-
任何人都可以發送交易(no censorship)
-
沒有垃圾信息(no spam)
-
費率非常低(low fees)
同時在Crypto 與區塊鏈的語境中, 網絡還需要是去中心化與性能可拓展的. 這就是一個理想區塊鍊網絡的三難格局:
-
low fees with no spam
-
decentralized with no permission and no censorship
-
scalable with general computation
Layer 1 的單體區塊鏈不可能同時做到以上幾點, 而Rollup 通過中心化出塊, 去中心化驗證做到了能最終實現性能高, 去中心化, 低費率的終局.
這也是我們在Rollup 文章中得出的結論.
b) Optimistic Rollup 與zk Rollup
在長遠的角度和實際的理論性能上限下, zk Rollup 相比OP Rollup 更具有可拓展性, 安全假設更加強.
Optimistic Rollup 所帶有的挑戰期讓一個tx 被真正finalized 的時間特別長, 而zk Rollup 的證明一經生成與驗證, 則可以直接讓tx 完全finalized.
Rollup 的OP 就像Layer 1 的PoW 與最長鏈原則, zk 像PoS 與其相關共識. 對於Layer 1 來說, PoW 與PoS 的機制都是可以的, 但追求性能的Rollup 在終局中更需要更強保證(通過質押或者密碼學) 的zk 機制來實現.
這也是我們在模塊化區塊鏈文章中得出的結論.
c) zk Rollup 與zkEVM Rollup
既然zk Rollup, 那麼為什麼現在火熱的都是Optimistic Rollup 呢?
因為目前運行的zk Rollup 並沒有通用計算能力, 如Loopring 等, 僅僅是停留在單一操作的階段, 開發者無法部署與移植智能合約到Rollup 中.
zk 證明主要用於證明操作的正確性, 一個zkEVM Rollup 的出現能培養像Optimistic Rollup 一樣的智能合約生態, 遠遠比普通的zk Rollup 轉賬擴容網絡靈活, 同時會比Optimistic Rollup 更具有安全性, 用戶體驗更好.
3. zkEVM Rollup 的用戶體驗
a) 天時地利人和
zkEVM Rollup 的出現是天時地利人和:
-
天時: Layer 1 擴容遭遇瓶頸, Optimistic Rollup 已探索了Rollup 的道路.
-
地利: 以太坊所提供的安全性與社會共識為zkEVM Rollup 的建立提供了完美土壤.
-
人和: EVM 生態佔據區塊鏈開發的主導地位, 無數zk 開發團隊為zkEVM 方案貢獻著力量.
那麼zkEVM Rollup 對於用戶來說到底什麼體驗上的提升呢?
首先我們需要定義一下用戶, 我認為, 用戶包含了開發者和普通用戶:
b) 開發者的用戶體驗
-
zkEVM ⇒ 不用學習新語言甚至不用寫新合約來開發DApp: Solidity 作為區塊鏈合約世界的第一語言, 有著無數的資源和生態, 且是最適合區塊鏈場景的語言, 這兩個優點結合起來, 遠遠優於Move 或Rust 等.
-
Rollup ⇒ 解鎖更多的應用場景: 用以太坊主網來做支付或者遊戲等應用由於性能和開銷問題, 是不太合適的. zkEVM Rollup 能讓更多的App 以DApp 的形態實現.
c) 用戶的用戶體驗
-
zk ⇒ 比PoS 網絡更強的安全性和比OP Rollup 更快的finality: 一些PoS 網絡靠代幣質押來保證安全性, 而它們的資金量較小, 所創造的安全性保證是不強的, zk 的密碼學通過數學來保證絕對的安全性. OP Rollup 的挑戰期讓一個tx 在一定時間內無法被確認, 而zk Rollup 對tx 的證明一經生成則確認了tx.
-
EVM ⇒ 完全一致的使用流程和基礎設施: 除了需要在錢包和應用內切換網絡以外, 用戶所有的使用流程都會與在主網上一模一樣, 無需額外的學習成本, 只需要像之前一樣使用應用.
-
Rollup ⇒ OP 和zk Rollup 都可以提供L2 的instant finality: 從用戶體驗上來說, 基本還沒反應過來, 交易就已經被執行完成. 因此用戶無需再等待十幾秒或者十幾分鐘的時間來繼續發送下一個交易. 在應用使用上, 用戶就可以更加無負擔地進行鏈上活動, 進行高頻的交易或者鏈上游戲等.
d) Polygon zkEVM Rollup 用戶體驗
在未來, 用戶與開發者在zkEVM Rollup 上的體驗會無限接近於以太坊主網, 同時體驗會在低gas 與快速確認的優勢下更加地迅捷和流暢.
Polygon zkEVM Rollup 的計劃中, ETH 始終會作為Rollup 的gas fee 計價單位, 而MATIC 會作為質押所需要的代幣, 這是非常優秀的一個決策:
-
更好的價值捕獲: Polygon 在運營PoS 網絡的經驗中得出的結論是質押所帶來的價值捕獲優於直接使用代幣作為gas.
-
更好的使用體驗: ETH 作為Rollup 代幣, 能讓L1 的用戶或者跨鏈橋項目免於過程中額外的Swap 步驟(大部分人會直接跨ETH). 同時ETH 作為gas 也更具有正統性.
-
更顯著的差異化: Polygon zkEVM Rollup 會與Polygon PoS 有更明顯的差異, 同時機制的不同確實也需要這樣的差異, 來讓用戶選擇更適合自己的方案.
同時, Polygon 所為zkEVM Rollup 帶來的還有:
-
熟悉的“環境”: 用戶不用關心底層的技術改變, 一切都會和Polygon PoS 非常相似, 只是各方面來說zkEVM Rollup 會更快, 更安全, 更好用. 開發者也可以參加著熟悉的黑客松, 享受著Polygon 所積累的豐富開發生態與社群.
4. zkEVM Rollup 的未來
對於zkEVM Rollup 方案的未來, 我們會分析技術上的未來, 以及這個方案的終局形態到底是什麼.
a) zkEVM 技術
Vitalik 對這個話題有著非常深刻的見解. 在他所概括的四種zkEVM 分類中, 沒有真正的好與壞的方案, 只是有不同的技術上的取捨: 更貼近底層但更慢, 更缺少兼容性但更快.
長遠來看, zkEVM 的工程化落地和優化只是時間上的問題. 所有方案都有著自己的價值. Vitalik 也說這些不同方案或許在時間的推移中慢慢轉型, 直到找到適合自己定位的哪一種.
最好的未來, 就是我們擁有非常多個不同風味的zkEVM, 從而開發者可以選擇自己喜歡的那一種, 以太坊主網也可以去通過他們的創新來做自我提升. 越多創新就是越好的未來.
b) Rollup 技術
Rollup 技術的終局會是zkEVM Rollup, 而Optimistic Rollup 會繼續有著自己的一席之地, 甚至會有zkEVM 與Optimistic 混合的Rollup (個人認為一種機制其實足矣).
zkEVM Rollup 在很多方面都比Optimistic Rollup 好. 但是Optimistic Rollup 最大的好處就是建立起來更簡單, Optimism Bedrock 和Geth 只有五百行代碼的區別, 任何了解Geth 的工程師都可以很輕鬆的搭建一條Optimistic Rollup, 或者未來在Celestia 上使用Optimint 等引擎, OP Rollup 這方面的道路已經被全面探索過. 而zkEVM Rollup 複雜度更高, 學習門檻更高, 還沒有真正完全落地的經驗與方案.
c) 技術…不是最重要的
聊了很多的技術, 但是技術肯定不是最重要的. zkEVM Rollup, Rollup, 以太坊, 乃至區塊鏈的瓶頸從來不是工程落地或者DA 或者共識上的技術瓶頸, 而是用戶.
舉個Web2 的例子(感謝Nelson): 蘋果的App Store. 所有的開發者都會優先考慮在App Store 上發布應用, 但是App Store 的審核非常不穩定, 經常會隨機拒絕應用的上傳. 相比之下, 安卓的應用市場, 或者亞馬遜的應用市場審核就友好很多. 但是為啥大家都想發佈到App Store 呢? 因為App Store 有成熟且穩定的用戶群體! 無論安卓或者亞馬遜應用市場的開發者體驗做得再天花亂墜, 開發者都還是會湧向有著用戶的平台.
軟件開發的目標不是優雅的API, 100% 的Test Coverage, 最好的編程語言, 而是: 解決更多的問題和提供更多的價值. 這就意味著需要面向更多的用戶.
d) 終局形態
那麼在我們的想像中, 一個真正終局的zkEVM Rollup 會是怎麼樣的呢?
-
終局的基礎: 技術
-
zkEVM 層面: 所有的方案只要能落地都是好的, 但不必過於原教旨主義. 以太坊的EVM 是一個非常Legacy 的陳舊系統(當然依舊是頂尖的方案), 儘管去對zkEVM 進行更多的改善和創新. 除此之外zkEVM 需要更多的優化, 減小proving overhead 來趕上Optimistic 方案.
-
Rollup 層面: 保證優先滿足區塊鏈的核心價值(去中心化, 安全性), 而不是一味對TPS 進行軍備競賽.
-
終局的核心: Social Consensus
-
生態層面: 最理想的情況下就是所有以太坊主網的應用都遷移到某個Rollup 上. 如果這個zkEVM Rollup 本身就具有良好的生態基礎, 那麼在啟動上就會拉開其他方案非常多. 在這個方面, 不得不說, Polygon 有著巨大的優勢.
-
開發者層面: EVM 兼容性不是決定性因素, 而是哪個zkEVM Rollup 能最快地接觸到開發者, 讓開發者使用它作為網絡來進行開發. 從來不是網絡去順應開發者, 而是開發者去挑一個整體最快或者最好的網絡, 然後去慢慢適應這個網絡的開發.
-
用戶層面: 用戶的心智與社會共識非常重要. 除了Reach 開發者, 誰最先最有效的Reach 到用戶也是最重要的因素. 一個成功的網絡不應該成為技術宅對技術方案優越性的自嗨, 而是真正地為用戶解決問題, 創造價值.
zkEVM Rollup 都有光明的未來.