区块见闻 区块见闻
Ctrl+D收藏区块见闻
首页 > 币安币 > 正文

LYG:zkEVM系列第一篇:Polygon zkEVM的整体架构和交易执行流程_比特币

作者:

时间:

来源:BinaryDAO

Author:0xhhh

Editor:RedOne

本文是PolygonzkEVM系列文章的第一篇,简要阐述了PolygonzkEVM的整体架构和交易执行流程,并且分析了PolygonzkEVM是如何实现计算扩容并同时继承以太坊的安全性的。

3月27日,PolygonzkEVM主网测试版本正式上线,Vitalik在上面完成了第一笔交易。

本文是PolygonzkEVM系列文章的第一篇,简要阐述了PolygonzkEVM的整体架构和交易执行流程,并且分析了PolygonzkEVM是如何实现计算扩容并同时继承以太坊的安全性的。

同时还会在接下来两篇文章里详细介绍PolygonzkEVM的zkEVMBridge和zkEVM的设计细节,以及PolygonzkEVM接下来的去中心化Sequencer的路线图。

一、Rollup为了给以太坊实现计算扩容

首先,我们需要明确Rollup的大概工作原理。Rollup的出现是为了给Ethereum实现计算扩容,具体的实现方法是将交易的执行外包给Rollup,然后将交易和交易执行后的状态(State)存储在Ethereum的合约内,由于技术路线的不同演变出了两种类型的Rollup:

OptimisticRollup

乐观的认为发送到Ethereum的Rollup交易(RollupTransaction)和对应的Rollup状态(RollupState)都是正确的,任何人都可以通过提供欺诈证明(FraudProof)对还处于挑战期的RollupState进行挑战(Challenge)。

Zero-knowledgeRollup

ZK会为发送到Ethereum的Rollup交易和对应的Rollup状态提供一个有效性证明(由以太坊上的合约验证,来证明Rollup的执行对应交易后的状态是正确的)。

参考以太坊官方定义:

Immutable:超过20家游戏公司已与Immutable合作,支持Immutable zkEVM发布:金色财经报道,Web3游戏平台Immutable已开始与Polygon Labs合作对其Immutable zkEVM进行公开测试。Immutable宣布与Polygon Labs建立合作伙伴关系后,零知识以太坊虚拟机(zkEVM)网络的工作于3月份开始。Polygon自己的“圣杯”以太坊扩展zkEVM于3月27日登陆主网。Immutable在8月14日的声明中表示,其zkEVM将使游戏开发者能够降低开发成本,并获得以太坊生态系统带来的安全性和网络效应。

据Immutable称,超过20家游戏公司已与Immutable合作支持此次发布,其中包括GameStop、TokenTrove市场、网络游戏发行商Kongregate、游戏设计师iLogos等。[2023/8/15 21:23:44]

https://ethereum.org/en/developers/docs/scaling/#rollups

Zero-knowledgeRollup和OptimisticRollup最大的区别就是由于验证状态有效性的不同方式导致达成Finality的时间不同;

OptimisticRollup乐观的认为提交到Ethereum上的交易和状态都是正确的,所以存在7天的挑战期,期间任何人发现在Ethereum上的交易对应状态不正确都可以通过提交正确的状态进行挑战。

Zero-knowledgeRollup(zk-Rollup)达成Finality的时间,则取决于:交易对应的有效性证明(ValidityProof)提交到以太坊并且验证通过所花费的时间。目前可能在1个小时左右的Finality居多(因为需要考虑到Gas成本问题)。

二、PolygonzkEVM执行流程

接下来我们以一个简单的交易被确认流程来看看PolygonzkEVM是怎么工作的,从而对整体协议有一个具体的理解,它的整个过程可以主要分为三个步骤:

1.Sequencer将多个用户交易打包成Batch提交到L1的合约上;

Polygon zkEVM主网测试版即将上线:金色财经报道,Polygon 将于周一向公众发布 zkEVM 测试版,Polygon 表示,它正在将其 zkEVM 的所有方面都开源,因此开发人员能够研究和共享代码,从而使他们能够为零知识领域的更多创新做出贡献。

