Polygon zkEVM网络节点

这篇具有很好参考价值的文章主要介绍了Polygon zkEVM网络节点。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 引言

前序博客有:

  • Polygon zkEVM——Hermez 2.0简介

Polygon zkEVM网络节点代码见:

  • https://github.com/0xPolygonHermez/zkevm-node(Go语言)

1.1 Polygon zkEVM 关键词

Polygon zkEVM网络中的关键词汇有:

  • 1)L1:是指rollup合约部署的base链——可为以太坊主网或测试网,也可为任意EVM兼容链。
  • 2)L2:为rollup网络,即Polygon zkEVM网络。
  • 3)Batch:为一组使用zkEVM prover来执行或证明的交易,会将batch发送到L1,也会从L1同步batch。
  • 4)Sequencer:该角色负责:选择交易,将交易排序,将交易打包为batch发送到L1。
  • 5)Trusted sequencer:L2中仅可以有一个trusted sequencer,Trusted sequencer具有特殊权限——可预测将提交到L1的batches,从而可在与L1交互之前,commit to a specific sequence(见后面 “7)Sequence” 解释)。这样可实现fast finality,并降低开销(降低gas费)。
  • 6)Permissionless sequencer:可由任何人承担的sequencer角色。相比于trusted sequencer,permissionless sequencer具有竞争性劣势(如slow finality,MEV攻击)。其主要目的是提供censorship resistance和网络的unstoppability特性。
  • 7)Sequence:由trusted sequencer发送到L1以更新state的数据称为sequence,其包含了batches和其它metadata。
  • 8)Force batch:由permissionless sequencers发送到L1以更新state的数据,仅包含了batch。
  • 9)L2 Block:与L1 block类似,但是为L2的。大多由JSON RPC接口使用。当前,所有的L2 Blocks都设置为仅包含一笔交易,这样做的目的是为了实现instant finality;不需要close a batch,以支持JSON RPC expose已处理交易的结果。
  • 10)Trusted state:是指对 由trusted sequencer 分享来的交易 进行处理所达成的state。该状态被认为是可信的,因为trusted sequencer可commit to a certain sequence,然后send a different one to L1。
  • 11)Virtual State:是指对 已提交到L1的交易 进行处理所达成的状态。这些交易已由trusted或permissionless sequencer打包在batches发送到了L1。这些batches也可称为virtual batches。注意,该state是trustless的,因为其依赖于L1的安全假设。
  • 12)Consolidated state加固状态:已提交a ZKP(Zero Knowledge Proof)在链上证明了the execution of a sequence of the last virtual batch 所达成的状态。
  • 13)Invalid transaction无效交易:是指无法处理的交易,无效交易并不会影响状态。注意,无效交易可被包含在virtual batch内。交易无效的原因可与以太坊协议相关,如invalid nonce、balance不足等;也可能是因zkEVM引入的限制,如每个batch可利用的资源有限,因此可计算的keccak哈希总数有限。
  • 14)Reverted transaction:该交易已执行,但是(因智能合约逻辑)被reverted了。reverted交易与无效交易的区别在于,reverted交易会改变状态——至少会增加sender的nonce值。
  • 15)Proof of Efficiency(PoE):为Polygon zkEVM的共识协议,由智能合约强化。

Polygon zkEVM网络节点

2. Polygon zkEVM网络总体架构

