在 Rollup 中,追求交易最终性有三个阶段:排序者(Sequencer)的承诺、排序最终性、执行结算
一个 Rollup 交易在逐步变得已结算、最终和不可逆时有三个阶段。
我们在 Rollup 的背景下探讨一个有趣的问题:
交易最终性 → 什么时候一个 Rollup 交易被认为是最终和不可逆的?
在 Rollup 中,交易最终性与工作量证明区块链的最终一致性 (等待 X 次确认)或以太坊的权益证明协议(在连续两次超级多数投票(epochs) 后最终确定交易)非常不同。
在 Rollup 中,追求交易最终性有三个阶段:
排序者(Sequencer)的承诺 → 排序者向用户承诺交易将按预期排序和执行。
排序最终性 → 用户的交易相对于所有其他交易有一个最终排序。
执行结算 → 桥接智能合约确信用户交易的最终执行。
我们的文章重点讨论上述三个阶段以及交易如何通过每个阶段。在进一步深入之前,交易的最终性对于 Optimistic 和 Validity Rollups 是相同的,或者至少两种类型的 Rollups 都可以利用它 :)
排序者是唯一知晓链下数据库待处理状态的一方,因为他们有权决定/提议待处理交易的排序。
在高层次上,交易的生命周期从用户用数字签名授权交易开始,然后将交易传递给排序者。
排序者可以回应:
他们交易的预测执行,
承诺当交易最终结算时,这个执行将成立。
这种承诺是可能的,因为排序者是唯一拥有所有待处理交易列表的一方。他们有权决定交易的排序,然后再传递出去。因此,只有排序者知晓链下数据库的待处理状态。
我们称之为承诺,因为排序者可以决定向用户返回无效响应并忽略交易。
Rollups 有两种方法可以帮助防范恶意和撒谎的排序者:
签名收据。 排序者可能需要返回带有其数字签名的收据,稍后可以用来惩罚他们对用户撒谎。
强制包含。 用户可以绕过排序者,将其交易提交给桥接智能合约。
虽然排序者的角色是提供一个快速路径来决定交易执行的最终顺序,但这并不是他们的唯一决定权。最终由桥接智能合约决定所有待处理交易的最终排序。
话虽如此,只要排序者在及时发布(~24 小时对于 Arbitrum)的情况下,桥接将优先考虑排序者提议的交易批次。
桥接智能合约决定交易的最终排序,并授权任何人计算链下数据库的副本
桥接智能合约和底层区块链履行数据可用性层的角色,提供一个单一保证:
数据可用性: 数据项在某个时间点发布,并且所有在线方都可以获取它。
在 Rollups 的情况下,将一批交易发布到桥接智能合约使所有诚实的用户、执行者和其他排序者能够获取交易列表。
新的一批交易应附加到 Rollup 的规范交易链中。任何一方都可以对其本地数据库副本执行新交易并计算链下数据库的新状态。这是一个确定性过程,所有各方应得出相同的状态。
正如我们稍后将看到的——只要你能相信有一个诚实的一方会站出来并执行结算——那么就有可能在桥接之上构建仅依赖于排序最终性的协议。
注意,有些 Rollups 绕过了这个阶段,因为排序者直接将交易发送给执行者,这样做有利有弊,我们在此不讨论。
最终目标是说服智能合约关于已排序交易的执行。
执行结算的唯一目的是说服智能合约,而不是外部方或共识协议,关于所有已排序交易的最终执行。
毕竟,在这一点上:
桥接已经排序了所有待执行的交易,
任何人,包括用户,都可以计算预期数据库的副本。
唯一不知道当前数据库状态的一方是桥接智能合约,因为它缺乏重放和处理所有待处理交易的计算资源。
由执行者来证明并提议新的数据库状态,并提供证明证明该证明是正确的。执行者可以决定处理一个或多个交易批次,唯一的约束是执行必须尊重交易的最终排序。证据可以是欺诈证明或有效性证明。
执行结算的唯一原因是授权桥接合约执行副作用,包括从链下系统向 L1 智能合约转移资金或发送消息。只有当桥接确信相关交易的执行时,才能执行副作用。换句话说,桥接合约只有在确信所有交易都是有效且正确执行的情况下才会释放资金。
这引出了 Rollup 最有趣的方面之一。
它将交易排序和计算预期执行的过程分开:
首先排序。 所有参与方都可以确定相同的交易列表,并在本地计算链下数据库的新状态。
延迟执行。 整个过程的重点是说服桥接智能合约关于排序交易执行后的数据库新状态。
分离这些过程允许任何人可以在执行与桥接智能合约结算之前确定性地计算出数据库状态。
排序和执行之间的时间延迟可能是巨大的。例如,如果我们考虑交易批次发送到桥接智能合约的频率,那么在撰写本文时,Arbitrum 和Optimism大约每 30 秒发送一次。
因此,排序的最终性可以在<10 分钟内确定,但执行结算可能需要至少 2 周。
这引出了本文的关键要点:
在排序后和结算前进行交易。 只要你能相信有一个诚实的参与方会站出来并强制最终执行与桥接智能合约的结算,那么代理可以在排序最终确定后对未结算的数据库状态采取行动。
让我们考虑一个用户想要快速从 Rollup 提取资金到以太坊的三步过程:
用户发送资金+费用。 用户可以选择一个流动性提供者(LP)并发起一笔将资金转移给 LP 的交易。该交易在 Rollup 上确认,并将资金发送到以太坊上的一个特殊仲裁合约。
LP 等待排序最终性。 LP 将等待 Rollup 交易达到排序最终性后再决定在以太坊上向用户发送资金。
LP 或用户获得资金。 当执行结算时,用户的资金将到达 Arbitrum 合约。如果 LP 已经支付了用户,Arbitrum 合约将把资金发送给 LP;如果 LP 未能履行职责,合约将简单地将资金退还给用户在 L1 上的账户。
在上述例子中,用户可以在<10 分钟内乐观地从 LP 那里收到资金,而 LP 可以确信他们将在~2 周内收到还款。如果出现问题且 LP 未能履行职责,用户将在~2 周后收到还款。这有多令人兴奋?!
总之,任何直接将交易数据发布到桥接智能合约的 Rollup都可以实现排序最终性。
我们已经提到 Arbitrum 和 Optimism 支持排序最终性,但我也知道 Scroll、Polygon Hermez 和可能的 ZkSync 也实现了这一点。
大多数讨论集中在 Optimistic Rollups 如何利用排序最终性来绕过执行结算延迟(~2 周)。
然而,这对有效性 Rollups 同样有用,因为用户可以在交易被排序执行时假定其最终性。这为执行者提供了等待排序交易积累的灵活性,然后再生成有效性证明并结算执行。
up only my frens :)
本文由 AI 翻译,欢迎小伙伴们来校对。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!