此外,以太坊区块链的联合创始人 V神 将在新的 zkEVM 上启动第一笔交易,并将于东部时间上午 10:30 在 ETHGlobal 进行直播。据 Polygon 新闻稿,目前超过 50 家公司表示他们将使用 Polygon zkEVM 技术进行构建。[2023/3/27 13:29:25]

2.Prover为每笔交易生成有效性证明(ValidityProof),并将多个交易的有效性证明聚合成一个有效性证明;

3.Aggregator提交聚合了多个交易的有效性证明(ValidityProof)到L1的合约中。

1?Sequencer将用户交易打包成Batch提交到L1合约上.

1)用户将交易发送给Sequencer,Sequencer会在本地按照收到交易的快慢顺序进行处理(FRFS),当Sequencer在本地将交易执行成功后,如果用户相信Sequencer是诚实的,那么他可以认为这个时候的交易已经达成了Finality。这里需要注意,目前大多数Sequencer内部的Mempool(交易池)都是私有的,所以暂时可以获取的MEV是比较少的。

2)Sequencer会将多笔交易打包进一个Batch里(目前是一个Batch里只包含一个交易)然后在收集到多个Batches之后,通过L1上的PolygonZKEvm.sol的SequenceBatch()函数将多个Batches一起送到L1的交易Calldata上。

Polygon zkEVM最后一个测试网现已上线:12月25日消息,Polygon zkEVM发推表示,具有显着性能升级的最终测试网现已上线,主网即将到来。

自Polygon zkEVM的公共测试网于10月推出以来,已经处理了21,966个txs,生成并验证了14,930个ZK证明,创建了10,508个钱包地址等。[2022/12/25 22:06:15]

(需要注意这里一次性提交多个Batches是为了尽可能减少L1的Gas消耗)

3)当PolygonZkEvm.sol收到Sequencer提供的Batches后,它会依次在合约内计算每个Batch的哈希,然后在后一个Batch里记录前一个Batch的哈希,于是我们就得到了下图的Batch结构。

4)每个Batch里的交易顺序也是确定的,所以当Batch的顺序确定之后,我们认为所有被包含在Batch提交到L1的PolygonzkEVM合约的交易的顺序都被确定了。

以上实际过程也是L1充当RollupDA层需要完成的工作(这个时候并没有完成任何状态检验或推进的工作)。

2.Aggregator为多个Batch的交易生成ValidityProof

1)当Aggregator监听到L1的PolyonZKEVM.sol合约中已经有新的Batch被成功的提交之后,它会把这些Batch同步到自己的节点里,然后给zkProver发送这些交易。

2)zkProver接收到这些交易之后会并行为每笔交易生成ValidityProof,再将多个Batch包含的交易的ValidityProof再聚合成一个有效性证明(ValidityProof)。

Polygon联合创始人:zkEVM公共测试网上线:金色财经报道,Polygon Technology联合创始人Sandeep Nailwal在社交媒体上表示,zkEVM公共测试网已经上线。[2022/10/11 10:30:27]

3)zkProver将聚合多个交易的ValidityProof发送给Aggregator。

3.Aggregator提交聚合证明到L1的合约

Aggregator会将这个有效性证明(ValidityProof)以及对应的这些Batch执行后的状态一起提交到L1的PolygonzkEvm.sol合约内,通过调用以下方法:

合约内接下来会执行以下操作来验证状态转换是否正确。

当这一步在L1合约内执行成功时,这部分batch包含的所有交易也就真正达成了Finality。

三、Ethereum在Polygon-zkEVM中充当的角色

上文我们已经了解了PolygonzkEVM的整体流程,可以回顾下Ethereum为Rollup做了哪些工作:

第一步,Sequencer将Rollup的交易收集起来打包成Batch之后,提交到L1的合约中。L1不仅仅提供了DA层的功能,实际上还完成了一部分交易排序的功能;当你把交易提交到Sequencer时,交易是没有真正被定序的,因为Sequencer有权力可以随便改变交易的顺序,但是当交易被包含在Batch里提交到L1合约上之后,任何人都没有权利再修改其中的交易顺序。

