作者:NashQ,Celestia;编译:林克,《极客web3》
导语:本文由Celestia研究员NashQ关于Rollup模型分析的零散发言整合而成,包含4种新的Rollup变体。此前,在《站在Celestia的视角解析Rollup:6种变体的审查抗性和活性》一文中,他列举了6种不同的Rollup模型,而本文是他在此基础上新抽象出的4类Rollup模型。
此前,NashQ将定序器Sequencer分成聚合器+Header Producer两大模块,从交易指令的生命周期切入,讲解了Celestia主权Rollup的运作原理,探讨了不同Rollup变体的抗审查性和活性,以及用户在信任最小化前提下的最低配置(就是要达到Trustless,Rollup用户至少要运行哪些类型的节点)。
变体7 : Based Rollup+多个Header Producer+“highest Protocol MEV”
在这个Rollup变体中,Rollup网络用户直接把交易数据发布到DA层区块上,然后Header Producer负责交易排序,MEV被其提取。显然,Rollup变体7的交易聚合/包含流程,与以前介绍过的Based Rollup一样,由DA层负责(用户直接把交易发到DA层),但交易排序与Based Rollup不同,DA层节点不负责排序,由HP(Header Producer)负责。
下面假设有三个HP,它们彼此存在竞争关系,并且遵守名为“highest Protocol MEV”的MEV分配协议。该协议由Cosmos生态的Skip Protocol提出,不同于以太坊PBS方案,Block Builder需要额外支付一笔付给区块链网络Validator的“小费”,付小费最多的Builder构建的区块会被Validator们采纳。同时,SKIP Protocol提出了“主权MEV”的概念,意图让公链网络的全体Validator及社区有对MEV分配的自主权,解决以太坊PBS中Builder因飞轮效应越来越中心化的问题(但这不是本文要探讨的核心)。
在本文介绍的Rollup变体中,不同的Header Producer需要在自己创建的Batch Header中声明小费金额,付小费最多的HP发布的Batch Header自动被Rollup的节点们接纳(通过节点代码中写好的账本分叉选择算法自动完成)。
除此之外,HP发布的Batch Header必须能够对应DA层上的完整交易批次Batch。
如果HP发布的Header存在错误,比如交易执行结果Stateroot不对,或者没有包含Batch中的某笔交易(丢交易),诚实的Rollup全节点会向轻节点广播欺诈证明Fraud proof。但通常(乐观情况下),轻节点可以接受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的ZK Rollup
变体8使用共享聚合器Shared Aggregator(SA)进行交易包含+排序,由SA将交易序列Batch发布到DA层上,交易序列发到DA层后,交易次序理论上不再改变。
而在Batch发到DA层之前,共享聚合器SA可以先将Batch+ SA Header广播给全节点和Prover,将SA Header广播给轻节点,只是此时未上DA层的Batch还不稳定,随时可能被替换。
需要注意的是,共享聚合器SA发布的Header与HP发布的Batch Header不是一样东西。SA Header包含了密码学证明,确保Rollup节点从DA层读取的Batch的确由SA生成,而不是它人伪造的。
Prover从DA层读取交易批次Batch(也可以直接向共享聚合器同步),生成一个 ZK Proof+Batch Header,发布到DA层。显然Prover充当了HP的角色。
对于Rollup的轻节点而言,收到ZKProof后,这个Batch包含的交易序列就完成了最终确认。当然,Prover也可以通过DA层链下的Rollup p2p网络广播ZKP,使其更快的被轻节点接收,但此时ZKP还没发到DA层上,还不具备“最终性”。
-
抗审查性: 变体8中,DA层不能对某些笔特定的交易进行审查攻击,只能针对共享聚合器提交的整个交易批次Batch审查攻击。同时,共享聚合器可以拒绝打包某些用户的交易。
-
活性: L = L_da && L_sa && L_pm。该变体中,任何部分出现活性故障,则Rollup都会出现活性故障。如果Prover故障,那么轻节点将无法有效的同步Rollup账本进度。但由于全节点同步了所有的交易序列Batch,它可以跟上账本进度。此时全节点不受影响,轻节点全部失效,等价于以前介绍过的采用共享聚合器的Based Rollup的情况。
-
信任最小化的最低配置: 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相同的去中心化Prover Market,由Prover充当Header Producer,发布Batch Header和ZKProof。此时,Prover需要通过变体7中提到的小费竞拍机制展开竞争(由SKIP Protocol提出)。
变体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(Based Rollup+ZKP+去中心化Prover),变体10多了一个中继器Relayer角色,它将Batch Header+ZK-Proof包装到一笔交易中。只要将这笔交易发给Rollup2运行的Rollup1轻节点,就能证明某个高度的Batch是有效的。当然,Rollup2还需要运行DA层的轻节点。
这是保持跨链桥信任最小化的先决条件。但如果是从以太坊Rollup(基于智能合约的SC Rollup)上往以太坊跨链,则不需要再运行Rollup的DA层轻节点,因为DA层就是以太坊本身。这一点与Celestia的主权Rollup极为不同,后者的Rollup之间互跨,必须运行对方DA层的轻节点。
当Relayer发送跨链交易时,它将被Rollup2的聚合器2和HP2处理。我们将两者都添加到图中,以理解Rollup2的节点如何处理跨Rollup的交易。
Rollup2的中继器Relayer将获取Rollup 2的Batch Header和ZKP,并将其发回Rollup1。Rollup 1还有一个Rollup 2的轻节点和DA 层的轻节点。
我们可以让模型更加简化。假设两个Rollup使用相同的共享聚合器和Header Producer,换言之,他们采用的DA层是重合的。
在这种情况下,可以直接将Relayer取缔。因为Batch Header和ZK Proof已由HP发布到相同的DA层,因此可以直接在DA层上读取另一个Rollup的Header和ZKP等数据,不再需要经由Relayer传给共享聚合器。
显然,使用相同DA层的Rollup不需要依赖于Relayer(很多跨链桥都依赖中继节点)。这可以解决跨链桥的安全问题(从这点来看,以太坊的SC Rollup之间的互跨,安全性要高于不同公链间的跨链)。
此时, 信任最小化的最低配置: DA层轻节点+Rollup轻节点。