一文了解无状态 Rollup
注:原文作者是 Alex Beckett,目前就职于 Celestia。
全节点验证区块的方式,是通过下载所有交易并重新执行它们来检查其有效性,毫不奇怪的是,更大的区块会给全节点带来更大的负担,因为处理和验证每个区块需要更多的硬件。而欺诈和有效性证明等技术使得节点能够检查有效性,而无需重新执行每笔交易。数据可用性采样技术使得节点能够验证数据可用性,同时只下载每个区块的一小部分。
剩下的最后负担之一就是状态。要验证区块,全节点还必须存储整个状态的副本。随着状态的增长,对全节点的存储需求也会增加。幸运的是,状态增长在一定程度上也是可以解决的。
所谓无状态(Statelessness)是一种特性,是指全节点可以在不存储状态的情况下验证区块(这就叫无状态)。而无状态主要有两种:
-
强无状态 :不需要节点来存储状态。
-
弱无状态 :只需要区块生产者来存储状态。
强无状态引入了一个数量级的复杂性和权衡,所以我们现在只关注弱无状态。
一个(弱)无状态 rollup 是一种至少需要定序器(sequencer)来存储状态的 rollup,但全节点是无状态的。一个 optimistic rollup 可能还需要观察器( watcher)存储状态以生成欺诈证明,这取决于是否允许为定序器(sequencer)节点生成欺诈证明。
为了验证一个区块的有效性,全节点从一个 pre-state root 开始,它是在将前一个区块附加到链上之后的状态树的根。然后重新执行交易,生成一个新的状态根(称为 post state root)。然后,根据提议的区块头中的 post state root 来验证计算的 post state root。如果匹配,则该区块有效,如果不匹配,则该区块无效并被拒绝。但是,无状态节点一开始没有 pre-state root,因为它们不存储状态。
在无状态 rollup 当中,定序器将为每个区块分配一个 pre-state root 和 post state root,以验证该区块。还有许多其他细微差别,但这是无状态验证的基本思想。
如果无状态 rollup 具有一个 p2p 网络,则定序器只需将区块和相应的状态根发送到初始对等组,然后它们可以在整个网络中传播它们。但如果无状态 rollup 没有 p2p 网络(目前很多 rollup 都是这种情况),那么单个定序器将需要将区块和状态根单独分发到网络中的每个节点。在没有 p2p 网络情况下的 rollup 中实现无状态,将给定序器带来不切实际的巨大负担。因此,p2p 网络是一个先决条件。
注意事项
1、状态请求
除了验证区块,全节点还服务于状态请求(例如,将地址 0x 的账户余额发送给我……)。无状态节点与全节点一样完全验证状态转换,但依赖于全节点来访问状态。因此,仍然需要最少数量的全节点来向网络的其余部分提供状态请求。
实际上,由于硬件要求较低,用户可能会倾向于使用无状态节点,因此,能够依赖的全节点会越来越少。如果没有足够的全节点来服务于状态请求,那么无状态 rollup 将遇到瓶颈,因为状态无法在整个网络中以足够快的速度传播以满足需求。
2、交易验证
全节点在将传入交易转发到 mempool 之前验证它们,以防止 mempool 和区块生产者收到无效的垃圾交易。然而,交易验证需要访问状态以获取发送者的帐户余额和 nonce 等数据,无状态节点在没有向全节点发出状态请求的情况下无法执行这些数据。此过程会给无状态节点带来 DoS 攻击的问题,它们可能会收到垃圾交易,但不能拒绝交易,直到它们发出所需的状态请求以检查交易是否有资格转发到 mempool,此外,由于无状态节点在转发交易之前必须采取的额外步骤,因此交易传播速度会变慢。
无状态 rollup 的好处
1、状态增长
取消全节点存储状态的要求会降低硬件门槛,从而降低更多用户运行全节点的障碍。减轻状态增长的负面影响对于 rollup 以及任何其他链一样重要,因为它们也很脆弱。由于弱无状态并不能免除定序器存储状态的责任,因此使用最多的 rollup 会发现状态增长可能会成为一种障碍。我们可以实施进一步的措施来减少定序器的状态增长,例如,在状态到期时,在给定的时间段内未被访问的状态将从状态中删除。
顺便说一句,无状态还移除了磁盘 IO 的 DoS 攻击向量,因为无状态节点不再需要执行状态访问,如果 rollup 具有较大的状态,这将特别有用。
2、欺诈证明
无状态(Statelessness)和欺诈证明是同一枚硬币的两面,只要实现了其中一个,就能免费获得另一个。节点需要 pre-state root 和 post state root 来验证欺诈证明,这与无状态区块验证的的要求类似。诚然,关于欺诈证明还有其他考虑因素,例如单轮与多轮、bonding(绑定)以及一般审查阻力细节。
如果防欺诈实现允许它们在 rollup 的 p2p 网络中分布,则轻客户端在此过程中的信任度会最小化。