Rollup交易有三个阶段,最终且不可逆。它通过分离交易排序和执行过程,实现了排序最终性,让任何人都可以确定数据库状态。用户可以快速提取资金,执行者可以灵活等待交易积累后再结算。已有多种Rollup实现了排序最终性,包括Arbitrum、Optimism、Scroll、Polygon Hermez和ZkSync。这对于优化交易执行延迟非常有用。
一个Rollup交易在逐步变得已结算、最终和不可逆时有三个阶段。我们在Rollup的背景下探讨一个有趣的问题:交易最终性 → 什么时候一个Rollup交易被认为是最终和不可逆的?在Rollup中,交易最终性与工作量证明区块链的最终一致性(等待X次确认)或以太坊的权益证明协议(在连续两次超级多数投票(epochs)后最终确定交易)非常不同。在Rollup中,追求交易最终性有三个阶段:排序者(Sequencer)的承诺 → 排序者向用户承诺交易将按预期排序和执行。排序最终性 → 用户的交易相对于所有其他交易有一个最终排序。执行结算 → 桥接智能合约确信用户交易的最终执行。
排序者是唯一知晓链下数据库待处理状态的一方,因为他们有权决定/提议待处理交易的排序。在高层次上,交易的生命周期从用户用数字签名授权交易开始,然后将交易传递给排序者。排序者可以回应:他们交易的预测执行,承诺当交易最终结算时,这个执行将成立。这种承诺是可能的,因为排序者是唯一拥有所有待处理交易列表的一方。他们有权决定交易的排序,然后再传递出去。因此,只有排序者知晓链下数据库的待处理状态。我们称之为承诺,因为排序者可以决定向用户返回无效响应并忽略交易。Rollups有两种方法可以帮助防范恶意和撒谎的排序者:签名收据。排序者可能需要返回带有其数字签名的收据,稍后可以用来惩罚他们对用户撒谎。强制包含。用户可以绕过排序者,将其交易提交给桥接智能合约。虽然排序者的角色是提供一个快速路径来决定交易执行的最终顺序,但这并不是他们的唯一决定权。最终由桥接智能合约决定所有待处理交易的最终排序。话虽如此,只要排序者在及时发布(~24 小时对于Arbitrum)的情况下,桥接将优先考虑排序者提议的交易批次。
桥接智能合约决定交易的最终排序,并授权任何人计算链下数据库的副本。桥接智能合约和底层区块链履行数据可用性层的角色,提供一个单一保证:数据可用性[6]:数据项在某个时间点发布,并且所有在线方都可以获取它。在Rollups的情况下,将一批交易发布到桥接智能合约使所有诚实的用户、执行者和其他排序者能够获取交易列表。新的一批交易应附加到Rollup的规范交易链中。任何一方都可以对其本地数据库副本执行新交易并计算链下数据库的新状态。正如我们稍后将看到的——只要你能相信有一个诚实的一方会站出来并执行结算——那么就有可能在桥接之上构建仅依赖于排序最终性的协议。
最终目标是说服智能合约关于已排序交易的执行。执行结算的唯一目的是说服智能合约,而不是外部方或共识协议,关于所有已排序交易的最终执行。桥接已经排序了所有待执行的交易,任何人,包括用户,都可以计算预期数据库的副本。唯一不知道当前数据库状态的一方是桥接智能合约,因为它缺乏重放和处理所有待处理交易的计算资源。由执行者来证明并提议新的数据库状态,并提供证明证明该证明是正确的。执行者可以决定处理一个或多个交易批次,唯一的约束是执行必须尊重交易的最终排序。证据可以是欺诈证明或有效性证明。执行结算的唯一原因是授权桥接合约执行副作用,包括从链下系统向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