Hermez 1.0 是以太坊主網上有史以來第一個去中心化的 ZK Rollup。Polygon Hermez 一直忙於構建 Hermez 2.0 —— 一個以太坊虛擬機(EVM)的 ZK 實現,這也是以前從未完成過的事情。

原文:ZKVerse: Deep Dive Into Polygon Hermez 2.0

作者: Polygon Team

編譯: zCloak Network

原用標題(譯後)深入了解 Polygon Hermez 2.0

什麼是 Polygon Hermez 2.0 ?

Polygon Hermez 2.0,以下簡稱 Hermez 2.0,是一個去中心化的以太坊 L2 可擴展性解決方案,利用加密的零知識技術為鏈外交易計算提供驗證和快速終態。

Hermez 1.0 已於 2021 年 3 月上線,是去中心化的、無需許可的,並已擴展到 2000 tps 。所以它成功地完成了設計之初的目的,即擴大 ERC-20 tokens 的支付和轉移規模。

該團隊一直致力於將 Hermez 2.0 作為一個零知識以太坊虛擬機(zkEVM)來開發,一個以透明的方式執行以太坊交易虛擬機,包括具有零知識證明驗證的智能合約。雖然採取這種革命性的設計方法是一個艱難的決定,但其目的是最大限度地減少用戶和 dApps 在使用該解決方案時的摩擦。

這個方法需要重新創建所有 EVM 操作代碼,以便透明地部署現有的以太坊智能合約。為此,一套新的技術和工具正在被創建和設計中。

整體架構

Hermez 2.0 的主要功能是提供智能合約支持。

它將執行狀態變化,這些變化來自於用戶發送給以太坊 L2 的交易的執行,並隨後產生有效性證明,以證明鏈外狀態變化計算的正確性。

Hermez 2.0 系統是一個 zkEVM ,由幾個基本組件組成:共識算法、zkNode 軟件、zkProver、LX-to-LY 橋、排序器(Sequencers)和聚合器(Aggregators)(這兩者是達成網絡共識所必須的參與者),以及 Hermez 2.0 網絡中創建交易的活動用戶。

因此,Hermez 2.0 的框架架構如下。

圖 1:Hermez 2.0 框架概述

共識算法

令人好奇的是"Hermez 2.0 使用什麼共識算法?" 也就是說,Hermez 2.0 的節點如何就將哪個區塊添加到鏈上而達成一致。

Hermez 2.0 和其早期版本一樣都使用捐贈證明(PoD),是被設計為去中心化的。但舊的 PoD 已讓位於一種稱為效率證明(PoE)的新共識算法。

為什麼需要取代 PoD ?

PoD 模型失寵有幾個原因。

首先,PoD 模型由於其拍賣協議的複雜性,很容易受到攻擊,特別是在自舉階段。此外,由於網絡在任何時間點都是由任何未經許可的參與者控制的,如此如果有第三方變成惡意的或遇到操作問題,網絡就有可能遭受服務水平的延遲。

其次,事實證明,拍賣協議對協調器和驗證者來說不僅很複雜而且成本也很高。更重要的是,要考慮到並不是每一個相互競爭的驗證者都能得到獎勵,而只是最有效的驗證者才會得到獎勵。

第三,選擇"最佳"運營商的方式相當於贏家通吃模式,這對性能稍差的競爭者不公平。這是因為僅有少數幾個被選定的運營商會比其它運營商更經常地驗證批,這違背了網絡去中心化的理想。

為什麼傾向 PoE ?

PoE 模型的簡單性是其受到青睞的主要原因。

它解決了許多在 PoD 模型中遇到的挑戰,如上面討論的設計攻擊。

PoE 的戰略實現能保證網絡:

  • 無需許可的生成 L2 批,
  • 是高效的,這是網絡整體性能的關鍵,
  • 達到可接受的去中心化成程度,
  • 免受惡意攻擊,特別是來自驗證者的攻擊,並且
  • 保持整體驗證工作和網絡中價值的均衡

目前正在探索將 PoE 與 PoS 耦合的可能性。

數據可用性

一個典型的 zk-rollup 架構要求數據和有效性證明都發佈在鏈上,其中數據用於用戶重建全狀態。

