今天我们主要讨论Rollup中的定序器。定序器是属于特权参与者的角色,在许多Rollup系统中都存在。定序器接收用户的交易,对其进行排序并批量提交到Layer1网络上。
定序器的存在主要是为了保持协调的简单高效。每个Rollup系统通常都有一个定序器,由系统创建者运行。定序器负责为交易排序,因此当接收到用户的交易时,定序器可以立即挖矿,并向用户返回确认,从而改善用户体验。
一些人可能担心定序器会攫取个人最大化价值(MEV),这种担心是正常的,会在后面讨论。
如果定序器忠于职守,那么一切都好。但如果定序器作恶,欺骗用户并试图破坏网络,我们该如何应对呢?
首先,定序器不能偷取用户的资金。Rollup架构保证了状态转换的有效性(Optimistic通过欺诈证明,ZkRollups通过有效性证明)。
其次,定序器可以审查用户的交易。定序器通常是JSONRPC节点,类似于Infura,定序器可以谎报网络状态或审查用户交易。然而,审查本身并不是一个大问题,因为所有Rollup系统都可以通过不可审查的Layer1发布Layer2交易。协议要求定序器在几分钟内将用户交易打包到Rollup中。如果定序器谎报状态,用户需要自己运行节点重新创建Rollup状态,这和在Layer1上的情况类似。
此外,定序器可以谎称交易已得到即时确认。定序器可以谎报当前网络状态和交易是否被打包。例如,定序器可以对用户谎称交易已成功,但实际上被撤销了。只有被发布在Layer1上的Rollup交易才是最终确定的。Rollup的Web3.0库通常可以提供用户界面,告知用户Rollup交易的处理进度。
未来可能的解决方案之一是,让定序器在收到用户交易时进行签名确认,如果交易未被打包到Rollup中,用户可以惩罚定序器。这可以通过类似瞭望塔的服务自动化执行。
定序器技术目前还处于发展初期。未来,我们将看到更多复杂的设计来解决这些问题。例如,我们可以运行一个免许可的PoS网络,由多个定序器组成,每个批次的交易由网络中随机选取的定序器打包到Layer1上,这将增强抗逆性和抗审查性。定序器需要提供保证金,一旦作恶就会被罚没。例如,Arbitrum正在试验一种公平的协议来发现正确的交易排序。
当然,我们也可以选择不打击MEV,而是接受它。参与方可以通过竞标的方式获得一段时间内运行定序器的权利。但这个想法存在一些问题。
如果想深入了解Rollup的设计方面,可以阅读V神的文章中关于谁可以提交批量交易的部分。
总之,我认为定序器在去中心化和速度之间取得了良好的平衡。目前我们看到的只是定序器的最小可行产品,Rollup的应用还不止于此,新的应用正在开发,未来可期。