Based Rollup实质是将MEV权限转移给L1生态参与者的一种Rollup类型,他更类似一种权利上交,强调的是金融和生态属性,实际上并不是一个新的Rollup方式,他可以基于ZK Rollup来构建这套体系。
基础知识
MEV:MEV并不是单纯指区块和交易的手续费,在目前环境下,MEV更加倾向于非基础手续费的额外收入部分。
Layer2: 具有完整的区块链所有层的链,但是会将交易数据传递到Layer1上,并且可以通过不同方式实现两条链通讯,并且在ZK Rollup中还能验证交易的正确性。
Rollup: 将Layer2数据打包到Layer1但是并不执行所有交易内容的步骤,不同Rollup有不同的通讯方式和交易正确性保证。
Searcher:在MEV下,Searcher一般表示的是,可恨的夹子,勤劳的Swap套利者,机智抄底机器人
Builder:在MEV下,Builder一般表示的是将不同Searcher进行排序和模拟执行,并且在有限的GAS中得到最高利益的那一种执行方案的一方。
Layer2
在聊Based Rollup之前,我们先要知道一个传统的Layer2是怎么样的。
一般的Layer2由以下几个层组成
结算层 (Settlement Layer),Layer2通讯到Layer1的层,负责处理资产的存取和状态的最终确认,确保安全性。
数据可用性层 (Data Availability Layer),确保所有交易数据能够被永久访问和验证,可以选择将数据发布到以太坊主网或其他解决方案中。
共识层 (Consensus Layer),负责对交易顺序达成一致。如果选择由单一定序器(Sequencer)来确定交易的打包和排序,就是没有共识,哈哈。
执行层 (Execution Layer) 处理所有交易和智能合约的实际运行,负责状态的变更和业务逻辑的执行。
不过一般来说,代码中都不会分的那么细,很多都是混合起来,因此产生了很多模块化区块链,他们把每一个层的职责拆分的非常细致,方便接入不同方案。
实际上来看,目前只有结算层和数据可用层是和 以太坊 有关联的,也就是说,只有这两个层和ETH有直接的关系。不过,现在有些Layer2选择使用更便宜的方式来实现可用层,比如选择Celestia,将数据上传到这里。结算层只负责最后的资金进出。
在这种情况下,ETH是非常被动的,因为OP的乐观机制下,某种意义上来说一个Hash就算结算了,在ZK的情况下,费用也非常低。因此,越来越多的Layer2实际处于一种半独立的状态,他们享受着Layer2的红利,吃着ETH的生态,最后只给ETH提供一点点🤏的费用。
Based Rollup
看完上面的情况,Based Rollup实际上来说是一个专门为了将资金回流ETH而设计的概念。在Based Rollup下,实际上是让出了公式层的权限,交给Layer1的各方一起执行,比如验证者,区块打包者,MEV交易提交者。实际上看,就是将一部分的收益以一种合法上贡的方式给ETH生态提供利益。
当然,实际上的好处并不是这些,我们知道,共识层 -- 其实也就是定序器,因为Layer2的大部分共识层都是只有一台服务器的,所以如果这服务器因为某种原因被攻击或者被破坏,轻则链停摆,重则资金大量损失(比如阻止预言机价格变化)。所以,将共识层进行一种去中心化是非常合理且清真的设计。
但是,这并不意味着Layer2放弃所有的手续费收入,因为Based Rollup的手续费依然是交给Layer2,只是MEV收入交给Layer2的builder。目前Layer2的MEV都并不完善,交给Layer1的Searcher和Builder也是一种不错的选择。
如何实现?
我们首先要补充一个知识点,Layer2的区块是怎么进入Layer1的。实际上Layer2的区块会经过两步从而在Layer1上确认。
Commit - Layer2将交易数据,区块结果,区块信息等提交到Layer1上。
Finalized - 确认Commit的结果是正确的,如果是ZK就是就是验证Proof。
在标准流程中生成Commit之前需要做的是,收集交易,定序器打包成区块,再等待Commit推上ETH主网。
而在Based Rollup中,这个过程变成了由L1的Builder创建这个Commit交易,并且提交到主网。这样就可以成功的把中心化的定序器变成了一个由L1主导的,具有竞争的打包过程。
这个过程虽然会需要消耗L1 Builder的一部分计算能力,但是只要MEV的收益足够,这点消耗根本就不是问题。
问题在于?
目前来说Based Rollup是很美好的,从暗面来说是让ETH重新掌握了L2的控制权,从明面来说则是把Layer2的安全性直接提升到了彻底由ETH保证的阶段 -- DA,结算,共识。这样Layer2只需要诚实的按照ETH上的数据执行就可以完成原来的工作,某种角度来说,所有的方向都很完美。唯一的问题在于,Layer2的出块基于Layer1的出块速度,会导致整体Layer2的速度变慢。也就是说,Layer2的出块速度会被强制和Layer1平齐。
解决方案
在Based Rollup的ethresearch原始文章中,作者同样提到了这个问题,他给出了一个解决方案。
pre-confirmations: Fast pre-confirmations are trivial with centralised sequencing, and achievable with an external PoS consensus. Fast pre-confirmations with L1 sequencing is an open problem with promising research avenues including EigenLayer, inclusion lists, and builder bonds.
预确认:使用中心化排序器进行快速预确认非常简单,使用外部的PoS共识也能实现。然而,使用L1排序进行快速预确认仍是一个未解决的问题,目前有一些有前景的研究方向,包括EigenLayer、包含列表(inclusion lists)和构建者债券(builder bonds)。
目前来看,Puffer的白皮书中使用了其中两种方案来实现(代码没看到)。
首先是构建者债券(Puffer应该是验证者),Puffer需要购买或者铸造VT才能有权限成为验证者。并且,VT是会被消耗的,也就是说这其实是一项技术活。
然后是预确认机制,Puffer让所有的Puffer验证者都存放了一定的担保金,这样可以保证验证者无法0成本地随意修改之前已经承诺好的区块。因为Layer2的出块时间一定小于Layer1的出块时间,所以在Layer1的内存池中一定会有很多在等待的batch,而这些已经被预确认并且在Layer2上执行了,所以如果此时验证者随意的修改原来的Commit,就会有相应的处罚机制来处罚。
补充一下预确认机制:在这个场景下,我们认为一个交易实际上决定了Layer2的一个区块的内容,在没有真正的在Layer1上执行前,这些交易都是被其他Builder用更高的GAS去决定区块内容,因为谁都可以构建区块的Commit。又因为出块速度很快,所以一般来说会积累很多个Commit在内存池中,很容易混乱。预确认可以认为是由某个中心化程度高一点的系统,先确定了一定会按照这个顺序,这些内容提交,并且在Layer2上预先执行,如果这个系统没有完成承诺,则会进行惩罚。
Puffer的不足
但是,因为puffer这种方式类似于某种乐观形式的验证者者网络,我从技术上感觉实现的并不是100%完美,也许在未来也有其他的更好的方案。
并且,Puffer这种采用自己的验证者进行出块,我感觉是稍微违背了一下Based Rollup的初衷,因为Based Rollup描述的是一种可以让Layer1的builder自主的去进行打包,而不是需要单独进入一个新的质押系统才能完成,这个方案在逻辑上没有问题,但是在去中心化程度上来说并不是最出色的。不过为了解决内存池中的不可靠排序,在没有一个较好的方案下,这个方案也是合理的折中选择。
我的观点
Based Rollup确实是一种不错的Rollup增强,通过简单的机制让以太坊生态重新掌握控制权,避免Layer2再上演自立为王的戏码,同时也能看出谁才是真正的Layer2,谁是打着Layer2的名号去分裂ETH生态,ETH通过EIP4844击碎了第三方DA的宏图大业,而Based Rollup要挑战的,是那些无情的吸血鬼。
但是目前的方案肯定是不够格的,Puffer的UniFi也只是完成了Based Rollup的部分蓝图,在完整的,完全的由ETH生态接管之前,Based Rollup依然只是一种存在于理论的幻想。也许在未来,ZK方案越发成熟,Based Rollup的方案也会越容易实现。
👍写的比之前的 3box school 好多了。好奇的看这里 https://school.3box.tech/learn/base-solidity/1-normal-type