{"content":{"title":"Polygon zkEVM架构","body":"## 概述\r\n\r\n​\t\tPolygon zkEVM处理由以太坊 L2 执行的交易（用户发送到网络的交易）引起的状态转换。之后通过利用零知识功能创建有效性证明，证明这些链外状态变化计算的准确性。\r\n\r\nzkEVM的主要组件包括：\r\n\r\n- 共识（POE）合约（PolygonZkEVM.sol）\r\n- zkNode\r\n  - 同步器（Synchronizer）\r\n  - 排序器和聚合器（Sequencers & Aggregators）\r\n  - RPC\r\n\r\n- zk验证器（zkProver）\r\n- zkEVM Bridge\r\n\r\n\r\n\r\nPolygon zkEVM的架构如下所示:\r\n\r\n\r\n![1.png](https://img.learnblockchain.cn/attachments/2023/03/YpGNs81X641d6c4ac0bfe.png)\r\n\r\n## 共识合约\r\n\r\n​\t\tPolygon Hermez 1.0（早期版本）基于捐赠证明（PoD）共识机制。PoD实质上是一种自动进行的去中心化拍卖，参与者（协调员）出价一定数量的代币，以便被选择创建下一批。\r\n\r\n​\t\t最新的共识合约（PolygonZkEVM.sol）利用了v1.0中现有PoD的经验并增加了对多个协调员无许可参与的支持，以在L2中生产批次。\r\n\r\n​\t\t早期的捐赠证明（PoD）机制基于去中心化拍卖模型，以获得在特定时间段内生产批次的权利。在这一机制中建立了经济激励机制，因此验证者需要非常高效才能具有竞争力。\r\n\r\n​\t\t最新版本的zkEVM共识合约（部署在L1）是基于效率证明模型。利用了v1.0版本中现有PoD的经验并增加了对多个协调人无许可参与的支持，以在L2中生产批次。\r\n\r\n### 应用模式\r\n\r\n​\t\t共识合约模型利用现有的PoD机制，支持多个协调员无许可的参与在L2中生产批次。这些批处理是从L1的 Rolled-up交易创建来的。共识合约(PolygonZkEVM.sol) 采用了一种更简单的技术并且由于其在解决PoD所涉及的挑战方面具有更高的效率而受到青睐。\r\n\r\n基于合约的共识的战略实施承诺确保网络：\r\n\r\n- 无许可权限便可以生产L2批次\r\n- 效率高，这是整个网络性能的关键标准\r\n- 达到可接受的权力下放程度\r\n- 被保护免受恶意攻击，特别是被验证者攻击\r\n- 保持整体验证工作和网络价值之间的公平平衡\r\n\r\n\r\n\r\n### 链上数据可用性\r\n\r\n​\t\t一个 Full ZK-Rollup模式需要在链上发布数据（用户需要重建完整状态）和有效性证明（零知识证明）。然而，考虑到以太坊的在链上发布数据会产生gas。这就造成了我们需要在 Full ZK-Rollup情况和混合情况之间做出决定。\r\n\r\n​\t\t在混合模式下，以下两种情况都有可能。\r\n\r\n- Validium: 数据存储在链外，只有有效性证明在链上公布。\r\n\r\n- Volition：对于某些交易，数据和有效性证明都保持在链上，而对于其余的交易，只有证明继续上链。\r\n\r\n除其他事项外，除非能够高度加速证明模块以减轻验证器的成本，否则混合模式仍然可行。\r\n\r\n\r\n\r\n### PolygonZkEVM.sol\r\n\r\n​\t\tzkEVM中的底层协议通过使用有效性证明来确保状态转换正确。为了确保已经遵循了一组预先确定的规则来允许状态转换，所以使用了共识合约（PolygonZkEVM.sol，部署在L1上）。\r\n\r\n> 共识合约目前已部署在Goerli测试网上。它可以在这里获得。https://goerli.etherscan.io/address/0xa997cfD539E703921fD1e3Cf25b4c241a27a4c7A\r\n\r\n​\t\t智能合约会验证有效性证明，以确保每个转换都正确完成。这是通过采用zk-SNARK电路来完成的。这种类型的系统需要两个过程：交易批量化和交易验证。\r\n\r\n- 排序器（Sequencers）→向网络提出交易批次，即他们将交易请求分批卷起并添加到共识合约中。\r\n\r\n- 聚合器（Aggregators）→检查交易批次的有效性并提供有效性证明。任何无许可的聚合器都可以提交证明，以证明状态转换计算的正确性。\r\n\r\n因此，智能合约会发出两个调用。一个是接收来自排序器的批次，另一个是给聚合器，要求对批次进行验证。\r\n\r\n\r\n\r\n![5.png](https://img.learnblockchain.cn/attachments/2023/04/6fySMUnm6441eacaada59.png)\r\n\r\n### 代币经济学\r\n\r\n共识智能合约对排序器和聚合器提出了以下要求：\r\n\r\n#### 排序器：\r\n\r\n- 任何拥有运行zkEVM节点所需软件的人都可以成为排序器。\r\n\r\n- 每个排序器必须以MATIC代币的形式支付费用，以获得创建和提出批次的权利。\r\n\r\n- 一个提出有效批次（由有效交易组成）的排序器，会受到交易请求者或网络用户支付的费用的激励。\r\n\r\n#### 聚合器：\r\n\r\n​\t\t聚合器从排序器接收所有事务信息，并将其发送给验证器，验证器在复杂的多项式计算后提供一个小的zk证明。智能合约验证了这一证明。通过这种方式，聚合器收集数据，将其发送到验证程序，接收其输出，最后将信息发送到智能合约，以检查验证程序的有效性证明是否正确。\r\n\r\n- 聚合器的任务是为排序器提出的L2事务提供有效性证明。\r\n- 除了运行zkEVM的zkNode软件外，聚合器还需要有专门的硬件来利用zkProver创建零知识有效性证明。\r\n- 对于一个或多个特定批次，提交有效性证明的聚合者首先获得MATIC费用（由该批次的排序者支付）。\r\n- 聚合者需要表明他们对交易进行验证的意图。之后，他们根据自己的策略竞争产生有效性证明。\r\n\r\n\r\n\r\n## zkNode\r\n\r\n​\t\tzkNode是运行任何zkEVM节点所需的软件。它是网络所需的客户端，用于实现同步和管理参与者的角色（排序器或聚合器）。Polygon zkEVM参与者将选择他们的参与方式。\r\n\r\n- 作为一个节点，了解网络的状态\r\n\r\n- 作为批量生产过程的参与者，担任两个角色中的任何一个：排序器或聚合器\r\n\r\n  \r\n\r\n  zkNode的架构在本质上是模块化的。你可以查看下面的图表以了解更多信息。\r\n\r\n\r\n![4.png](https://img.learnblockchain.cn/attachments/2023/04/tJHqM22M643d096135752.png)\r\n\r\n\r\n\r\n### 激励结构\r\n\r\n​\t\tzkEVM网络的两个无许可参与者是: 排序器和聚合器。已经设计了适当的激励结构来保持zkEVM网络的快速和安全。以下是排序器和聚合器的费用结构摘要:\r\n\r\n- 排序器\r\n  - 收集交易并批量发布\r\n  - 从发布的交易中收取费用\r\n  - 支付L1交易费+MATIC（取决于待处理的批次）\r\n  - MATIC转到聚合器\r\n  - 盈利条件：txs费用>L1调用+MATIC费用\r\n- 聚合器\r\n  - 处理由排序器发布的交易\r\n  - 构建zkProof\r\n  - 从排序器中接收MATIC\r\n  - 静态成本。L1调用成本+服务器成本（构建证明）。\r\n  - 盈利条件：MATIC费用>L1调用+服务器成本\r\n\r\n## zkProver\r\n\r\n​\t\tzkEVM采用先进的零知识技术来创建有效性证明。它使用了一个零知识证明器（zkProver），该证明器旨在在任何服务器上运行，并且经过设计与大多数消费者硬件兼容。每个聚合器将使用此zkProver验证批次并提供有效性证明。\r\n\r\n​\t\t它由一个主状态机执行器、一组辅助状态机（每个都有自己的执行器）、一个STARK证明生成器和一个SNARK证明生成器组成。\r\n\r\n\r\n![3.png](https://img.learnblockchain.cn/attachments/2023/03/lwPveY5t641d6c63b3f1a.png)\r\n\r\n​\t\t简而言之，zkEVM以多项式的形式表示状态变化。因此，每一个提出的批次必须满足的约束是多项式约束或多项式恒等式。换句话说，所有有效批次都必须满足特定的多项式约束。在这里查看zkProver的详细架构。\r\n\r\n## zkEVM Bridge\r\n\r\n​\t\tzkEVM Bridge是一种智能合约，可让用户在LX和LY两层之间转移资产。zkEVM的L1-L2是安全存款和提取资产的去中心化桥梁。它是两个智能合约的组合，一个部署在一个链上，第二个部署在另一个链上。\r\n\r\n​\t\tzkEVM中的L1和L2合约是相同的，只是部署位置不同。Bridge L1合约位于以太坊Mainnet上，以便管理rollup之间的资产转移，而Bridge L2合约位于特定rollup上，它负责Mainnet和Rollup  (或Rollups) 之间的资产转移。\r\n\r\n​\t\tL2的互操作性允许一个本地的机制在不同的L2网络之间迁移资产。这个解决方案被嵌入到Bridge智能合约中。\r\n\r\n## 验证器合约\r\n\r\n​\t\t验证器合约能够验证任何ZK-SNARK密码证明。证明批处理中每个事务的有效性。它是任何zk Rollup架构中的关键实体，其主要原因是它验证了确保有效状态转换的证明的正确性。\r\n\r\n> 验证者合约部署在Goerli testnet上。https://goerli.etherscan.io/address/0x8EdA1d8c254a77a57A6A7A1C0262e9A44A7C6D6d\r\n\r\n## 交易生命周期\r\n\r\n​\t\t在进入L2中的交易流之前，用户需要一些资金来执行L2交易。为此，用户需要通过zkEVM Bridge dApp将一些以太币从L1转移到L2。\r\n\r\n- Bridge\r\n  - 存放以太币\r\n  - 等到globalExitRoot被发布在L2上\r\n  - 在L2上接受资金\r\n- L2 交易\r\n  - 用户在一个钱包（如Metamask）中启动tx，并将其发送给一个排序器\r\n  - 一旦排序器提交添加其交易，它就在L2上完成了\r\n  - 交易在L2上已经完成，但在L1上没有完成（简单地说，L2的状态还没有到L1上）。此时称为受托状态\r\n  - 排序器将批处理数据发送到L1智能合约，使任何节点都可以以无信任的方式 (也称为虚拟状态) 从L1同步\r\n  - 聚合器将对待定交易进行验证，并构建证明，以实现L1的最终性\r\n  - 一旦证明被验证，用户的交易将达到L1的最终状态（对提款很重要）。这被称为合并状态。"},"author":{"user":"https://learnblockchain.cn/people/66","address":"0xCCF0761Ff668AAc57881af58607765573515CDA4"},"history":"QmYnB9YeHv9b1G6zFtisuxjMYobVG9hHm7PKS2EGXFkjyy","timestamp":1682041566,"version":1}