Celestia研究员:解读4种新Rollup方案

    作者:NashQ,Celestia;编译:林克,《极客web3》导语:本文由Celestia研究员NashQ关于Rollup模型分析的零散发言整合而成,包含4种新的Rollup变体。此前,在《站在Celestia的视角解析Rollup:6种变体的审查抗性和活性》一文中,他列举了6种不同的Rollup模型,而本文是他在此基础上新抽象出的4类Rollup模型。此前,NashQ将定序器Sequencer分成聚合器+HeaderProducer两大模块,从交易指令的生命周期切入,讲解了Celestia主权Rollup的运作原理,探讨了不同Rollup变体的抗审查性和活性,以及用户在信任最小化前提下的最低配置(就是要达到Trustless,Rollup用户至少要运行哪些类型的节点)。变体7:BasedRollup+多个HeaderProducer+“highestProtocolMEV”在这个Rollup变体中,Rollup网络用户直接把交易数据发布到DA层区块上,然后HeaderProducer负责交易排序,MEV被其提取。显然,Rollup变体7的交易聚合/包含流程,与以前介绍过的BasedRollup一样,由DA层负责(用户直接把交易发到DA层),但交易排序与BasedRollup不同,DA层节点不负责排序,由HP(HeaderProducer)负责。下面假设有三个HP,它们彼此存在竞争关系,并且遵守名为“highestProtocolMEV”的MEV分配协议。该协议由Cosmos生态的SkipProtocol提出,不同于以太坊PBS方案,BlockBuilder需要额外支付一笔付给区块链网络Validator的“小费”,付小费最多的Builder构建的区块会被Validator们采纳。同时,SKIPProtocol提出了“主权MEV”的概念,意图让公链网络的全体Validator及社区有对MEV分配的自主权,解决以太坊PBS中Builder因飞轮效应越来越中心化的问题(但这不是本文要探讨的核心)。在本文介绍的Rollup变体中,不同的HeaderProducer需要在自己创建的BatchHeader中声明小费金额,付小费最多的HP发布的BatchHeader自动被Rollup的节点们接纳(通过节点代码中写好的账本分叉选择算法自动完成)。除此之外,HP发布的BatchHeader必须能够对应DA层上的完整交易批次Batch。如果HP发布的Header存在错误,比如交易执行结果Stateroot不对,或者没有包含Batch中的某笔交易(丢交易),诚实的Rollup全节点会向轻节点广播欺诈证明Fraudproof。但通常(乐观情况下),轻节点可以接受HP发布的Header并相信它没有问题。抗审查性分析:该Rollup存在2处可进行交易审查的点。

    第一处存在于DA层,它可以审查交易内容,并拒绝包含某些用户的交易。第二处还是存在于DA层,它可以审查HP提交上去的Header,并拒绝包含某个Header,这样它就可以和Header串谋,通过审查攻击来垄断MEV。同时,交易排序由HP负责,由于有欺诈证明的存在(可以针对HP丢交易的情况),HP自己往往不会展开审查攻击,但它可以贿赂DA层的节点去做(或者自己跑一些DA层的节点)。对此的解决方法是,延长Rollup交易序列被最终敲定的窗口期,使得被恶意DA层节点拒绝的Header,可在窗口期结束前及时被诚实DA层节点包含上链,进而增加DA层节点审查攻击的难度。活性:L=L_da&&(L_hp1||L_hp2||L_hp3)如果DA层出现活性故障,则Rollup也会出现活性故障。在此基础上,仅当所有HP都出现活性故障时,Rollup才会出现活性故障。变体8:共享聚合器+去中心化Prover的ZKRollup变体8使用共享聚合器SharedAggregator(SA)进行交易包含+排序,由SA将交易序列Batch发布到DA层上,交易序列发到DA层后,交易次序理论上不再改变。而在Batch发到DA层之前,共享聚合器SA可以先将Batch+SAHeader广播给全节点和Prover,将SAHeader广播给轻节点,只是此时未上DA层的Batch还不稳定,随时可能被替换。需要注意的是,共享聚合器SA发布的Header与HP发布的BatchHeader不是一样东西。SAHeader包含了密码学证明,确保Rollup节点从DA层读取的Batch的确由SA生成,而不是它人伪造的。Prover从DA层读取交易批次Batch(也可以直接向共享聚合器同步),生成一个ZKProof+BatchHeader,发布到DA层。显然Prover充当了HP的角色。对于Rollup的轻节点而言,收到ZKProof后,这个Batch包含的交易序列就完成了最终确认。

    当然,Prover也可以通过DA层链下的Rollupp2p网络广播ZKP,使其更快的被轻节点接收,但此时ZKP还没发到DA层上,还不具备“最终性”。抗审查性:变体8中,DA层不能对某些笔特定的交易进行审查攻击,只能针对共享聚合器提交的整个交易批次Batch审查攻击。同时,共享聚合器可以拒绝打包某些用户的交易。活性:L=L_da&&L_sa&&L_pm。该变体中,任何部分出现活性故障,则Rollup都会出现活性故障。如果Prover故障,那么轻节点将无法有效的同步Rollup账本进度。但由于全节点同步了所有的交易序列Batch,它可以跟上账本进度。此时全节点不受影响,轻节点全部失效,等价于以前介绍过的采用共享聚合器的BasedRollup的情况。信任最小化的最低配置:DA层轻节点+共享聚合器网络轻节点+Rollup轻节点变体9:共享聚合器+去中心化Prover+有多个DA的ZK-Rollup变体9其实基于上面的变体8展开,只是其DA层不止一个,这样可以有效提高Rollup的活性。变体9中,共享聚合器SA可以将交易序列Batch发布到任意一个DA层上,它可以根据自己的需求选择不同的DA层发布数据,这样就可以动态优化Rollup的相关参数,比如:数据成本、安全性、活性、交易延迟和最终性。根据Rollup项目方的需求,可以定制最便宜、最安全、最活跃、结算速度的Rollup,选用吞吐量最高的DA层。一般而言,某个Rollup区块高度(比如第1万个)的Batch不必同时存在于不同的DA层上,但如果存在,它们的内容必须一致。如果不同的DA层上出现了高度相同、内容不同的两个Batch,则说明共享聚合器故意搞账本分叉。

    这里,我们选用了和变体8相同的去中心化ProverMarket,由Prover充当HeaderProducer,发布BatchHeader和ZKProof。此时,Prover需要通过变体7中提到的小费竞拍机制展开竞争(由SKIPProtocol提出)。变体9的交易结算速度(最终确认速度)受它采用的出块最快的DA层影响。抗审查性:共享聚合器可以搞审查攻击,但可选的DA层变多了,与DA层相关的审查攻击可能性降低了。活性:L=(L_da1||L_da2)&&L_sa&&L_pm。与之前的变体相比,变体9活性更强。只要不是全部DA层网络出现活性故障,一切就能够正常进行。信任最小化的最低配置:不同DA层的轻节点+共享聚合器网络轻节点+Rollup轻节点。显然,我们采用的DA层越多,就必须运行越多的轻节点。但这样做的好处可能会盖过其成本。变体10:两个ZK-Rollups+去中心化Prover,彼此间有一个链上轻节点(可桥接)变体10是变体5的扩展,目的是创建2个可以相互桥接的ZK-Rollup。相比于变体5(BasedRollup+ZKP+去中心化Prover),变体10多了一个中继器Relayer角色,它将BatchHeader+ZK-Proof包装到一笔交易中。只要将这笔交易发给Rollup2运行的Rollup1轻节点,就能证明某个高度的Batch是有效的。

    当然,Rollup2还需要运行DA层的轻节点。这是保持跨链桥信任最小化的先决条件。但如果是从以太坊Rollup(基于智能合约的SCRollup)上往以太坊跨链,则不需要再运行Rollup的DA层轻节点,因为DA层就是以太坊本身。这一点与Celestia的主权Rollup极为不同,后者的Rollup之间互跨,必须运行对方DA层的轻节点。当Relayer发送跨链交易时,它将被Rollup2的聚合器2和HP2处理。我们将两者都添加到图中,以理解Rollup2的节点如何处理跨Rollup的交易。Rollup2的中继器Relayer将获取Rollup2的BatchHeader和ZKP,并将其发回Rollup1。Rollup1还有一个Rollup2的轻节点和DA层的轻节点。我们可以让模型更加简化。假设两个Rollup使用相同的共享聚合器和HeaderProducer,换言之,他们采用的DA层是重合的。在这种情况下,可以直接将Relayer取缔。因为BatchHeader和ZKProof已由HP发布到相同的DA层,因此可以直接在DA层上读取另一个Rollup的Header和ZKP等数据,不再需要经由Relayer传给共享聚合器。显然,使用相同DA层的Rollup不需要依赖于Relayer(很多跨链桥都依赖中继节点)。这可以解决跨链桥的安全问题(从这点来看,以太坊的SCRollup之间的互跨,安全性要高于不同公链间的跨链)。此时,信任最小化的最低配置:DA层轻节点+Rollup轻节点。