原文作者: Opside Team – nanfengpo
关于PoS PoW 的混合共识
native rollup是一个zk-based的3-layer扩容解决方案,其中layer 2 是一个EVM-compatible且Rollup-friendly的链,layer 3 则由系统原生支持的多个zkRollup(称为native rollup)组成。Layer 2 为zkRollup做了很多系统层面的优化。这个3 层架构中的layer 2 和layer 3 ,共用了一个PoS与PoW融合的共识机制:
Layer 2
PoS:layer 2 将采用ETH 2.0 的PoS并对其进行必要的改进。因此,layer 2 的共识层将有超过10 万个验证者。任何人都可以质押token来成为验证者。这些验证者也将根据EIP-4844 提供一个数据可用性层,从而容纳layer 3 的Rollup提交的batch。此外,layer 2 的PoS是可证明的,validator会定期把PoS 证明提交到layer 1 上。validator可以获取PoS这部分的区块奖励和Gas费。
Layer 3
PoS(Sequencer):validator除了提议layer 2 的block,也提议layer 3 的block(即data batch),也就是说validator同时是layer 3 中native rollup的sequencer。Sequencer可以获取其中的交易Gas费。
PoW(Prover):只要拥有zkp的算力,任意validator都可以成为native rollup的prover。Prover为layer 3 的各个Native rollup生成zk proof。对于sequencer提交的layer 3 的各个区块,prover依据PoW的规则来竞争,最先提交zk proof的prover将获得layer 3 的区块奖励。
关于Native rollup的去中心化共识机制
下面将详细介绍layer 3 中的native rollup的去中心化共识机制。
Sequencer
sequencer 这个角色由layer 2 的validator来承担。每个layer 2 的区块中,所有native rollup都有且仅有1 笔交易来提交各自的rollup block,且这些rollup block只能由layer 2 区块的validator来提交。如果该layer 2 区块中没有包含所有的native rollup的block,则该区块无效。
即使某个native rollup在一段时间内没有交易,sequencer也必须提交该rollup的block。此时该rollup的block为空。
sequencer 的收益是该sequencer提交的各个native rollup的block中的交易手续费。注意,所有native rollup中的交易手续费都是由layer 2 token(IDE)来支付的。因此,该sequencer打包的rollup交易越多,收益也越多。
当sequencer把rollup block打包上链后,该rollup block就进入了finalized状态。因此该区块最终确认所需要的时间与layer 2 是相同的。
如果某一个rollup block没有在一定时间内被prover提交的proof验证,则该block会被跳过,相应的sequencer也将被slash。
Prover
与sequencer必须是当前layer 2 区块的validator不同,prover可以是任意的layer 2 的validator。只要一个validator具有zkp算力,即可称为任意的native rollup的prover。
这些prover通过PoW的方式来竞争,最先提供某个rollup block的有效proof的,就能获得相应的block reward。注意,所有native rollup的block reward,都是由layer 2 token(IDE)来支付的。这部分IDE就是layer 2 的PoW部分的奖励,系统会根据zkp算力的供需平衡来自动调整PoW的奖励额度。
sequencer 打包的rollup block中,已经包含了生成proof所需要的所有数据。因此,对于每个rollup,prover可以并行生成多个block的proof。同样的道理,这些block proof的验证也是并行的。
当一个rollup block和它的所有父区块都被验证时,该区块就被验证了,即verified状态。
总结
通过 PoS PoW的混合共识机制,layer 2 和layer 3 具有相同的共识层与验证者集合,确保了整个架构的安全性和去中心化。更为重要的是,layer 3 的各个Native Rollup在底层架构上拥有了一个规范化的去中心化解决方案。layer 2 定义了一个统一的系统合约,rollup的开发者只需要实现这些规范化的接口,并注册rollup slot成为native rollup。这样,开发者可以更加关注业务逻辑的实现,而不必关心在底层架构层面layer 2 与layer 3 如何交互,也不需要维护rollup的全节点和zkp算力。