Polygon zkEVM网络节点
以上表示的是由trusted sequencer运行的单个节点的架构图。实际网络中会有多种角色运行节点,详情后续再补充。
以上架构图中:

  • 1)(JSON)RPC:为用户(如metamask、etherscan等)与节点交互的接口。与以太坊RPC完全兼容,并附加了一些额外的端口。如与state交互可获得数据的接口;处理交易的接口;与pool交互存储交易的接口。

  • 2)Pool:通过RPC来存储交易的DB,pool中所存储的交易后续可由sequencer来选中或丢弃。

  • 3)Trusted Sequencer:从pool中获取交易,使用state对交易处理以检查交易是否有效,创建sequences。一旦交易被添加到state中,可立刻对broadcast服务可用。sequences可通过etherman发送到L1。

  • 4)Broadcast:由非trusted sequencer运行的节点中的synchronizer使用的API,用于同步trusted state。

  • 5)Permissionless Sequencer:待续。。。。

  • 6)Etherman:对 需与以太坊网络和相关合约 交互的方法的抽象。

  • 7)Synchronizer:通过etherman从以太坊获取数据更新state(为virtual state 或 consolidated state)。若该节点不是trusted sequencer,还会从trusted sequencerbroadcast获取数据并更新state(为trusted state)。同时synchronizer还会发现并处理reorgs,reorgs情况仅发生在:trusted sequencer通过broadcast发送的数据 与 发送到L1的sequences数据 不同时(即trusted state与virtual state不同时,会进行reorg)。

  • 8)State:负责管理存储在StateDB的状态数据(batches、blocks、transactions等),同时State还会处理与executorMerkletree服务的集成。

  • 9)StateDB:为状态数据的持久层。例外情况是,Merkle tree由Merkletree服务处理。

  • 10)Aggregator:通过生成ZKPs(Zero Knowledge proofs)来consolidate强化batches。它会通过向state发送请求来获得prover所需输入数据。一旦proof生成,可通过etherman发送到以太坊。

  • 11)Prover/Executor:生成ZK proofs的服务。注意Prover/Executor并未在 https://github.com/0xPolygonHermez/zkevm-node 中实现,而是从节点的角度将其当成是“黑盒”。
    当前Prover/Executor有2版实现:

    • (a)JS参考版本实现——zkevm-proverjs库
    • (b)C语言生产版本实现——zkevm-prover库

    尽管Prover/Executor是完全相同的软件/服务,但是,实际运行时具有不同的目的:

    • (a)作为Executor:提供EVM实现,支持交易处理,并获得所需result metadata(如state root、receipts、logs)
    • (b)作为Prover:生成ZKPs
  • 12)Merkletree:该服务中存储Merkle tree,包含了所有的账号信息(如balances、nonces、smart contract code 和 smart contract storage)。Merkletree模块也并未在 https://github.com/0xPolygonHermez/zkevm-node 中实现,而是作为节点的一个外部服务。Merkletree的实现见https://github.com/0xPolygonHermez/zkevm-prover(即与Prover/Executor实现在同一仓库内)。

3. Polygon zkEVM节点角色

Polygon zkEVM节点软件支持以多种角色运行,不同的角色启动不同的服务。zkEVM节点软件内的大多数服务都可以不同实例运行,而JSON RPC服务可运行在多个实例中(而所有其它服务仅能有一个实例)。

Polygon zkEVM的角色主要有:

  • 1)RPC角色
  • 2)Trusted sequencer角色
  • 3)Permissionless sequencer角色
  • 4)Aggregator角色

3.1 RPC角色

任何人都可承担RPC角色。
运行RPC角色所需服务和模块有:

  • 1)JSON RPC:可运行在分离的实例中,可具有多个实例。
  • 2)Synchronizer:为单个实例,可运行在分离的实例之上。
  • 3)Executor & Merkletree:为服务,可运行在分离的实例之上。
  • 4)StateDB:为Postgres SQL,可运行在分离的实例中。

必须仅能有一个synchronizer,且推荐对executor实例具有独占访问(并不是必须的)。

RPC角色可运行在单一实例内,但是,若随着收到请求数的增加,性能有所下降的话,将JSON RPC和executor服务运行在多个实例内 是有益的。

3.2 Trusted sequencer角色

Polygon zkEVM网络中仅能有一个实体承担trusted sequencer角色。该角色在智能合约内强化,合约内trusted sequencer的相关方法仅可由具有特定私钥的owner执行。

运行Trusted sequencer角色所需服务和模块有:

  • 1)JSON RPC:可运行在分离的实例中,可具有多个实例。
  • 2)Sequencer & Synchronizer:为一起运行的单个实例。
  • 3)Executor & Merkletree:为服务,可运行在分离的实例之上。
  • 4)Broadcast:可运行在分离的实例之上。
  • 5)Pool DB:为Postgres SQL,可运行在分离的实例中。
  • 6)StateDB:为Postgres SQL,可运行在分离的实例中。

注意,JSON RPC需要接收交易,推荐将JSON RPC运行在分离的实例之上,具体取决于网络负载,可有多个JSON RPC。同时推荐JSON RPC和Sequencer不共享相同的executor实例,以确保sequencer对executor具有独占性访问。

3.3 Permissionless sequencer角色

待续。。。

3.4 Aggregator角色

任何人都可承担Aggregator角色。

运行Aggregator角色所需服务和模块有:

  • 1)Synchronizer:为单一实例,运行在分离的实例之上。
  • 2)Executor & Merkletree:为服务,可运行在分离的实例之上。
  • 3)StateDB:为Postgres SQL,可运行在分离的实例中。
  • 4)Aggregator:为单一实例,运行在分离的实例之上。
  • 5)Prover:为单一实例,运行在分离的实例之上。
  • 6)Executor:为单一实例,运行在分离的实例之上。

推荐将prover运行在分离的实例之上,因其对硬件有重要的要求。此外,其它模块可运行在单一实例上。文章来源地址https://www.toymoban.com/news/detail-455488.html

