Polygon ZkEvm 项目架构解读
定义:基于以太坊的侧链,结合了 Geth(以太坊客户端)和 Tendermint BFT 共识机制。
特点:
🎯高效、安全的侧链解决方案
🎯支持以太坊智能合约,通过桥接技术与以太坊主网连接。
🎯支持快速和低成本的交易,适合 DeFi、NFT、游戏等需要高吞吐量的应用。
定义:等效于以太坊虚拟机(EVM)的 ZK Rollup 扩展方案,是 Layer 2 技术的一部分。
特点:
🎯完整支持以太坊智能合约,无需更改代码。
🎯ZK Rollup 技术确保了数据隐私和验证效率。
🎯通过 zkEVM 实现高吞吐量和低交易成本。
定义:基于 ZK(零知识证明)的虚拟机,支持私有链和专用链的构建。
特点:
🎯提供隐私保护和高效的链上运算能力。
🎯专为企业级、定制化场景设计。
定义:标准化的 Layer 2 技术框架,帮助开发者快速搭建自己的 Layer 2 网络。
特点:
🎯开箱即用的开发工具,降低 Layer 2 的实现复杂度 🎯支持多种扩展性技术,包括 Rollup、Plasma 等。
应用场景:Layer 2 项目开发者和希望快速扩展生态的公链团队。
代表项目:
🎯X Layer2
🎯ZkFair
第一个上线主网 Zk Rollup 项目,整个项目组成 zkevm-node, zk-prover(C++/NodeJS 编写的 ZK Proof 模块),bridge(Lx<->Ly), prover (C++/NodeJS 编写的 ZK Proof 模块),bridge(Lx<->Ly),PolygonZkEvm 合约集。
该 Zk Rollup 项目由四个核心模块组成,分别是:
● zkevm-node
● zk-prover
● bridge(Lx <-> Ly)
● PolygonZkEvm 合约集
核心职责:作为整个系统的核心模块,zkevm-node 负责用户交互、交易聚合、状态转换和与 Layer 1 的同步。
具体功能:
🎯 接收用户的交易:
接收来自 Layer 2 的用户交易请求。
验证交易的有效性并将其加入到交易池中。
🎯 交易排序并RollUp到L1:
对交易进行排序。
将多个交易聚合成一个批次(Batch),并 RollUp 到 Layer 1。
🎯 同步Layer1数据:
从 Layer 1 同步区块和状态数据。
确保 Layer 2 的状态与 Layer 1 的状态一致。
🎯 区块状态转换 :
处理交易后更新 Layer 2 区块状态。
状态转换逻辑需要与 zk-prover 保持一致。
🎯 与 zk-prover 协作:
递交交易给 zk-prover 执行。
将排序后的交易聚合提交给 zk-prover 模块。
获取 zk-prover 返回的 Zk Proof 并提交至 Layer 1 进行验证。
核心职责: 负责交易执行和生成零知识证明(Zk Proof),确保 Layer 2 的状态转换过程是正确的。
具体功能: 🎯接收交易数据: 从zkevm-node接收聚合的交易和状态信息。
🎯交易执行: 执行阶段仅仅是将交易执行,但是不生成proof,执行的目的是确保后续zk proof的准确生成。
🎯生成Zk Proof:
通过zk电路(基于C++/Node.js编写)处理交易和状态转换逻辑。
生成验证Layer2状态转换正确性的零知识证明。
🎯返回Zk Proof: 将生成的Zk Proof返回给zkevm-node,供其提交至Layer1验证。
核心职责: 实现Layer1和Layer2之间的资产跨链交互。
具体功能:
🎯 充值(Deposit):
支持从Layer1向Layer2的资产充值。
用户在Layer1上锁定资产,并在Layer2上解锁等值资产。
🎯 提现(Withdraw):
支持从Layer2向Layer1的资产提现。
用户在Layer2上销毁资产,并在Layer1上解锁等值资产。
🎯 全局退出根:
使用全局状态根(Global Exit Root) 管理层交易的状态。
确保跨层操作的一致性和安全性。
核心职责: 管理Zk Rollup的核心逻辑,包括批次处理、证明验证和状态管理。
具体功能:
🎯 RollUpManager:
接收Layer2提交的批次数据。
管理Layer2和Layer1的状态同步。
🎯 Verifier:
验证zk-prover提交的Zk Proof的正确性。
确保Layer2的状态转换过程是可信的。
🎯 其他合约: 存储Layer2的状态信息。 管理用户的充值和提现记录。
Jsonrpc: 一组Http接口,和Ethereum的 json-rpc 的行为一致。
GasPricer: 定期获取L1的gas, 并使用计算公式计算 L2建议手续费,数据存储在Pool;
Sequencer: 负责可信任的交易批次构建,从Tx Pool 池子里面获取交易进行构建,构建完成之后交易变成 trusted;
SequencerSender:合并交易批次,将这些交易发送 L1; 发送完成之后,当同步器同步这些交易之后L2的交易变成虚拟状态;
EtxManager: 是一个High Level 级别,封装操作交易发送 L1 相关的接口;
Synchronize: 同步L1交易,更新StateDB数据,检测重组和处理重组;
状态数据库:交易状态数据持久化存储;
Aggragator: 聚合交易递给zk prover 生成 zk proof
Zk Prover: 链下生成交易的零知识证明;
Verifier: zk proof 验证;
用通过 RPC 发交易,交易进入到 Pool;
可信任的 sequencer 从 Tx Pool 将交易提取出来,本地执行排序,执行完成之后交易的状态(可信任状态)写到 state;
Sequencer 将交易批次 Rollup 一层,交易 Rollup 完成之后,同步器同步对应 Rollup, 检查完成交易之后将交易状态修改 "虚拟状态";
Aggregator 从State获取对应交易输入,调度Zk Prover生成交易证明,交易的证明会被提交以太坊上;
交易证明提交完成之后,同步器同步到对应 Proof 证明信息,将 L2 交易状态变成 "合并" 状态。
2.1 状态管理流程图
2.2 Polygon ZkEvm的交易状态
Trusted: 可信任状态
Virtual: 虚拟状态
Consolidated: 合并状态
3. Polygon的桥
4. Zk Prover的项目功能架构
节点将 merkle 树的内容发送并存储到 DB
节点将 Tx 给到 Prover 去进行证明
ZKProver 从数据库里面获取 merkle 树根,密钥和 Hash 等生成证明所需要的信息
最后,ZkProver 生成交易证明,并将这些证明返回给节点
Polygon 项目通过 PoS、zkEVM、Miden 和 CDK 等子项目构建了一个功能全面的扩展性生态系统。
其中,Polygon zkEVM 的上线标志着以太坊 Layer 2 技术的一个重要里程碑,其 ZK Rollup 方案为去中心化应用提供了高效、低成本和隐私保护的基础设施。
本文主要对 Polygon zkEVM 项目的大功能模块进行了详细讲解,包括其核心架构和模块职责,为了解 Polygon zkEVM 的整体工作原理提供了清晰的思路。
在接下来的文章中,我们将进一步深入探讨 Polygon zkEVM 每个模块的执行细节,挖掘其背后的业务逻辑和技术实现。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!