zkEVM 的核心思想是利用零知识证明来验证和执行智能合约,而不需要每个节点都执行所有的计算。
原文作者: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 兼容的 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 加速领域也为新的硬件加速技术和业务模式提供了机会和挑战,这将在未来成为一个备受关注的领域。