ChainIDE#37 无状态Rollup
-
全节点验证区块的方式,是通过下载所有交易并重新执行它们来检查其有效性,毫不奇怪的是,更大的区块会给全节点带来更大的负担,因为处理和验证每个区块需要更多的硬件。而欺诈和有效性证明等技术使得节点能够检查有效性,而无需重新执行每笔交易。数据可用性采样技术使得节点能够验证数据可用性,同时只下载每个区块的一小部分。所谓无状态(Statelessness)是一种特性,是指全节点可以在不存储状态的情况下验证区块(这就叫无状态)。而无状态主要有两种:
1. 强无状态:不需要节点来存储状态。
2. 弱无状态:只需要区块生产者来存储状态。为了验证一个区块的有效性,全节点从一个 pre-state root 开始,它是在将前一个区块附加到链上之后的状态树的根。然后重新执行交易,生成一个新的状态根(称为 post state root)。然后,根据提议的区块头中的 post state root 来验证计算的 post state root。如果匹配,则该区块有效,如果不匹配,则该区块无效并被拒绝。但是,无状态节点一开始没有 pre-state root,因为它们不存储状态。在无状态 rollup 当中,定序器将为每个区块分配一个 pre-state root 和 post state root,以验证该区块。
因此,无状态rollup有以下2种好处
1、状态增长
取消全节点存储状态的要求会降低硬件门槛,从而降低更多用户运行全节点的障碍。减轻状态增长的负面影响对于 rollup 以及任何其他链一样重要,因为它们也很脆弱。由于弱无状态并不能免除定序器存储状态的责任,因此使用最多的 rollup 会发现状态增长可能会成为一种障碍。我们可以实施进一步的措施来减少定序器的状态增长,例如,在状态到期时,在给定的时间段内未被访问的状态将从状态中删除。顺便说一句,无状态还移除了磁盘 IO 的 DoS 攻击向量,因为无状态节点不再需要执行状态访问,如果 rollup 具有较大的状态,这将特别有用。
2、欺诈证明
无状态(Statelessness)和欺诈证明是同一枚硬币的两面,只要实现了其中一个,就能免费获得另一个。节点需要 pre-state root 和 post state root 来验证欺诈证明,这与无状态区块验证的的要求类似。诚然,关于欺诈证明还有其他考虑因素,例如单轮与多轮、bonding(绑定)以及一般审查阻力细节。讨论:
1.你认为无状态Rollup最有价值的应用在什么地方?
2.你觉得无状态rollup有可能取代原有rollup技术吗?
阅读延申:
欢迎关注我们了解更多知识
欢迎加入我们的讨论~