Rollup交易的固化流程
Posted mutourend
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Rollup交易的固化流程相关的知识,希望对你有一定的参考价值。
1. 引言
前序博客有:
Rollup交易的固化流程不同于PoW的eventual consistency最终一致性,也不同于以太坊PoS协议的等待X个确认,two consecutive supermajority votes(epochs)之前的交易即已固化。
Rollup交易的固化需要经历3个阶段,才能认为该Rollup交易是settled、final and irreversible:
- Sequencer’s Promise:Sequencer向用户承诺其交易将被打包和执行。
- Order Finality:用户交易具有相对于其它交易的最终排序。
- Execution Settlement:bridge合约信服某用户交易的final execution。
本文讨论的Rollup交易固化适用于Optimistic Rollups和Validity Rollups。
2. Sequencer’s Promise
Sequencer为Rollup层唯一对链下数据库的pending state具有知情权的一方,Sequencer有权来对pending交易进行排序。
交易生命周期始于:用户在将交易传给Sequencer之前,对该交易进行签名。
Sequencer的响应可为:
- 1)对交易的predicted execution
- 2)promise当该交易settled as final(固化)时,该执行将维持
该promise是可能的,因为Sequencer为唯一具有所有pending交易list的一方。Sequencer有权决定交易的排序。因此,仅Sequencer对链下数据库的pending state 知情。
称其为promise,是因为Sequencer可向用户返回invalid response 并 忽略该交易。
Rollups有2种方式来对抗lying and malicious Sequencer:
- 1)Signed receipts:Sequencer需返回具有其签名的receipt,可作为后续其撒谎的惩罚依据。
- 2)Forced inclusion:用户可跳过Sequencer,自己向bridge合约提交交易。
虽然Sequencer的角色是为决定交易执行的最终顺序提供fast path,但Sequencer不具有的唯一决定权。最终由bridge智能合约决定所有pending交易的最终顺序。
也就是说,只要及时发布(Arbitrum大约24小时),bridge就会优先考虑Sequencer提出的一批交易。
3. Transaction Order Finality
bridge合约决定交易的最终顺序,并赋予任何人可重构出整个链下数据库的能力。
bridge合约及其所在的L1链,实现了数据可用层的功能,从而可保证:
- 数据可用性:A data item was published at a point in time and it was available for all online parties to fetch it。
对于Rollup场景来说,将batch transactions提交到bridge合约,使得任何诚实的用户、Executors、Sequencers可获取整个transaction list。
新的batch transactions将附加在Rollup的 canonical chain of transactions之后。任何人可在其本地的数据库备份的基础上执行新交易,并计算新的链下状态。整个流程是确定性的,基于相同的交易所有人都获得同样的状态。
只要相信有“one honest party”会入场并enforce execution settlement,则可在bridge合约之上构建协议,仅依赖于最终顺序。
注意:
有的Rollup方案会直接跳过本阶段,由Sequencer将交易直接发送给Executors,这样做的优劣势本文不展开讨论。
4. Execution Settlement
最终目的是让合约信服有序交易的执行结果。
execution settlement的唯一目的,是让合约信服,而不是让外部方或共识协议信服,有序交易的最终执行结果。
此时:
- bridge已对所有执行交易 进行了排序
- 任何人,包括用户本人,都可据此计算出一个数据库备份
不知道数据库当前状态的仅有bridge合约,因为bridge合约计算资源有限,无法重放处理所有pending交易。
由Executors来提交新的数据库状态 以及 相应的证据。Executors可决定处理一个或多个交易batch,唯一的限制是执行必须遵守交易的最终顺序。证据可以是欺诈证明或有效性证明。
execution settlemen的唯一原因是授权bridge合约执行side-effecct,包括从链外系统向L1智能合约转移资金或发送消息。只有当bridge确信相关交易的执行时,才能执行side-effect。
换言之,只要确信所有交易都是有效的,并且执行正确,bridge才会释放资金。
5. Rollup交易的固化流程小结
Rollup最有趣的一点在于,其将交易排序和执行进行了分离:
- 首先排序:所有方可确定完全相同的transaction list,并本地计算数据库的新状态。
- 延迟执行:整个流程集中在:让bridge合约信服,在该transaction list执行之后,的数据库新状态。
这样分离的好处在于,在bridge合约 settle该执行之前,任何人都可确定性的计算出数据库的将来状态。
排序与执行之间的延迟可能很大,如乐观证明Rollup中:
- transaction batch提交的频率为每30秒
- order finality的确定时间小于10分钟
- 而execution settlement最少需要2周
本文的关键内容在于:
- Transact after ordering & before settlement:只要信任存在某honest party会入场 并 enforce eventual execution settlement with the bridge合约,则agents can act upon the unsettled database state once the ordering is final。
假设用户需要从某乐观Rollup中快速提款到以太坊,其需要3步:
- 1)用户发送 funds + fee:用户选择某liquidity provider(LP)并发起一笔交易将资金转移给LP。该交易在Rollup上确认,并将会把资金发送给以太坊上某特殊仲裁合约。
- 2)LP等待order finality:LP在决定在以太坊链上给用户发送资金之前,将等待该Rollup交易达到order finality。
- 3)LP或用户获得资金:当该Rollup交易execution is settled,用户资金将到达“以太坊上某特殊仲裁合约”。若LP正常履约(已给用户转账),则“以太坊上某特殊仲裁合约”会将资金给LP,否则,会将资金返还给用户。
在上述例子中,用户可从LP收到资金的乐观用时为<10分钟,且LP有信心其将在约2周内收回相应资金。若存在问题且LP无法履约,则用户将在约2周后收回资金。
总结为:
- 对于任意将交易数据发送到bridge合约的Rollup方案,都可实现order finality。
不仅Arbitrum 和 Optimism 这样的乐观Rollup方案支持order finality,Scroll、Polygon Hermez、zkSync等Validity Rollup方案 也支持order finality。
本节重点讨论了乐观Rollup如何利用order finality来绕过execution settlement delay(约2周)。
但是对于Validity Rollup方案,一旦交易被ordered for execution,用户就可认为该交易是final的。这为Executors提供了回旋的空间,让Executors在整理validity proof并settling the execution之前,等待有序的交易堆积起来。
参考资料
[1] Patrick McCorry 2023年2月21日博客 Tiers of Transaction Finality for Rollups
以上是关于Rollup交易的固化流程的主要内容,如果未能解决你的问题,请参考以下文章