z5monster模式是什么(基础入门zkEVMEVM)(1)

免责声明:本文旨在传递更多市场信息,不构成任何投资建议。文章仅代表作者观点,不代表MarsBit官方立场。

小编:记得关注哦

来源:Kyle

原文标题:入门指南:zkEVM、EVM 兼容性和 Rollup 最全解读

ZK Rollups 长期以来一直被认为是以太坊扩容的终极目标。然而,尽管它们对以太坊扩展路线图很重要,但几个关键点仍然存在广泛的不确定性:

  1. ZK Rollup 到底是什么?
  2. 特定于应用程序的 Rollup 和通用 Rollup 之间有什么区别?
  3. 什么是 zk-EVM Rollup?像 EVM 等效和 EVM 兼容这样的术语实际上是什么意思,它们如何应用于 Rollup?
  4. ZK Rollup 生态系统的现状如何,这对生态项目意味着什么?

如果您是一名希望了解以太坊扩展的下一阶段的开发人员,本文将(希望)有所帮助。

ZK Rollup

ZK Rollups 可以通过一个简单的观察来实现:像 STARK 或 SNARK 这样的证明系统允许使用亚线性处理来验证线性数量的语句(例如,1000 条语句 → 10 次验证者检查,10,000 条语句 → 11 次验证者检查)。我们可以使用此属性来创建可大规模扩展的区块链交易处理,如下所示:

  1. 用户将他们的资产锁定在 L1 上的 ZK Rollup 智能合约中
  2. 用户将涉及这些资产的交易提交给 L2 排序器,后者将它们收集到有序批次中,并为每个批次生成有效性证明(例如 STARK/SNARK)和聚合状态更新
  3. 这个状态更新和证明被提交到我们的 L1 ZK Rollup 智能合约并被验证,并用于更新我们的 L1 状态
  4. 用户可以使用这种 L1 状态(取决于不同的数据可用性机制)来检索他们的资产,从而实现完全的自我托管和“以太坊安全”

z5monster模式是什么(基础入门zkEVMEVM)(2)

简化的 ZK Rollup 架构

验证证明的 gas 成本与被证明的交易数量呈次线性关系,与直接使用 L1 相比,可以实现更大的规模。为了更详细地了解这个过程,我推荐 Vitalik 的《不完全 Rollup 指南》或 Delphi 新发布的《完整 Rollup 指南》。

特定于应用程序的 Rollup

到目前为止,所有生产级 ZK Rollup 都是我们所说的“特定于应用程序的 Rollup”。在特定于应用程序的 Rollup 中,Rollup 支持由 Rollup 运营方定义的固定数量的“状态转换”(例如交易)。这对于超优化常见用例非常有用,例如:

  • Loopring—支付和 Swap
  • Immutable—NFT 铸币和交易、游戏
  • dydx—永续交易

特定于应用程序的 Rollup 非常适合扩展特定的、易于理解的问题。如果您作为项目的需求可以通过特定于应用程序的 Rollup 来满足,那么您可能会为您的用例获得更好的性能、更好的用户体验和更好的定价,因为它们缺乏泛化性是一个巨大的优势。例如,在 Immutable,我们能够通过补贴免费的 NFT 铸造和通过 NFT 交易收费的转账来消除 gas 费用——这种权衡只有在 rollup 状态转换的可预测性质下才有可能。

但是,许多项目希望能够创建自己的自定义逻辑和智能合约,独立于 rollup 运营方,这在特定于应用程序的 rollup 中是不可能的。此外,许多 DeFi 项目需要“可组合性”,或与其他项目进行原子交互的能力(例如,许多 DeFi 项目使用 Uniswap 作为价格预言机)。只有当您的 rollup 不仅支持自定义代码,而且支持任何用户可以部署的本机智能合约时,组合性才是可能的。为了实现这一点,我们需要修改 ZK Rollup 的架构以概括我们的每个组件。

z5monster模式是什么(基础入门zkEVMEVM)(3)

这种增加的灵活性有几个妥协:性能大大降低,rollup 参数的可定制性降低以及费用更高。然而,最大的妥协是根本没有通用 ZK Rollups 的实现,当然也没有能够生产级的实现。但这种情况开始改变:

  • StarkNet 目前已经在主网上运行(尽管处于有限的 Alpha 阶段)
  • 3 个独立的项目(zkSync、Polygon Hermez/zkEVM 和 Scroll)都在 ETH CC 2022 上宣布它们将成为第一个进入主网的“zkEVM”

这些最新的公告值得深入研究,因为这些团队不仅宣布了通用 Rollup,他们还宣布了“zkEVM”。随之而来的是推特上许多围绕“EVM 兼容性”、“EVM 等效性”、“真正的 zkEVM”以及哪种方法更好的争论。对于应用开发人员来说,这些对话通常是噪音——因此本博客的目的是分解这些术语、设计决策和理念,并解释它们对开发人员的实际影响。

让我们从头开始:什么是 EVM?

了解 EVM

以太坊虚拟机(EVM)是执行以太坊交易的运行时环境,最初在以太坊黄皮书中定义,后来被一系列以太坊改进提案(EIP)修改。它由以下部分组成:

  • 用于执行程序的标准“机器”,每个交易具有易失性“内存”,交易可以写入的持久“存储”和操作“堆栈”
  • 在这台机器中执行状态转换的约 140 个定价“操作码”

z5monster模式是什么(基础入门zkEVMEVM)(4)

我们的虚拟机的一些示例操作码:

  • 堆栈操作 - PUSH1(向堆栈添加一些内容)
  • 算术运算 - ADD(加数字),SUBTRACT
  • 状态操作——SSTORE(存储数据),SLOAD(加载数据)
  • 交易操作——CALLDATA、BLOCKNUMBER(返回有关当前执行事务的信息)