到了这里,关于Polygon zkEVM网络节点的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 二叉树详解(深度优先遍历、前序,中序,后序、广度优先遍历、二叉树所有节点的个数、叶节点的个数)

    目录 一、树概念及结构(了解)  1.1树的概念  1.2树的表示  二、二叉树概念及结构  2.1概念  2.2现实中的二叉树: 2.3数据结构中的二叉树: 2.4特殊的二叉树:  2.5 二叉树的存储结构  2.51 顺序存储:  2.5.2 链式存储: 三、二叉树性质相关选择题练习  四、二叉树的实现 4

    2024年02月03日
    浏览(45)
  • 网络安全引言(网络安全概述、计算机安全、OSI安全体系、网络安全模型)

    1.1 网络中的“安全”问题 信息安全经历两大变革: 从物理和管理方法 转变成 自动化工具保护信息安全 终端普遍使用 网络传输数据并保证数据安全 网络中的“安全”问题 监听 截获 篡改 假冒 假冒网点 Email截取 否认 1.2 网络安全定义 网络安全是一个跨多门学科的综合性科

    2024年02月19日
    浏览(53)
  • MetaMask 添加BSC、Polygon网络配置

    打开浏览器,点击MetaMask插件,选择网络,点击弹窗中的“Add Network”按钮 添加各网络配置如下: key value 网络名称(Network Name) Binance Smart Chain Mainnet 或 BSC Mainnet (可随意取名) 新RPC网址(New RPC URL) https://bsc-dataseed1.binance.org 链ID(Chain ID) 56 货币符号(Currency Symbol) BNB

    2023年04月08日
    浏览(38)
  • 使用 Coinbase 在 Polygon 网络上获取 MATIC

    如何从 Coinbase 获取 MATIC 到 Polygon 主网上的 MetaMask 钱包 了使用Nifty Pixels,你需要一些 MATIC——Nifty Pixels 上使用的加密货币!一种方法是使用 Coinbase 和Polygon bridge。我们不推荐这种方法,因为它的费用很高。你应该使用更便宜的方法,比如Kucoin或Crypto.com 这一步是不言自明的。

    2023年04月19日
    浏览(36)
  • zk、zkVM、zkEVM及其未来

    zk(zero-knowledge)proof:可保证计算的完整性、正确性和隐私性,在区块链扩容和隐私领域大有可为。 zk-SNARK和zk-STARK各具优势,二者结合潜力无穷。 zkVM可为应用增加零知识证明,zkVM可以按mainstrem、EVM或新构建的指令集进行分类。 EVM兼容性包括EVM兼容性、等价性和规范级兼容

    2024年01月19日
    浏览(41)
  • Scroll zkEvm技术设计全面思考

    目录 前言 背景 在 zk-Rollup 中构建通用 DApp 在 zk-Rollup 中构建通用 DApp 有两种方式。

    2024年01月22日
    浏览(36)
  • 区块链知识系列 - 系统学习EVM(四)-zkEVM

    区块链知识系列 - 系统学习EVM(一) 区块链知识系列 - 系统学习EVM(二) 区块链知识系列 - 系统学习EVM(三) 今天我们来聊聊 zkEVM、EVM 兼容性 和 Rollup 是什么? rollup顾名思义,就是把一堆交易卷(rollup)起来变成一个rollup交易,所有节点接收到这个rollup交易之后,不去执行被卷起

    2023年04月09日
    浏览(43)
  • 【区块链】科普:零知识证明、ZKRollup 与 zkEVM

    译者语:2023 年将迎来 zkEVM 大发展,让我们看看有哪些项目在进行 zkEVM 的研究,zkEVM 可以做什么 原文链接: https://blog.pontem.network/zk-proofs-301-zksync-other-zkevm-b28641dc8565 这篇文章让我们解释一下zkEVM是如何工作的,为什么它们是如此重要的创新。 零知识(ZK)证明是一种加密技

    2024年02月06日
    浏览(48)
  • zkEVM战局简析:zkSync、StarkNet、Scroll和挑战者们

    不同的项目正在探索不同的方向,这或许是最利于行业的发展模式。 原文作者: Grant Griffith, 由 Odaily星球日报  Azuma  编译。 编者按:10 月 28 日,由 Matter Labs 构建的以太坊扩容解决方案正式发布了 zkSync 2.0 的第一阶段 Baby Alpha,虽然出于测试需求,该网络暂时不会向外部参

    2024年02月08日
    浏览(36)
  • 网络爬虫丨基于scrapy+mysql爬取博客信息

    本期内容 :基于scrapy+mysql爬取博客信息并保存到数据库中 实验需求 anaconda丨pycharm python3.11.4 scrapy mysql 项目下载地址:https://download.csdn.net/download/m0_68111267/88740730 本次实验实现了:使用Scrapy框架爬取博客专栏的目录信息并保存到MySQL数据库中,实验主要涉及到Python的爬虫技术以

    2024年03月18日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包