原文作者:Blockchain Academy
原文來源:Geekcartel
zkEVM的背景和意義
以太坊是一個去中心化的計算機平台,允許開發人員構建分佈式應用程序和智能合約。然而,由於以太坊網絡的限制,包括吞吐量限制和高費用,這些應用程序的規模和性能受到了限制。
為了解決這些問題,以太坊社區開發了許多二層解決方案,其中包括zkEVM。 zkEVM是一種基於零知識證明的以太坊虛擬機,它可以在不犧牲去中心化和安全性的前提下提高以太坊網絡的吞吐量和降低交易費用。
zkEVM的核心思想是利用零知識證明來驗證和執行智能合約,而不需要每個節點都執行所有的計算。相反,只有證明驗證者需要進行計算,然後將驗證結果廣播到網絡中的其他節點。這樣,可以大大減少網絡負載和執行成本,並提高網絡的吞吐量和性能。
零知識證明(ZKP)在節省冗餘計算、壓縮鏈上空間和保護用戶隱私方面體現了重要的應用價值。幾種常見的零知識證明實現方法,包括zk-SNARK、zk-STARK、PLONK和Bulletproofs。
其中,zk-SNARK是一種簡潔非交互零知識證明,它通過將生成的證明數據量壓縮到比實際證明數據量小的程度,並且證明者只需發送一條簡單的信息給驗證者來完成驗證,從而實現了在節省計算開銷和交互次數的同時保護用戶隱私的目的。而zk-STARK則是一種可擴展透明零知識證明,相比於zk-SNARK,它允許開發人員將計算和存儲轉移到鏈下來提高可擴展性,在計算速度和大小方面更具可擴展性,同時還能夠抵禦量子計算機的攻擊。
zkEVM作為一種新的解決方案
zkEVM可以在保護交易隱私和完整性的同時,不需要犧牲性能和去中心化。它利用零知識證明來驗證和執行智能合約,證明驗證者只需要進行計算,而不需要每個節點都執行所有計算,從而大大降低了網絡負載和執行成本。此外,zkEVM的實現可以充分利用以太坊網絡的現有基礎設施和生態系統,可以很容易地集成到現有的以太坊應用程序中。
zkEVM的基本原理和設計
ZkEVM 是zkRoll-up的一部分,這是以太坊第2 層擴展解決方案,通過將計算和狀態存儲轉移到鏈下來提高吞吐量。 ZK-rollup 向以太坊提交交易數據以及驗證鏈下交易批次有效性的零知識證明。
早期的 ZK-rollup 缺乏執行智能合約的能力,並且受限於簡單的Token交換和支付。但是,隨著與EVM 兼容的零知識虛擬機的引入,ZK-rollups 開始支持以太坊dApp。
zkEVM的基本原理是使用零知識證明來驗證智能合約執行的結果,從而保證交易的隱私和完整性。與傳統的以太坊網絡不同,zkEVM的驗證和執行智能合約的過程是分離的,即驗證者只需要驗證零知識證明,而不需要真正執行智能合約。以下是zkEVM的基本設計:
1、零知識證明生成器:zkEVM的用戶需要使用一個零知識證明生成器來生成零知識證明。這個生成器的目的是證明交易的正確性和合法性,包括交易的簽名、輸入和輸出等。
2、零知識證明驗證器:zkEVM的驗證者需要使用一個零知識證明驗證器來驗證用戶生成的零知識證明。驗證器需要驗證證明的正確性,包括證明的格式、證明的數據完整性和證明的邏輯正確性等。
3、智能合約執行器:zkEVM的智能合約執行器是一個離線計算的過程,即計算可以在離線狀態下完成。執行器使用輸入和智能合約的字節碼來計算輸出,並將輸出作為計算結果返回給零知識證明生成器。
4、隱私保護:zkEVM使用零知識證明來保護交易的隱私和完整性,證明只需要證明計算的正確性,而不需要暴露輸入和輸出的詳細信息。
通過這種設計,zkEVM可以有效地保護交易的隱私和完整性,同時具有高效性和可擴展性。它可以在不降低去中心化和性能的情況下,為以太坊網絡帶來更高的吞吐量、更低的交易費用和更快的確認時間。
zkEVM的技術實現
zkEVM在以太坊二層網絡中的技術實現,包括交易驗證和數據驗證
交易驗證
交易驗證是指驗證交易的正確性和合法性,包括驗證交易的簽名、輸入和輸出等。在zkEVM中,交易驗證採用零知識證明技術實現,具體實現過程如下:
(1)生成證明:zkEVM用戶使用zk-SNARKs算法生成交易的零知識證明,證明交易的正確性和合法性,證明通常包括交易的簽名、輸入、輸出等。
(2)驗證證明:zkEVM的驗證者使用驗證器驗證用戶生成的零知識證明,驗證證明的正確性。在驗證證明的過程中,驗證者只需驗證證明的正確性,而不需要暴露交易的具體信息,保護了交易的隱私。同時,由於zkEVM使用了零知識證明技術,驗證者也無法獲取交易的輸入和輸出信息。
數據驗證
數據驗證是指驗證以太坊二層網絡中存儲的數據的正確性和完整性,包括驗證區塊頭、交易狀態樹、存儲狀態樹等。在zkEVM中,數據驗證採用merkle樹結構實現,具體實現過程如下:
(1)Merkle樹的構建:zkEVM在以太坊二層網絡中採用了一種基於Merkle樹的數據存儲結構,通過將交易和狀態信息編碼為葉子節點,然後在樹中生成和存儲Merkle樹,實現交易和狀態信息的快速查詢和驗證。
(2)Merkle樹的驗證:在驗證Merkle樹的過程中,zkEVM需要驗證Merkle樹的根哈希和葉子節點哈希的正確性。由於Merkle樹具有高效的驗證性能,zkEVM可以快速驗證以太坊二層網絡中存儲的數據的正確性和完整性。
通過交易驗證和數據驗證,zkEVM保證了以太坊二層網絡中交易的正確性、隱私和數據的完整性,實現了高效、去中心化和可擴展的以太坊二層網絡。
zkEVM的等效性
zkEVM可以模仿與以太坊主網相同的交易執行環境,但它的EVM等效級別與傳統EVM有所不同,主要分為語言水平等效、字節碼級等效、共識水平等效和完全等效四個級別。
語言水平等效的zkEVM可以將EVM友好編程語言(如Solidity)翻譯成為生成零知識證明而優化的定制語言,因此可以實現與EVM的語言級兼容性。但這種類型的zkEVM在為用戶和智能合約開發人員提供與EVM交互相同的體驗方面最受限制。
字節碼級等效的zkEVM需要ZK Rollups來解釋從更高級語言(例如Solidity)編譯下來的EVM字節碼,並模仿與EVM相同的高級編程語言和低級字節碼,從而實現更深層次的兼容性。這些類型的zkEVM構建起來更複雜,需要更高級的工程設計,但它們與基於EVM的應用程序和工具相互兼容。
共識水平等效的zkEVM可以實現對EVM的最高原生兼容性,它的想法是由zkEVM生成的加密證明不需要以任何身份驗證,就能被EVM接受。
完全等效的zkEVM需要與EVM在所有方面都完全兼容,這通常會導致創建低效且昂貴的ZK系統,因此,通常需要在成本和效率之間進行權衡。目前,已有兩種字節碼兼容的zkEVM,分別是Polygon zkEVM和Scroll zkEVM,它們在不同程度上實現了字節碼級等效,但隨著時間的推移,這些實現正朝著完全兼容的方向努力。
zkEVM的結構
zkEVM是一種基於零知識證明的可擴展性解決方案,它將智能合約的執行和驗證遷移到了L2 鏈上,從而實現了更高的交易吞吐量和更低的交易成本。 zkEVM由三個部分組成:執行環境、證明電路和驗證者合約。
執行環境類似於以太坊虛擬機(EVM),它負責在zkEVM 中執行智能合約,並根據初始狀態和當前交易計算出新的最終狀態。
證明電路用於生成零知識證明,驗證在執行環境中計算交易的有效性。證明生成過程是通過使用前狀態、交易輸入和後狀態信息來作為輸入完成的。之後,證明者獲得該特定狀態轉換的有效性簡潔證明。
驗證者合約用於接收提交的有效性證明,並確認輸入和輸出是正確計算的。它在L1 鏈上部署,並與zk-rollups 集成,確保zkEVM 的安全性和可靠性。
zkEVM 操作碼是一種低級機器指令,用於在EVM 兼容的zk-rollups 中執行程序。與EVM 一樣,用高級語言編寫的合約必須被編譯成虛擬機可以解釋的低級語言(字節碼),當在虛擬機中部署程序的時候,該字節碼指定了執行程序時所需使用的操作碼。
為了使操作碼更適合在零知識證明電路中使用,有兩種常見的方法。第一種方法是為原生EVM 操作碼建立零知識電路,這需要在算術電路中實現所有的EVM 指令集,是一項複雜而費時的任務。第二種方法是為零知識證明計算創建新語言和自定義操作碼,開發人員直接用新語言編寫合約,或者將Solidity 源代碼編譯為自定義的zkEVM 操作代碼。儘管第二種方法通常更容易實現,但可能會導致開發人員無法訪問現有的以太坊基礎設施和資源。
zkEVM的優勢
zkEVM是一種基於零知識證明技術的以太坊二層網絡隱私保護技術,具有以下優點和優勢:
1、高度的隱私保護:zkEVM採用零知識證明技術,可以實現高度的隱私保護。具體來說,zkEVM通過零知識證明技術實現了以下兩個方面的隱私保護:
2、交易隱私保護:zkEVM將交易信息放到鏈外處理,只將交易的驗證結果存儲在鏈上,從而保護了交易的隱私。
3、數據隱私保護:zkEVM將所有數據都加密處理,並將其存儲在鏈外的zkSNARK中,只將數據的哈希值存儲在鏈上,從而保護了數據的隱私。
4、高度的安全性:zkEVM採用零知識證明技術,可以實現高度的安全性。具體來說,zkEVM採用zkSNARK來驗證交易和數據,並使用託管模式來管理數據和私鑰,從而保證了交易和數據的安全性。同時,zkEVM還使用了多方安全計算技術和密鑰隔離技術來防止攻擊者的攻擊和數據洩露。
5、高效的交易速度和吞吐量:zkEVM將交易的計算和數據存儲移動到鏈外,從而提高了交易的速度和吞吐量。具體來說,zkEVM採用了分佈式計算和存儲技術,使得交易的計算和數據存儲可以在多個節點上進行,並使用zkSNARK技術實現高效的驗證和認證,從而實現高效的交易處理。
6、高度的兼容性和可擴展性:根據協議規則,所有驗證節點必須在以太坊虛擬機中重新執行所有計算,以確保以太坊節點可以獨立驗證程序的正確性。但這種方法限制了以太坊網絡的可擴展性,因為它只能處理大約15-20個交易。
而與EVM兼容的ZK-rollup可以解決以太坊的吞吐量問題,而不會破壞網絡安全。與其他擴容協議一樣,ZK-rollups不受以太坊共識協議規則的負擔,並且可以優化執行速度。一些估計表明,ZK-rollups每秒可以處理約2000筆交易,而不會產生以太坊高額的費用。
7、更快的確定性和資本效率:ZK-rollup 相對於op-rollup 還有另一個優勢,即更快的最終確定性。在區塊鏈上,確定性是指交易不可逆轉所需的時間,只有當網絡參與者有客觀證據證明交易的有效性時,才能最終確定。
使用ZK-rollups,在zkEVM 中執行的交易通常在發佈到以太坊後立即完成。由於每個交易批次都帶有即時可驗證的有效性證明,因此以太坊主鏈可以快速應用狀態更新。
與之相比,樂觀匯總僅在沒有證明的情況下發布VM 事務,因此必須經過質詢期才能使事務達到最終確定性。挑戰期一般為1-2 週,在此期間,任何人都可以在交易提交到以太坊後對其進行挑戰。較慢的最終確定性會對用戶體驗產生不良影響。例如,在延遲期到期之前,用戶不能從匯總中提取資產。雖然流動性提供者可能會解決這個問題,但如果提款涉及高價值資產甚至NFT,則可能無效。
相比之下,zkEVM 沒有上述問題。更快的最終確定性非常適合高級用戶,例如需要無縫移動資產(尤其是在L1 和L2 之間)的NFT 交易者、DeFi 投資者或套利交易者。
zkEVM的難點
構建zkEVM 面臨的主要困難來自於EVM 虛擬機設計的初衷並不包含零知識計算的考慮。由此帶來的一些特性對於證明電路的設計來說不太友好,主要包括以下四個方面:
- 特殊操作碼
- EVM 在程序執行和錯誤處理等操作中使用了特殊的操作碼,如CALL、DELEGATECALL、REVERT、INVALID,這些操作碼使得證明電路設計變得更加複雜。
- 基於堆棧的架構
- EVM 使用的基於堆棧的結構雖然比基於寄存器的結構簡單,但是增加了證明計算的難度。為此,一些知名的zkVM,如ZkSync 和StarkWare 的StarkNet,選擇使用基於寄存器的模型來實現zkEVM。
- 存儲開銷
- EVM 的存儲佈局依賴於Keccak 函數和Merkle Patricia Trie,這兩者的證明開銷都很高。為了避免這個問題,一些zkVM,如ZkSync,試圖通過替換Keccak 256 函數來解決,但這可能會破壞與現有以太坊工具和基礎設施的兼容性。
- 證明成本
- 即使解決了上述問題,構建zkEVM 仍需要處理生成證明的過程,而生成零知識證明需要專門的硬件以及大量時間、金錢和精力成本。
這些困難因素阻礙了建立與EVM 兼容的zkEVM。不過,隨著零知識技術的不斷突破,在一定程度上可以緩解這些問題帶來的影響,使人們對zkEVM 解決方案重新產生興趣。
zkEVM賽道項目
以下是不同類型的zkEVM 協議及其工作原理的比較。
Polygon zkEVM
Polygon Hermez是一個基於Polygon ZK-rollup的零知識虛擬機,旨在支持EVM兼容性。它將EVM字節碼編譯為微操作碼並在uVM中執行,使用SNARK和STARK證明來驗證程序執行的正確性。 Polygon Hermez zkEVM使用STARK證明電路來生成狀態轉換的有效性證明,然後將其提交給以太坊進行驗證。結合STARK和SNARK證明的使用,能夠更快地生成STARK證明,而SNARK證明的驗證成本更低。
zkSync zkEVM
zkSync是一個與EVM兼容的ZK-rollup,由Matter Labs開發並提供支持。它使用將Solidity編寫的合約代碼編譯成中間語言Yul,並將其重新編譯為專門為zkSync的zkEVM設計的自定義、電路兼容的字節碼集。與Polygon Hermez一樣,zkSync zkEVM在語言級別而不是字節碼級別實現EVM兼容性。例如,zkSync的zkEVM不支持傳統的加法操作碼(ADDMOD、SMOD、MULMOD)。
Scroll zkEVM
Scroll是一個正在開發的新的零知識EVM實現。 Scroll團隊計劃為每個EVM操作碼設計零知識電路。這將允許開發人員在Scroll上部署以太坊原生智能合約EVM,而無需修改底層EVM字節碼。此外,Scroll zkEVM將使用密碼累加器來驗證存儲的正確性,並提供一個將字節碼與執行跟踪鏈接起來的電路,以驗證計算與原始字節碼是否一致。
ZK硬件加速
儘管ZKP生產速度緩慢且昂貴,但隨著特殊硬件如FPGA和ASIC的普及,其效率將得到大幅提升。隨著隱私計算需求日益增長,ZKP的語句複雜性將進一步增加,只能通過使用專門的硬件來提高證明生成速度。這將促成一個完整的ZK挖礦和證明行業的出現,業餘愛好者們可以在自己的CPU上生成證明或使用GPU和FPGA。
ZKPs 的性能瓶頸主要集中在數字(域元素或群元素)的向量乘積和FFT 計算上。為了提高ZKPs 的性能,可以採取以下措施:
1、優化數字向量的乘積計算。可以使用更高效的算法和並行計算來加速向量乘積的計算,從而減少生成證明所需的時間。此外,可以通過使用更小的域來減少數字向量的大小,進一步減少計算時間。
2、優化FFT 計算。可以使用更高效的FFT 算法來加速計算,並使用分佈式計算來分擔計算負擔,從而減少生成證明所需的時間。此外,還可以使用更小的域和更短的FFT 週期來減少計算時間。
3、優化證明系統的實現。可以使用更高效的編譯器和優化器來生成更高效的代碼,從而減少生成證明所需的時間。
4、優化硬件和軟件環境。可以使用更快的計算機和更優化的操作系統、編譯器和庫來提高生成證明的性能。
在以太坊在合併前,約有2700 萬張顯卡在其網絡上工作,算力在5 月中達到了高峰的1.13P。隨著以太坊的合併,這些算力將會切換至ETC 等分叉鏈。除了市場上存量龐大的Filecoin(FIL)、AR 等算力設備,ZK 證明計算也許會為礦機硬件提供新的用武之地。
影響zkp證明速度的主要有三個維度:證明系統、待證明電路規模和算法軟硬件優化。
對於證明系統,市面上主流的ZK-SNARK 算法(Groth16、Galois2、PLONK)都使用橢圓曲線(EC)算法來產生多項式承諾,涉及大數點乘(MSM)操作,這是證明過程中時間較長的瓶頸。相比之下,基於FRI 的算法,如ZK-Stark,使用哈希函數生成多項式承諾,不涉及EC 算法,因此不需要MSM 運算。
證明系統是基礎,待證明電路的規模也是硬件優化的核心需求之一。例如zkEVM由於與原生以太坊的兼容性不同,其電路的複雜程度也不同。例如,Zksync 和Starkware 構建了與原生以太坊不同的虛擬機,從而避免了一些以太坊原生的代碼不適合使用zk 進行處理的問題,縮小了電路的複雜度;而Scroll 和Hermez 等項目則以與底層zkevm 兼容為目標,因此其電路設計更複雜。硬件加速對於設計更複雜的電路的需求更加迫切,但這也是一個具有一定變化程度的問題,對於ZK-EVM 也同樣如此。
總之,硬件加速是ZKP 擴容方案實現的關鍵之一。在硬件加速領域,人們期望看到摩爾定律在zk 硬件加速領域的應用,這將會大大提高證明速度,加快擴容方案的發展。此外,硬件zk 加速領域也為新的硬件加速技術和業務模式提供了機會和挑戰,這將在未來成為一個備受關注的領域。
聲明:本內容為作者獨立觀點,不代表0x财经 立場,且不構成投資建議,請謹慎對待,如需報導或加入交流群,請聯繫微信:VOICE-V。
來源:Geekcartel