解析 zkEVMs 的基础知识
原文标题:What Is A zkEVM?
原文作者:Linea
原文来源:mirror
编译:MarsBit,MK
我们将为所有读者解析 zkEVMs 的基础知识,无论他们对 web3 的熟悉程度如何。
零知识以太坊虚拟机(zkEVMs)被视为以太坊实现无限扩展性计划的关键组成部分。它们大大简化了开发人员的构建过程,并提供了一个低成本且安全的创新环境。
然而,要完全理解 zkEVM 是什么以及它在以太坊下一阶段发展中的重要性往往很困难。在这里,我们将以易于理解的方式为你解析 zkEVMs 的基础知识,无论你对 web3 的熟悉程度如何。
我们将从 zkEVMs 的高级概述开始,了解支撑这项新兴、令人兴奋的技术的各个组成部分。然后我们将讨论为什么 zkEVMs 对于扩展 web3 和推动其采用至关重要。最后,我们将把 Linea 与以太坊生态系统中的其他 zkEVM 项目进行比较。
ELI5:WTF 是 zkEVM?
zkEVM 是一个虚拟机,它执行智能合约并使用零知识证明(也称为“有效性证明”)证明执行的正确性。zkEVMs 重现了以太坊设计的一些方面,因此为开发人员和用户提供了“类以太坊”的体验。当与 rollup 技术结合时,zkEVM 为去中心化应用程序(dapps)及其用户提供了无与伦比的安全性和可扩展性。
我们在这里不会深入解释零知识证明,但你可以阅读《零知识证明:STARKs vs SNARKs》以获取全面的介绍。虽然有不同类型的有效性证明,但它们都有一个共同的特性:你可以证明对某些信息(例如,“我拥有5个ETH”)的了解,而无需揭示底层信息(例如,显示你的钱包余额)。
最初,零知识证明主要用于增强 web3 应用程序的隐私性——例如 ZCash(私人支付)、MACI(匿名链上投票)和 Aztec(私人智能合约)。但研究人员很快找到了有效性证明的更有吸引力的用例:可验证的计算。
可验证计算方案使“弱”计算机能够将计算外包给功能更强大的、尽管不受信任的客户端计算机,并验证结果的正确性。在这里,客户端返回结果以及用于确认正确执行计算的证明。重要的是,验证证明所需的努力应该小于从头开始执行计算。
ZkEVMs 使用零知识证明来证明程序正确执行,将可验证计算带入公共区块链领域。在这种情况下,可验证计算对于提高区块链的安全性和可扩展性非常有用。
可以将 zkEVM 视为一台可以执行任意操作的计算机,例如将两个整数相加(“func(a + b = c)”)。用户将输入传递给程序(例如,“a = 3”和“b = 2”),全节点在 zkEVM 中使用这些输入执行程序以产生输出(“c = 5”)。
与此同时,程序的执行跟踪被编译成用于证明的“算术电路”(即,翻译成一系列数学陈述)。这允许全节点生成一个零知识证明,以确认程序正确执行。在这种情况下,证明电路验证有关程序执行的详细信息,例如:
由于证明电路验证了执行的计算完整性,网络上的其他节点不需要重新执行程序以验证建议的输出。节点只需要检查零知识证明以确认 zkEVM 的新状态(执行程序后)是正确的。
在一个“不信任,验证”系统中,验证者可能要求向证明电路提供公开的输入,包括程序的初始和最终状态以及传递给函数的参数(或对这些值的加密承诺)。这确保了 SNARK 证明所验证的计算使用正确的输入值进行,并得出了正确的输出。
但这主要是为了冗余:电路逻辑的约束防止了证明者创建假证明(除非证明电路被破坏)。实际上,validiums 是将所有数据离链发布同时保持高安全保障的 zkEVM 链。
这个系统的关键好处是什么?验证程序执行的 SNARK(简洁的非交互式知识论证)证明消耗的资源显著少于原始计算。ZkEVM 节点不必重新执行每个交易以确认其有效性,极大地提高了网络以更快的速度处理更多交易的能力。
以太坊的 zkEVM 扩展解决方案
我们也可以将可验证计算扩展到另一个区块链的交易吞吐量扩展。在这种情况下,“资源受限”的区块链可以将计算卸载到一个次级的、高吞吐量的网络,同时保留验证交易是否正确执行的能力。零知识 rollups,一个用于以太坊(使用 zkEVM 作为运行时环境)的扩展解决方案,就基于这个想法。
Zk-rollups 通过在一个单独的环境(描述为第2层)中执行交易,从而减轻了以太坊的计算负载。在一定的时间间隔内,rollup 的操作员会将许多用户交易聚合成一批,并提交给以太坊上的智能合约。它还提交一个有效性证明,确认链下交易正确执行,新的状态是正确的。
但我们为什么需要扩展以太坊呢?
正如你所知,以太坊虚拟机(EVM)是一个分布式计算环境(又名“世界计算机”),它支持 dapps。EVM 提供了许多好处,如安全性和去中心化,但在过程中牺牲了可扩展性。简而言之,EVM 是一个非常安全的计算机,但它的速度很慢,使用成本很高。
多年来,“EVM兼容”的侧链和rollup已成为解决以太坊可扩展性问题的最受欢迎的解决方案。这些区块链实现了以太坊执行层(EVM)的分叉版本,但对其进行了优化,以实现更快的执行和更低的每笔交易成本。
有人会说这些解决方案并没有直接扩展以太坊,但它们确实使开发者能够在可扩展的链下层运行以太坊dapp,并允许用户以少量以太坊成本使用这些应用。以太坊也会(间接地)受益于用户转移到其他区块链,减轻底层拥堵并降低现有用户的Gas价格。
这并不意味着所有扩展解决方案都同样优秀。例如,侧链不受以太坊保护,因此用户资金的安全取决于侧链验证者的诚实。在最坏的情况下,一个腐败的验证者集合可以轻易地窃取存放在桥上的资金,或者阻止用户提取资金(通过审查交易)。
Rollup 在以太坊上结算交易,继承了其安全性和去中心化特性;尽管如此,不同的 rollup 构造有不同程度的安全性。“乐观 rollup”假设提交到以太坊L1的交易批次是有效的,并依赖激励的一方(“观察者”)通过欺诈证明质疑无效的执行。然而,这种方法存在一些问题:
相比之下,运行 zkEVM 的通用 zk-rollups 被认为是 "扩展的圣杯",因为它们提供了你期望的以太坊扩展解决方案的好处,而不牺牲安全性或引入信任假设。我们在下面更详细地讨论了 zkEVM 的好处:
EVM兼容性
ZkEVMs 完全兼容用于在以太坊虚拟机中运行的智能合约。此外,像 Linea 这样的二型 zkEVM 与 EVM 基础设施(包括开发者工具,区块浏览器和钱包)无缝集成。这意味着什么?Web3 开发者可以在不产生切换成本的情况下将现有的以太坊应用迁移到 L2。更好的是,你可以使用熟悉的开发堆栈从头开始构建新的应用——例如,zkEVMs 可以执行用 Solidity 编写的智能合约。
安全性
zkEVM 的安全保证很简单:零知识证明保证区块生产者不能执行无效的状态转换。也就是说,只要关于底层证明电路的加密假设——比如伪造假证明的不可能性——成立。简而言之,zkEVM 让你 "信任数学,而不是验证者"。
现在,有效性证明确保了安全性,但并不保证活性和数据可用性——这就是为什么 zkEVM 区块链依赖以太坊来强制这些安全性质。我们不会在这里深入技术细节,但这种安排提供了以下保证:
可扩展性
ZkEVM 设计为具有高度可扩展性。虽然 EVM 要求每个网络参与者在达成共识之前重新执行交易,但 zkEVM 使用的是非交互式证明。这提高了吞吐量,减少了延迟,因为验证 L2 区块的证明比重新执行新提议的区块中的每个交易更快。
但等等,还有更多!通过使用“递归证明”,ZkEVM 可以进一步提高吞吐量。递归证明是通过合并多个有效性证明生成的,这样,验证单个证明也就验证了所有底层证明的有效性。
当提交给以太坊 L1 上的证明验证合约时,一个递归证明允许同时确定几个 L2 区块。这显著减少了 L2 顺序器在提交证明到 L1 的基础上逐块生成区块的时间。
改进的用户体验
在加密货币的世界中,当一个交易或区块被区块链网络中的大多数人接受并且不能被逆转(除非花费大量资源)时,它被“确定”了。确定性是比较 rollup 解决方案的一个好的启示方法,因为它决定了用户必须等待多久才能提取存入 rollup 的资金。
你会经常听到 zkEVM 有“快速确定性”。这只是意味着以太坊在 zkEVM rollup 上进行的交易(包括提现操作)比在普通的乐观 rollup 上完成的时间更短。这有重大的影响,如在去中心化金融(DeFi)行业的投资者可以享受更好的流动性。
降低成本
ZkEVM rollup 可以选择只在以太坊 L1 上发布对其最终状态的承诺,从而减少链上存储成本。由于有效性证明保证了 zkEVM 新状态的正确性,因此顺序器不必发布所有数据(包括未压缩的交易输入)以重新执行状态转换更改。相比之下,乐观 rollup 必须在 L1 上发布原始交易数据,以便诚实的观察者可以独立计算 L2 的新状态,并可能质疑无效的转换。
你可以用 zkEVM 做什么?
Linea:放诸四海而皆准的zkEVM
Linea是一个等同于EVM的zk-rollup,其执行引擎是Type 2 zkEVM。Linea由在证明和可扩展性技术方面有深厚经验的团队开发,旨在以一部分成本将以太坊体验带给开发者和用户。
作为一个Type 2 zkEVM,Linea优先考虑与所有以太坊应用程序和基础设施的兼容性。分析不同的zkEVM设计超出了我们的讨论范围(Vitalk的zkEVM类型更详细地讨论了这个话题);然而,您可以期望从使用Linea zkEVM获得以下好处:
Linea的公共测试网已经上线,自最初公告以来,我们已经记录了令人难以置信的参与水平。现在,您也可以加入其他人,共同构建Linea的未来: