我的账户
链视界

关注数字经济、区块链

亲爱的游客,欢迎!

已有账号,请

如尚未注册?

链视界 门户 资讯

基础指南:zkEVM、EVM兼容性和Rollup是什么?

撰文:Immutable X
来源:W3.Hitchhiker
译者:Hakeen,修订:Evelyn

ZK-Rollup 长期以来被视为以太坊拓展性的终局。然而,尽管他们对以太坊拓展路线很重要,但在几个关键点上仍有几点不确定性:
  1. 到底什么是 zk-Rollup?
  2. 针对应用优化的 Rollups 和通用 Rollups 的区别是什么?
  3. 什么是zk-EVM Rollup?像 EVM 等效性和 EVM 兼容性等术语究竟是何意义,并且其如何适用于 Rollups 的?
  4. Zk-Rollup 生态系统的现状如何,这对我的项目又意味着什么?
如果你是一个希望了解以太坊扩展的下一阶段的开发者,那希望这篇文章能对你有所帮助。

什么是 zk-Rollup?

Zk-Rollup的主要实现是:证明系统如 STARKs/sSNARKs,使用亚线性的处理流程来验证线性的语句数量(例如,1000个语句 → 10个验证人确认,而10000个语句只需要11个验证人去确认),这个特性就能让我们处理大量的区块链交易流程:

用户抵押其资产在 L1 的 zk-Rollup 智能合约上

用户提交包括这些资产的交易给 L2 的 sequencer (定序器),sequencer把交易集合到有序的批次中,并且生成有效性证明,例如stark/snark,最后更新状态。

这个状态更新和证明被提交给我们的 L1 zk-Rollup 智能合约,并由其验证,用于更新我们的 L1 状态

用户可以使用这个 L1 状态(取决于不同的数据可用性机制)来检索他们的资产,从而实现完全的自我托管和 "以太坊安全性"

(Simplified ZK-Rollup Architecture)

在这里,只要我们核实验证的gas成本与交易规模呈现亚线性的关系,那么就可以验证更大规模的交易。要想更详细地了解这个过程,我推荐 Vitalik 的 Incomplete Guide to Rollups 或 Delphi 新发布的 Complete Guide to Rollups。

针对应用优化的 Rollup 和通用 Rollup 的区别是什么?

在特定于应用的Rollups中,Rollup支持由Rollup运算符定义的固定数量的状态更改。这可以优化某些应用,如:
  • Loopring — Payments & Swaps
  • Immutable — NFT Minting & Trading, Games
  • dydx — Perpetuals Trading

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

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


这种灵活性的增加要付出几个代价:性能大大降低,Rollup参数的可定制性降低,以及更高的费用。然而,最大的代价是根本没有实现通用的 zk-Rollup,当然也没够实现批量生产的 zk-Rollup。但这种情况正在开始改变。

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

这些最后的公告值得深入研究,因为这些团队不仅宣布了通用 Rollup,他们还宣布了“zkEVM”。随之而来的是许多围绕“EVM 兼容性”、“EVM 等效性”、“真正的 zkEVM”以及哪种方法更好而展开的大量推特争论。

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

理解 EVM (以太坊虚拟机)

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

用于执行程序的标准“机器”,每个事务具有易失性“内存”,事务可以写入的持久“存储”和操作“堆栈”

在这台机器中执行状态转换的约 140 个“操作码”

图源:https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf

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

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

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


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

  • 每一个操作都必须有“成本”来防止滥用(因为所有节点都运行所有的交易)
  • 每一个操作必须确定(因为所有节点都将同意更改后的状态)
  • 我们需要专门针对区块链的概念(如智能合约,交易)
  • 一些复杂操作需要成为原语(如密码学)
  • 交易必须是沙盒的,没有I/O或者外部状态访问

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

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

以太坊兼容性

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

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

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

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

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

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

(Why does Medium not support tables?)

ZK-EVM

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

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

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

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

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

(扫二维码 入群交流)

相关阅读

上一篇:
Aptos测试激励网3 petra钱包安装教程发布时间:2022-08-23
下一篇:
USDD:兑换的一小步,场景拓展的一大步发布时间:2022-08-23
区块链百科
微信扫码
行业动态资讯早知道

Copyright © 2022 链视界 粤ICP备2021100744号   Designed by 链视界