然而鑑於以太坊的設置,在鏈上發布數據意味著產生 gas 費用。這導致了一個艱難的選擇:完整的 zk-rollup 配置或一個負擔得起的網絡。

除非證明模塊可以被大幅加速以減輕驗證者的成本,否則混合模式是必然的。

儘管團隊還沒有最終確定最佳共識配置,但明顯的可選項是:

  1. Validium 選項:鏈上證明,但數據存儲在其它地方。
  2. Volition 選項:對某些交易進行完全的 zk-rollup,數據和證明都在鏈上,而對其它交易只是證明在鏈上。

PoE 智能合約

Rollups 需要兩個進程,交易分批以及驗證該分批的交易。Hermez 2.0 將使用排序器和聚合器來分別執行這兩個進程,即交易的分批和驗證。

也就是說,排序器會將交易請求收集成批次,然後提交到 PoE 智能合約中,而聚合器會檢查交易批次的有效性並提供有效性證明。

因此 PoE 智能合約有兩個基本調用:一個調用是接收來自排序器的批次,另一個調用是給聚合器以請求驗證批次。見下圖 2。

PoE 代幣經濟學

PoE 智能合約對排序器和聚合器提出了一些要求。

排序器的約束:

  • 任何運行 zkNode 的人,也就是運行 Hermez 2.0 節點所需軟件的人,都可以成為一個排序器。
  • 每個排序器必須支付 $Matic 費用,以獲得創建和提交批的權利。 
  • 提交一個由有效交易組成的有效批的排序器,由交易請求者(網絡用戶)支付激勵費用。
  • 具體來說,排序器收集用戶的 L2 交易,將其預處理為一個新的 L2 批,然後將其作為有效的 L2 交易提交給 PoE 智能合約。

聚合器的約束:

  • 聚合器的任務是為排序器提交的 L2 交易生成有效性證明。
  • 除了運行 Hermez 2.0 的 zkNode 軟件外,聚合器需要有專門的硬件來創建零知識有效性證明。我們在這裡把它為 zkProver。
  • 最先提交某批或某幾批的有效性證明的聚合器,可獲得由該批的排序器支付的 $Matic 費用。
  • 聚合器只需表明他們驗證交易的意圖,然後根據他們自己的策略生成有效性證明參與比賽。
圖 2:簡化的 PoE

zkNode

網絡需要發布實現同步的客戶端,並涵蓋作為排序器或聚合器的參與者角色。zkNode 即是這樣一個客戶端,運行 Hermez 2.0 節點所需的軟件。

Polygon Hermez 2.0 的參與者將選擇他們的參與方式:僅僅作為一個節點以了解網絡的狀態,抑或是作為排序器或聚合器中的任何一種角色參與到生產批的過程中。聚合器既要運行 zkNode 也需應用 zkEVM 的核心部分進行驗證,這被稱為 zkProver(在下圖 3 中被標為 Prover)。

zkNode 除了排序和驗證進程,還可通過一個叫做同步器的子組件,支持批與批的有效性證明被添加到 L1 之後的同步。

因此,同步器(Synchronizer)負責從以太坊區塊鏈讀取事件,包括新的批,以保持狀態完全同步。從這些事件中讀取的信息必須存儲在數據庫中。同步器還處理可能的存在的重排情況,這將通過檢查最新的 ethBlockNum  和最新的 ethBlockHash  是否同步來判斷是否需要重排。

圖 3:Hermez 2.0 zkNode

zkNode 的架構是模塊化的,實現瞭如上圖 3 所描述的一系列功能。

遠程調用(RPC)接口是與以太坊的 JSON RPC 接口兼容。它的實現是為了整合 zkEVM 與現有的工具,如 Metamask、Etherscan 和 Infura。遠程調用(RPC)將交易添加到池中,並使用只讀方法與狀態進行交互。

狀態子組件實現了 Merkle Tree 並連接到數據庫後端。它檢查區塊級別的完整性(例如:與 gas、區塊大小等有關的信息)和一些交易相關的信息(如簽名、足夠的餘額等)。狀態還將智能合約代碼存儲到 Merkle Tree 中,並使用 EVM 處理交易。

zkProver

Hermez 2.0 採用了最先進的零知識技術。它將使用一個被稱為 zkProver 的零知識驗證器,該驗證器計劃可在任何服務器上運行,並與大多數消費級硬件兼容。

