全部文章

探索 zkEVM 与 Polygon zkEVM

·
2022年10月4日
·
阅读约 6 分钟
·
••• 次浏览
·
••• 次点赞

本文译自英文原文。 阅读英文原文

探索 zkEVM 与 Polygon zkEVM

简介

从设计上看,Polygon zkEVM 是一个兼容 EVM 的 zk-rollup。它的目标是提升吞吐量、性能和效率。借助 Plonky2(一项前沿的 zk 扩容技术),它能够生成轻量级的证明,同时支持对 SNARK 进行递归验证,从而让用户可以快速地验证证明。

除了缩短证明生成时间之外,zkEVM 现在还能让交易变得非常便宜,使 zkEVM 上的每一个去中心化应用都更具成本效益。

Ethereum 的可扩展性问题

目前,想要在 Ethereum 上构建面向大众的去中心化应用并不现实,因为交易需要很长时间才能被处理,而且费用相当昂贵,这会带来糟糕的用户体验,也阻碍了真正有意义的普及。

这个问题背后的原因在于,参与网络的每一个节点都需要处理每一笔交易,导致每秒只能处理 13 笔交易。

ZK-rollup 的作用

Zk-Rollup 是继 Optimistic Rollup 之后的第二类 rollup。它们与 Optimistic Rollup 的不同之处在于,它们通过生成被称为零知识证明(zk-proof)的密码学证明来验证已经打包成批次的交易,而不是像 Optimistic Rollup 那样使用延迟期(挑战期)机制,这让 zk-rollup 的速度更快。

Zk-rollup 的成本要低得多,因为它们会把交易打包成一个批次,并且只提交这些交易的证明。在此之前,支持智能合约的 ZK-rollup 都要求开发者离开 Ethereum 生态,因为它们与 EVM 并不兼容。

Polygon 已经率先构建了一个 ZK-rollup,它带有一个支持 Ethereum 字节码的代码运行时环境,这就是 Polygon zkEVM。这让开发者免去了从零开始编写代码的麻烦,他们可以轻松地把自己的智能合约迁移到 zkEVM 上。

探索 zkEVM 与 Polygon zkEVM
Hermez zk-rollup 架构.

为什么说 zkEVM 是未来

在讨论 zkEVM 为什么比传统 EVM 更好之前,我们需要先了解传统 EVM 是如何工作的。

Ethereum 虚拟机(EVM)是一个图灵完备的虚拟机,它充当智能合约的运行时环境。当一笔交易发生时,所有的合约字节码都会从源代码编译而来,并上传到 EVM 的存储中,点对点网络中的节点会在这里执行。这些节点会使用相同的交易输入,确保它们得到正确的结果。

接下来,EVM 的操作码(opcode)会与 EVM 的不同状态进行交互,从状态存储中读取值,然后把新的值写入 EVM 的存储。

最后,新的值会被新的节点复制,这个状态会一直保持,直到下一笔交易被处理。

探索 zkEVM 与 Polygon zkEVM
Ethereum 虚拟机:EVM 执行模型示意图.

zkEVM 也基于同样的原理运行,但它更进一步,确保数据得到更好的校验。除了 EVM 中提到的那些步骤之外,zkEVM 还会检查加载的字节码是否正确、是否来自正确的地址。它还会确保区块链上的数据与 EVM 中的数据保持一致。

Polygon zkEVM 架构

和 EVM 一样,zkEVM 的主要功能是支持智能合约。它会编译 L2 交易、执行状态转换,并通过生成有效性证明来证明这些状态变更的有效性。

zkEVM 有 5 个主要组成部分:

扁平化合约
PoE 智能合约示意图

排序器(Sequencer)

排序器从网络用户那里收集 L2 交易,然后把这些交易打包成一个批次,并把这个批次提交给 PoE 智能合约。排序器这个角色是无需许可的,任何人只要在自己的机器上运行 zkNode 软件,就可以成为排序器。这提升了网络的去中心化程度。

想要在 L1 上提交批次的排序器,必须支付 L1 的 gas 费用,并额外存入一笔代币费用。这有助于防范垃圾交易,同时也激励排序器只提交有效的交易。用户支付的批次费用,就是排序器获得激励的方式。

提交的批次会以 calldata 的形式发布到 L1 上。任何新的无需许可节点都会重建这些数据,并同步自己的状态。一旦被打包上链,L1 交易就决定了 L2 交易的执行顺序。此时会产生一个确定性的新状态,但只有当有效性证明被发送到 L1 之后,这个新状态才会真正确立。这正是聚合器(aggregator)发挥作用的地方。

扁平化合约
排序器是如何工作的

聚合器(Aggregator)

聚合器的作用是为排序器提交的 L2 交易批次生成有效性证明。批次被提交时,会按照它们的位置进行排列,并且包含交易数据。

接下来,聚合器会使用一种名为 zkProver 的专用硬件,竞相为每个批次生成有效性证明。第一个生成证明的聚合器,将获得排序器存入的 Matic 费用作为奖励。

聚合器这个角色同样向所有人开放,只要安装了 zkNode 软件并且能够运行 zkProver 即可。

扁平化合约
聚合器是如何工作的

zkEVM 设计的特点

等效 EVM(EVM-Equivalent) - Polygon 的 zkEVM 具备“字节码级别”的兼容性。这意味着它在 EVM 操作码层面和 Solidity 语言层面都完全兼容。所有在 Ethereum 上运行的工具和智能合约,都不需要做任何修改就能在 zkEVM 上运行。 安全 - zkEVM 的大部分安全性继承自 Ethereum,与此同时,它还采用了 zk-STARK 和 zk-SNARK 等零知识证明来确保:状态变更发生时是正确执行的;会生成证明状态变更的证明;并且这些证明会在链上公开以供验证。 去中心化且无需许可 - 任何人只要根据自己想要扮演的角色具备相应的工具,就可以参与到网络中。 高效 - 由于效率是网络性能的关键,最高效的聚合器才能提供有效性证明并获得激励,同时所有计算都在链下完成,只有零知识证明和必要的数据会保存在链上。


总结

zkEVM 是普通虚拟机的改进版本,它能以更快、更安全的方式执行交易。Polygon 将会把整个项目开源,任何想要以更好、更便宜、更快的方式使用 Ethereum 的人都可以使用它。

这是一项非常复杂的技术,但我们正在全力推进开发,迫不及待地想向你展示我们一直在做的东西。

•••
分享本文:

获取最新动态

将最新文章直接发送到你的收件箱。