Offchain Labs CEO:zkEVM距离正常运行还很遥远:7月24日消息,Polygon 本周宣布开源 zkEVM 代码,但多位开发人员认为目前距离正常运行 zkEVM 还很遥远。以太坊扩容解决方案 Arbitrum 开发商 Offchain Labs 首席执行官 Steven Goldfeder 表示,我们还没有达到任何团队拥有有效的 zkEVM 证明者(prover)的地步,因此我认为 zkEVM 距离正常运行还很遥远。此外,现阶段 zkEVM 还存在一定中心化问题,因为大多数 zkEVM 构建者还没有让他们的证明者开源,包括 Scroll 和 zkSync 都还没有正式发布 zkEVM 代码。

此前报道,7 月 20 日,Polygon 已开源 Polygon zkEVM 的代码,并表示即将上线公共测试网,后续会发布更多文档来详细说明细节。据悉,Polygon zkEVM 可为开发人员和用户提供“EVM 等效”解决方案,同时增加了吞吐量并从根本上降低了费用。(Blockworks)[2022/7/24 2:34:30]

第二步,Aggregator将ValidityProof提到L1合约上来达成新的状态,Aggregator则是类似Proposer的角色,合约则类似Validator的角色;Aggregator提供了一个ValidityProof来证明一个新的状态是正确的,并告诉Validator我提供的ValidityProof涉及哪些交易Batch,他们都存在了L1的哪个位置。

接着Validator从合约中提取对应的Batch,与ValidityProof结合在一起就可以验证状态转换的合法性了,如果验证成功实际上合约内也会更新到对应ValidityProof的新状态。

四、从模块化的角度结构SmartContractRollup

如果从模块化的角度来看,PolygonzkEVM属于SmartContractRollup类型,我们可以尝试解构下它的各个模块,从Delphi给的图中,我们也可以看出实际上PolygonZkEVM作为SmartContratRollup的ConsensusLayer,DALayer和SettlementLayer其实都是耦合在PolygonZkEVM.sol合约中,并不能很好的区分。但是我们尝试着去解构各个模块:

数据可用层(DataAvailabilityLayer):Rollup交易存放的地方,对于Polygon-zkEVM来说,当Sequencer调用SequenceBatch()方法的时候,实际上就包含了往DA层提交交易数据。

结算层(SettlementLayer):具体指的是Rollup和L1之间的资金流动机制,具体指的是Polygon-zkEVM的官方桥(在下一篇文章会有详细介绍)。

共识层(ConsensusLayer):包含交易排序和如何确定下一个合法状态(分叉选择),Sequencer调用L1合约中的SequenceBatch()的时候完成了交易排序的工作,当Aggregator调用L1合约中的TustedVerifyBatches()的时候完成了确认下一个合法状态的工作。

