这篇文章详细介绍了ORU(Optimistic Rollup)中的条件关系如何提高不同Rollup之间的数据共享,分析了条件块的安全性和依赖性,以及共享排序器的扩展性感。通过互动验证游戏(IVG),条件块能够在父块未验证时快速读取远程Rollup的状态,从而实现跨链通信的效率提升。文章还提到了一些未来的工作方向。
高级概述
一个 ORU(Optimistic Rollup) 区块通过一个交互验证游戏(“IVG”)。这个游戏最终会在一段时间后输出真或假。Contingent 区块给 Rollup 区块添加了第二个有效性条件:来自其他 rollup 的 1 个或多个区块的有效性。这允许无论该 rollup 的等待期是否已经结束,都可以立即读取远程 rollup 的状态,因为如果正在读取的状态回滚,读取它的状态也必须回滚。
结构
在排序时,排序器选择一个父级进行构建,并应用状态变更以创建一个新根。每个子节点自然依赖于父节点。如果父节点回滚,子节点也会回滚。我们将这个概念进行推广,允许排序器 同时 包含来自其他 rollup 的“父”根,只要该 rollup 的有效性可以在 L1 上进行验证。排序器选择来自其他运行中的 rollup 的无争议的但待定的根,并对此进行承诺。我们称这些为“谓词(predicate)根”,因为新承诺的有效性依赖于它们。我们说一个区块是 “依赖于(Contingent)” 其谓词根。在任何时候,任何人都可以通知 Rollup 合约,某个谓词根不存在或已回滚,并使任何依赖根失效。
这些罐子仅依赖于它们下方的罐子。这与文章无关,但我最近非常喜欢将罐装沙丁鱼放在酸面包吐司上,这些看起来真的很美味。照片由 Chris King 提供,来源于 Unsplash
依赖(contingent)和谓词(predicate)之间的关系具有推广性。我们可以说“谓词 (predicate) rollup”,它包含“谓词根”来承诺“谓词状态”。然后还有一个“依赖 (Contingent) rollup”,它包含“依赖根”来承诺“依赖状态”。Rollup 可能在其历史中包含许多相互之间的谓词关系。根和状态之间的谓词关系形成一个有向无环图(DAG),其中节点是根/状态,边是谓词承诺。
排序器负责了解一个区块是否“安全”以进行谓词。任何人可以通过运行谓词 rollup 来检查一个区块是否安全。当一个区块依赖于另一个区块时,它可以访问那个其他区块中的任何状态。这是安全的,因为如果谓词状态回滚,依赖状态也会回滚。这意味着远程 rollup 的状态是可读的,而无需等待其交互验证游戏完成。 也就是说,rollup 之间的通信速度 快于 它们与 L1 之间的通信速度。
为了实现通信,依赖状态可以访问谓词根承诺的任何数据。它通过处理谓词承诺下的状态证明来实现这一点。状态证明可以由排序器提供。额外地,状态证明可以被省略。因为谓词 rollup 的状态通常被认为是可用的,可以对谓词状态证明进行并发的 IVG。换句话说,排序器不需要在谓词承诺下提供状态证明,它可以仅仅 声明存在这样的证明,并允许任何人通过 IVG 质疑该声明。
依赖的缺点:安全继承
依赖 rollup 在谓词的 IVG 持续期间继承谓词 rollup 的 IVG 风险。这意味着对谓词 rollup 的 1-of-N 假设和针对谓词 rollup 状态可用性的安全假设的依赖。因为谓词根本身可能依赖于某个其他谓词根,所以这种安全继承是传递的。一个未捕获的故障(通过有缺陷的 IVG、1-of-N 假设违背或状态不可用)可以影响任何传递的依赖 rollup。这个属性更紧密地将 rollup 安全假设相互耦合。
因此,依赖 rollup 的全节点无法在没有关于谓词 rollup 的一些信息的情况下确定依赖块的状态。它必须决定是乐观地接受谓词承诺,等待接受(可能整个 IVG 时长),还是咨询一个可信的第三方。
扩展到共享排序器
如果两个 rollup 恰好共享一个排序器,那个排序器可以在一个单一的逻辑“同步区块”中生成 每个 rollup 的多个承诺。每个元承诺包含每个 rollup 上几个迭代的 rollup 根承诺。在这种情况下,依赖关系为在同一时间提交到宿主链的承诺提供了内部排序。排序器通过交替来自每个 rollup 的区块并添加交替的依赖关系来实现这一点。生成同步区块允许在单个逻辑宿主链块内进行双向通信。
按照惯例,我们建议第一个之后的迭代承诺 仅处理跨链消息,且 仅按派发顺序 进行处理,不处理其他任何用户交易。这防止了排序器的裁量权影响执行结果。
总结
依赖关系使得 ORU 之间能够安全、快速地共享数据(所有回滚的写入导致回滚的读取,一旦区块被排序,读取即可进行,远远早于 IVG 解决时的等待)。
未来的工作:
广义化,以包括对通过 L1 staticcall 可用的任何数据的谓词
更全面地描述处于依赖状态时节点的行为
- 原文链接: prestwich.substack.com/p...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!