ROLL:一文看懂Native Rollup:关于ZK Rollup的PoS & PoW混合共识

原文作者:?OpsideTeam–nanfengpo

关于PoS&PoW的混合共识

nativerollup是一个zk-based的3-layer扩容解决方案,其中layer2?是一个EVM-compatible且Rollup-friendly的链,layer3?则由系统原生支持的多个zkRollup组成。Layer2???为zkRollup做了很多系统层面的优化。这个3?层架构中的layer2?和layer3?,共用了一个PoS与PoW融合的共识机制:

Layer2?

PoS:layer2?将采用ETH2.0?的PoS并对其进行必要的改进。因此,layer2?的共识层将有超过10?万个验证者。任何人都可以质押token来成为验证者。这些验证者也将根据EIP-4844?提供一个数据可用性层,从而容纳layer3?的Rollup提交的batch。此外,layer2?的PoS是可证明的,validator会定期把PoS证明提交到layer1?上。validator可以获取PoS这部分的区块奖励和Gas费。

Layer3???

PoS:validator除了提议layer2?的block,也提议layer3?的block,也就是说validator同时是layer3?中nativerollup的sequencer。Sequencer可以获取其中的交易Gas费。

PoW:只要拥有zkp的算力,任意validator都可以成为nativerollup的prover。Prover为layer3?的各个Nativerollup生成zkproof。对于sequencer提交的layer3?的各个区块,prover依据PoW的规则来竞争,最先提交zkproof的prover将获得layer3?的区块奖励。

关于Nativerollup的去中心化共识机制

下面将详细介绍layer3?中的nativerollup的去中心化共识机制。

Sequencer?

sequencer?这个角色由layer2?的validator来承担。每个layer2?的区块中,所有nativerollup都有且仅有1?笔交易来提交各自的rollupblock,且这些rollupblock只能由layer2?区块的validator来提交。如果该layer2?区块中没有包含所有的nativerollup的block,则该区块无效。

即使某个nativerollup在一段时间内没有交易,sequencer也必须提交该rollup的block。此时该rollup的block为空。

sequencer?的收益是该sequencer提交的各个nativerollup的block中的交易手续费。注意,所有nativerollup中的交易手续费都是由layer2token来支付的。因此,该sequencer打包的rollup交易越多,收益也越多。

当sequencer把rollupblock打包上链后,该rollupblock就进入了finalized状态。因此该区块最终确认所需要的时间与layer2?是相同的。

如果某一个rollupblock没有在一定时间内被prover提交的proof验证,则该block会被跳过,相应的sequencer也将被slash。

Prover

与sequencer必须是当前layer2?区块的validator不同,prover可以是任意的layer2?的validator。只要一个validator具有zkp算力,即可称为任意的nativerollup的prover。

这些prover通过PoW的方式来竞争,最先提供某个rollupblock的有效proof的,就能获得相应的blockreward。注意,所有nativerollup的blockreward,都是由layer2token来支付的。这部分IDE就是layer2?的PoW部分的奖励,系统会根据zkp算力的供需平衡来自动调整PoW的奖励额度。

sequencer?打包的rollupblock中,已经包含了生成proof所需要的所有数据。因此,对于每个rollup,prover可以并行生成多个block的proof。同样的道理,这些blockproof的验证也是并行的。

当一个rollupblock和它的所有父区块都被验证时,该区块就被验证了,即verified状态。

总结

通过PoS&PoW的混合共识机制,layer2?和layer3?具有相同的共识层与验证者集合,确保了整个架构的安全性和去中心化。更为重要的是,layer3?的各个NativeRollup在底层架构上拥有了一个规范化的去中心化解决方案。layer2?定义了一个统一的系统合约,rollup的开发者只需要实现这些规范化的接口,并注册rollupslot成为nativerollup。这样,开发者可以更加关注业务逻辑的实现,而不必关心在底层架构层面layer2?与layer3?如何交互,也不需要维护rollup的全节点和zkp算力。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

链链资讯

[0:9ms0-2:997ms