执行层(ExecutionLayer):执行交易并且得到新的世界状态,当用户向Sequencer提交交易,并且Sequencer执行完之后得到新状态的过程(所以我们往往说Rollup是计算扩容,因为L1把执行交易得出新状态的这个过程外包给了Rollup,同时Sequencer会通过Aggregator委托zkProver帮忙生成ValidityProof。

五、为什么说Polygon-zkEVM继承了L1的安全性

从上面介绍的整体流程上看,实际上Sequencer做了类似以太坊Proposer的工作,提议了一批交易是有效交易,并且给出了这批交易执行后的新状态;而L1合约的验证逻辑,相当于所有L1的Validator都会在自己的以太坊客户端里执行一遍,实际上是所有的以太坊验证者充当了Rollup的验证者,因此我们认为PolygonzkEVM继承了以太坊的安全性。

从另外一个角度上看,因为Rollup的所有交易以及状态都存储在以太坊上,所以即便PolygonzkEVM这个团队跑路了,任何人都还是有能力依托以太坊上存储的数据,恢复整个Rollup网络。

六、PolygonzkEVM激励机制

Rollup激励机制主要指的是如何让Sequencer和Aggregator有利可图,从而保持持续性的工作的?

首先用户需要支付自己在Rollup上的交易手续费,这部分的手续费是采用ETH计价的,用BridgedETH支付。

Sequencer则需要支付这些包含Rollup交易的Batch上传到L1交易的Calldata上的成本(调用SequenceBatch(batches()的成本),同时需要在上传Batch的同时支付一定的Matic到L1合约中,用于之后支付Aggregator为这些Batches提供ValidityProof的成本。

Aggregator在调用trustedVerifyBatches为L1合约内还没有被Finality的Batches提供ValidityProof的同时,也可以取出Sequencer提前支付在合约内的MATIC代币,作为提供ValidityProof的报酬。

Sequencer的收入=Rollup所有交易的Gas费用-将Batches上传到L1花费的L1网络Gas费用-支付给Aggregator的证明费用(MATIC计价)。

Aggregator的收入=Sequencer支付的MATIC报酬-提交到ValidityProof到L1的Gas费用-ValidityProof生成花费的硬件费用。

调整支付给Aggregator的证明费用,同时为了避免Sequencer因为无利可图罢工,提供了以下的机制来调整Sequencer支付给Aggregator的证明费用。

合约中存在这样一个方法用来调整为Batch提供证明的费用:

function_updateBatchFee(uint64newLastVerifiedBatch)internal

它会更改合约中一个名为BatchFee的变量,而这个变量决定了Sequencer为每个Batch支付的MATIC代币数量。

更改机制如下:

合约中维护了这样一个变量VeryBatchTimeTarget,代表每个Batch被Sequencer提交到L1之后期望在这个时间内被验证状态。

合约内会记录所有超过了VeryBatchTimeTarget之后还没有被验证状态的Batches,并且将这些Batches的总数量记为DiffBatches。

于是当有Batches迟到的时候,会用以下公式来调整BatchFee:

MultiplierBatchFee是一个被限制在1000~1024范围的数,可以通过函数setMultiplierBatchFee()由合约管理员更改:

FunctionsetMultiplierBatchFee(uint16newMultiplierBatchFee)publiconlyAdmin

需要注意这里的采用MultiplierBatchFee和10^3是为了实现3个小数点后的调整精度。

同理假如Batches提前了也会触发相应的batchFee调整机制:DiffBatches表示提前验证状态的Batches的数量。

总结

在这篇文章里我们梳理了PolygonzkEVM的核心机制,并分析了它实现以太坊计算扩容的可行性。有了一个整体的大纲后,在接下来的文章里我们会深入到协议内部,依次解析zkEVMBridge的设计细节以及Sequencer的去中心化路线,zkProver的实现以及zkEVM的设计原理。

标签:POLYLYG比特币ENCWEXPOLYpolygon币最新消息捡了1个比特币有用吗Make A Difference Token

币安币热门资讯
STARK:理解 zk-SNARKs 和 zk-STARKS 的区别_STA

SNARK和STARK是零知识证明技术,允许一方在不透露任何进一步信息的情况下向另一方证明陈述是真实的.

稳定币:ABCDE投研合伙人:反思“USDC脱锚风波” 谈谈我眼中真正的“稳定币三杰”_PSTAR

作者:ABCDE投研合伙人老白最近硅谷银行和USDC短暂脱锚的事情占据了所有人的视线,本来Luna崩盘之后大家都已经“安于”USDT和USDC这种法币背书型稳定币了,这么一搞.

ENC:美国政府还持有多少比特币?何时出的货?_chess币价值与未来

最近我们发布了比特币关键指标仪表板,其中涉及前?100持有比特币的钱包。我们发现在这些比特币最大持有者中包括了美国政府。自?2020?年以来,美国政府已经缴获了至少?21.5?万个比特币.

BANK:比特币罕见“脱钩”美股 银行业危机成牛市导火索?或许没那么简单_FRANK

作者:木沐 近段时间全球金融市场都不怎么太平,而近年长期与美股强相关的比特币却罕见“脱钩”。有家分析显示比特币与美股的相关性触及20个月低点,走出了“一枝独秀”的独立行情.

PAS:AC Capital Panel:新兴潜力赛道—全链游戏FOCG玩法初探_ASS

Xtoearn模式的Gamefi已经成为过去式,Gamefi行业在探索新的叙事和增长点,全链游戏概念悄然升起,由于其免许可、可互操作、可组合性备受青睐,也可以和其他DeFi、NFT.

GPT:AI能取代人类吗:焦虑归焦虑 现实归现实_CHA

GPT-4的发布一石激起千层浪,相比GPT-3.5,新一代的GPT不但能看图说话、分析图表,甚至SAT数学能考700分,生物奥林匹克竞赛排名前1%,司法考试排名前10%.