每個聚合器都將使用 zkProver 來驗證批並提供有效性證明。

zkProver 有自己的詳細架構。它將主要由主狀態機執行程序、一組二級狀態機(每個都有各自的執行程序)、STARK-proof 構建程序和 SNARK-proof 構建程序組成。Hermez 2.0 zkProver 的簡化圖見下圖 4。

圖 4:zkProver 簡化圖

簡言之,zkEVM 以多項式形式表達狀態變化。因此,每個被提交的批都必須滿足的約束,實際上是多項式約束或多項式等式。也就是說,所有有效的批必須滿足某些多項式約束。

主狀態機執行程序

主執行程序處理 zkEVM 的執行。在這裡,EVM 的字節碼用一種新的零知識彙編語言(zkASM)進行解釋,該語言是由 Hermez 2.0 團隊專門開發的。執行程序還設置了每批有效交易必須滿足的多項式約束。該團隊專門開發的另一種新語言,稱為多項式等式語言(PIL:Polynomial Identity Language),用於編碼所有的多項式約束。

二級狀態機的集合

證明交易正確性所需的每個計算在 zkEVM 中都被表示為一個狀態機。zkProver 是整個項目中最複雜的部分,由幾個狀態機組成:從執行逐位功能的狀態機(如 XORing、padding, 等)到執行哈希的狀態機(如 Keccak、Poseidon),甚至到簽名驗證(如 ECDSA)。

因此,二級狀態機的集合是指 zkProver 中所有狀態機的集合。它的本質不是一個子組件,而是單個二級狀態機的各種執行程序的集合。它們是:二進制 SM、內存 SM、存儲 SM、Poseidon SM、Keccak SM 和算術 SM。這些 SM 之間的依賴關係見下圖 5。

根據每個 SM 負責的具體操作,一些 SM 同時使用 zkASM 和 PIL ,而另一些則只使用其中一個。

圖 5:Hermez 2.0 狀態機

STARK-proof 構建程序

STARK 是 Scalable Transparent ARgument of Knowledge 的縮寫,是一個證明系統,它使證明人能夠在無需可信設置的情況下生成可驗證證明。

STARK-proof 構建程序指的是用於生成 zk-STARK proof 的子組件, zk-STARK proof 是證明所有多項式約束得到滿足的 zk-proof。

zk-STARKs 被用來證明批滿足狀態機產生的多項式約束。特別是,zkProver 利用 FRI 以促進加速 zk-STARK 的證明過程。

SNARK-proof 構建程序

SNARK 是 Succinct Non-interactive ARgument of Knowledge 的縮寫,也是一個產生可驗證證明的證明系統。

由於 STARK-proof 比 SNARK-proof 大得多,所以 Hermez 2.0 zkProver 使用 SNARK-proof 來證明 STARK-proof 的正確性。因此,SNARK-proof 被作為有效性證明發佈到 L1 上進行驗證要便宜得多。

團隊的目的是生成 CIRCOM 電路,該電路可用來生成或驗證 SNARK-proof 的。至於是使用 PLONK 還是 GROTH16 SNARK 證明,還有待決定。

LX-to-LY 橋

一個典型的智能合約橋是兩個智能合約的組合,分別部署在兩條鏈上。

Hermez 2.0 的 L2-to-L1 智能合約橋是由 L1 合約橋和 L2 合約橋組成,這兩個合約本質上是相同的,除了各自的部署地點不同。L1 合約橋在以太坊主網上以管理 rollups 之間的資產轉移,而 L2 合約橋在一個特定的 rollup 上負責主網和 rollups 之間的資產轉移。

L1 合約橋

L1 合約橋執行 bridge  和 claim  兩個操作。bridge 操作將資產從一個 rollup 轉移到另一個 rollup,而 claim  操作用於合約向任何 rollup 提出聲明的時候。

L1 合約橋需要 globleExitTree(全局退出樹)和 mainnet exit tree(主網退出樹)這兩個 Merkle Tree 來執行上述操作。globleExitTree   包含了所有 rollups 退出樹的所有信息,而 mainnet exit tree  有與主網互動的用戶的交易信息。

