windows下使用waveOut播放音频pcm

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

猜你喜欢

转载自blog.csdn.net/u010140427/article/details/128175759