一个 EVM 程序只是一系列这些操作码和参数。当这些程序被表示为一个连续的代码块时,我们将结果称为“字节码”(通常表示为一个长的十六进制字符串)。

z5monster模式是什么(基础入门zkEVMEVM)(5)

通过将大量这些操作码组合成一个执行序列,我们可以创建任意程序。以太坊使用自定义虚拟机,而不是调整现有的 VM,因为它有独特的需求:

  • 每个操作都必须有“成本”以防止滥用(因为所有节点都运行所有交易)
  • 每个操作都必须是确定性的(因为所有节点必须在交易执行后就状态达成一致)
  • 我们需要特定于区块链的概念(例如智能合约、交易)
  • 一些复杂的操作必须是原语(例如密码学)
  • 交易必须是在沙盒里的,没有 I/O 或外部状态访问

EVM 是第一个图灵完备的区块链 VM,于 2015 年发布。它有一些设计限制,但其巨大的先发优势和随后的广泛采用为以太坊创造了巨大的差异化——它是迄今为止最久经考验的区块链虚拟机。它是整个领域的智能合约基础设施。

由于以太坊的主导地位,很多后来的区块链都直接采用了这种运行时环境。例如,Polygon 和 BNBChain 是以太坊的直接分叉,因此使用 EVM。值得注意的是,EVM 并非一成不变,并且在 EIP1559 等升级中经常被修改。由于其他区块链需要时间进行更新,或者在多个地方与以太坊有所不同,它们通常运行着稍微过时的 EVM 版本,并且难以跟上变化的步伐——这一事实可能会让以太坊的核心开发人员感到沮丧。

以太坊兼容性

然而,人们所说的“EVM 链”通常不仅仅只是镜像这个运行时环境。有几个主要规范始于以太坊并已成为事实上的全球标准:

  • Solidity(一种编译成 EVM 字节码的高级语言)
  • 以太坊的 JSON-RPC 客户端 API(与以太坊节点交互的规范)
  • ERC20/ERC721(以太坊代币标准)
  • ethers.JS(一个与以太坊接口的网络库)
  • 以太坊的密码学(例如 keccak256 作为哈希函数,对 secp256 k1 的 ECDSA 签名)

从技术上讲,您的链可以具有一个 EVM 运行时但不支持上述部分或全部标准。然而,遵守这些标准使得在你的新链上使用以太坊工具变得更加容易。一个很好的例子是 Polygon,它除了使用上述所有工具外,还能够运行 Etherscan (Polygonscan) 的分叉版本,使用 Hardhat 等以太坊开发工具,并支持 Metamask 等钱包。Nansen 和 Dune 等工具最初都针对以太坊,因此添加对新 EVM 区块链的支持。新钱包,新 NFT 市场——如果以太坊界面和你的链界面之间的唯一区别是链 ID,那么你可能是第一个也是最容易添加的。话虽如此,这些工具是为以太坊构建的——一旦你开始修改你的区块链(例如更大的区块,更快的区块时间),你就有破坏它们的风险。没有完美的兼容性。

尽管如此,针对以太坊规范的工具和应用程序的数量为新的区块链仅反映以太坊标准创造了巨大的动力。任何不支持上述规范的区块链在开发人员工具方面都会自动落后,并且随着 EVM 生态系统的发展,有进一步落后的风险。

我的信念是,“EVM 兼容”一词实际上不足以描述这里描述的网络效应——我们实际描述的是“以太坊兼容性”,并且远远超出了智能合约执行环境,延伸到了整个以太坊生态系统和工具集。

为了解决这个问题,像 Solana 这样的非 EVM 区块链必须创建完全平行的生态系统,这会降低它们的速度,并且更难吸引现有的开发人员。然而,不需要遵守这些标准确实使非 EVM 区块链能够对以太坊工具集进行更根本的更改,从而更积极地与以太坊区分开来。创建 EVM 区块链非常简单——但为什么有人会使用你的区块链而不是数百个其他“快速 EVM 区块链”之一。如果你能克服需要建立一个成功的平行链和生态系统的困难,Solana 已经证明:a)你可以吸引出色的原生应用程序(例如 MagicEden、Phantom)和 b)如果商业激励足够,源自 EVM 的项目仍将支持您(例如 Opensea 添加 Solana 支持)。

z5monster模式是什么(基础入门zkEVMEVM)(6)

ZK-EVM

公共通用 rollup 都有一个共同目标:让开发人员和用户尽快生成网络效应。这需要结合创造最高性能的 rollup 技术、拥有最好的 BD 团队以及进行最早或最有效的营销。但是,所有 rollup 团队(出于上述原因)都非常关注:

将现有的以太坊合约(和开发人员)迁移到他们的 rollup 中

受到现有 EVM 工具(例如库、钱包、市场等)的支持

实现这两个目标的最简单方法是创建一个“zkEVM”:一个通用 rollup,将 EVM 作为其智能合约引擎运行,并保持与以太坊生态系统通用接口的兼容性,如上所述。

然而,这并不像分叉 Geth 那样容易,就像我们从头开始创建新的 L1 区块链时那样容易。我们的目标是运行 EVM 字节码——但 ZK 证明要求将它们证明的所有计算语句转换为一种非常特定的格式——一种“代数电路”,然后可以将其编译成 STARK 或 SNARK。为了快速了解“电路(circuit)”,这里有一个例子(使用更直观的布尔电路作为算术电路的特例)。在基于这个简单电路的 zkSNARK 系统中,我们的证明者希望让验证者相信他们知道输入(