一個名為 L1 全局退出根管理器的合約,負責管理跨多網絡的退出根。

圖 6 : 退出樹結構

L2 智能合約橋

其次,L2 合約橋將被部署在支持 ETH 的 L2 上。ETH 將被設置在創世紀以實現本地 ETH 的鑄造和燃燒。

L2 合約橋還需包含在 globleExitTreeMerkle Tree 中的所有 rollup 退出樹的所有信息。在這種情況下,一個名為 L2 全局退出根管理器的智能合約負責管理跨多網絡的退出根。

請注意,當一個批次在 L1 的 PoE 智能合約中被驗證時,rollup 根出在 L1 全局退出根管理器中被更新。L2 合約橋處理 bridge  和 claim  操作的 rollup 部分,同時與 globleExitTree  和 rollup exit tree   進行互動,以更新退出根。

結束 LX-to-LY 橋

通常情況下,智能合約橋是 L2-to-L1 橋,但 Hermez 2.0 橋更具靈活性和可互操作性。它可以作為任意兩個 L2 鏈之間的橋樑,即 L2-A 到 L2-B;或任意 L2 到 L1 的橋樑,即 L2-X 到 L1(此處 L1 指以太坊區塊鏈)。因此,它允許資產在多個 rollups 之間轉移。

Hermez 2.0 的設計理念

上述關於工程和實現的決定將幫助 Hermez 2.0 實現其設計理想:一個無需許可的、去中心化的、安全的、高效的、可驗證區塊數據的網絡。

開發工作旨在實現無許可性,即允許任何擁有 Hermez 2.0 軟件的人參與到網絡中。例如,共識算法將使每個人都有機會成為排序器或集合器。

數據可用性對於去中心化至關重要。在去中心化中,每個用戶都有足夠的數據來重構一個 Rollup 的全狀態。如上所述,團隊仍需決定數據可用性的最佳配置。目的是確保沒有審查制度,沒有一方可以控製網絡。

Hermez 2.0 的設計考慮到了安全性。L2 解決方案的大部分安全性繼承自以太坊,智能合約將保證任何執行狀態改變的人都必須:第一,正確地執行;第二,創造一個證明以證實狀態改變的有效性;第三,利用鏈上的有效性證明進行驗證。

效率改善和整體戰略

效率是網絡性能的關鍵。因此 Hermez 2.0 應用了幾種實施策略來保證效率:

  1. 部署 PoE 以激勵最有效的聚合器參與證明生成過程中。
  2. 所有計算在鏈下執行,鏈上僅保留必要的數據和 zk-proofs。

其它各種策略在 Hermez 2.0 系統的特定組件中實現。比如說:

  1. 智能合約橋的實現方式僅使用了退出樹根,例如 UTXO 方式的結算。
  2. 在 zkProver 中利用專門的加密原語,以加快計算速度和最小化證明大小:
  • 運行一個特殊的零知識彙編語言(zkASM)來解釋字節碼。
  • 使用例如 zk-STARKs 這樣的零知識工具進行證明會非常快,儘管其產生的證明大小非常大。因此,與其將相當大的 zk-STARK proofs 作為有效性證明發佈到 L1,不如用一個 zk-SNARK 來證明 zk-STARK proofs 的正確性。這些 zk-SNARKs 反過來又被作為狀態變化的有效性證明發佈到 L1,如此 gas 成本從 500 萬減少到了 35 萬。

結語

鑑於 EVM OPCODE 兼容性,Hermez 2.0 被設計為可無縫執行智能合約並能有效驗證狀態變化。它不僅有希望做到安全和高效,且還能實現有競爭力的去中心化。

為努力實現快速地證明,以及實現用於快速驗證的簡潔性證明,團隊專注於 zkProver 的優化。

該團隊還使得各個不同的 Polygon 團隊一起協作共事,這些團隊同時也在研究實現以太坊可擴展性的 zk-rollups 解決方案。

團隊的下一步工作是為公共測試網做準備,計劃在 2022 年中期啟動該測試網。

免責聲明:作為區塊鏈信息平台,本站所發布文章僅代表作者及嘉賓個人觀點,與 Web3Caff 立場無關。本文內容僅用於信息分享,均不構成任何投資建議及要約,並請您遵守所在國家或地區的相關法律法規。