首页 币圈新闻 Lasdfsyer1与Lasdfsyer2互操作性举例:条件事务

Lasdfsyer1与Lasdfsyer2互操作性举例:条件事务

这篇文章介绍的是 StarkEx 提供的快速取款的解决方案:在区块链时间(即交易时间内或出块时间内)内从 L2 提取资金到任何 L1 地址,并且该解决方案与 L2 运营商生成有效性证明的频率无关。StarkEx 是 L2 扩容技术服务商 StarkWare 的二层交易应用。

目前,快速取款功能已经在 StarkEx 的以太坊主网上运行(从 StarkEx2.0 开始,2020 年 12 月),并为 DeversiFi 和 dYdX 的交易所提供支持。

下面的解决方案可以应用于行业内广泛的用例,首先我们来看场景需求。

场景需求

区块链允许 Alice 和 Bob 两方之间的无信任交互。Alice 可能希望发布一个只有在某个条件事件发生时才能执行的交易;Bob 希望在满足条件后执行 Alice 的交易,而无需再次获得她的批准。我们将这样的规范称为条件事务 (CT)。

在 L1 上实施 CT 很简单,因为智能合约可以加强事件和交易执行之间的耦合。也就是事件发生自动执行。并且把执行条件固定。但当迁移到 L2 系统时,这将成为一个挑战。例如,在 StarkEx 中,签名者将签署的交易传递给运营商,运营商负责执行它,在满足请求的条件之前,没有什么可以阻止运营商执行这个交易。

在这篇文章中我们提到的在 L2 上指定的 CT,它依赖于 L1 事件(即 L2|L1)。也就是说,CT 确保操作员只有在发生某些链上事件时才能执行签名交易。如果我们再添加一个 CT,它依赖于另一个 L2 事件(即 L21|L22)上的事件,这将实现 StarkEx 实例和 StarkNet 之间的互操作性。

下面,我们将此类链上事件的概念形式化,并了解如何将它们用于 StarkEx 中的 CT。

条件事务

CT 使用 FactRegistry 合约来跟踪链上事件。特别是,除非在事实登记处注册,否则 CT 不能以事件为条件。例如,如果 Alice 直接在 Ethereum 上向 Bob 转账 1ETH,则没有可以用作 CT 的链上事件。

也就是需要进行一次单独的定义某些事件为条件。

在上面的例子中,FactRegistry 合约需要一个函数 transfer(),Alice 使用 Bob 的地址作为接收者参数调用该函数。

transfer() 函数做两件事:(a) 将传输的 ETH 发送给接收者,(b) 保留传输的记录,例如合约中存储传输参数(发送者、接收者和金额)的哈希值。

FactRegistry 也有一个 isValid() 函数,它接收一个哈希值作为参数,并返回一个布尔值——True 当且仅当它是这个合约记录的交易哈希值。

交易的哈希(上面的例子中是传输参数)被称为事实—代表事件的发生。向事实登记处引入新事实的过程称为事实登记。

在 CT 中签署的链上事件包会含两个字段(实际上是哈希):(a) 一个事实登记合约的地址,(b) 一个应该在执行交易之前注册的事实。

StarkEx 中的条件交易

StarkEx 对交易进行批量处理,并使用单个 STARK 证明在链上进行结算。如果批次中的交易之一是 CT,StarkEx 将确保关联的 Fact 确实已注册登记,以便对批次进行结算;否则,整个批次将被还原。

条件事务示例

快速提款

在任何 L2 解决方案中,在 L2 到 L1 之间转移资金的理想方法是完成 L2 状态更新和 L1 上的提款交易。

在基于有效性证明的系统中,如 StarkEx,L2 状态更新的最终确定发生在链上接受证明它的有效证明时,这通常需要 10 分钟。这意味着如果用户想要将他们的资金从 L2 转移到 L1,他们将被迫等待。

快速取款的目的是解耦这种依赖性,并允许用户在“区块链时间”(即在一次以太坊交易中)无需信任地将资金提取到 L1。

这将如何运作?如果 Alice 想从 L2 提取 1ETH 到 L1,Alice 可以签署 CT 将 1ETH 转移到 L2 上的流动性提供者(LP),条件是 LP 在 L1 上转移 1ETH (减去一些费用)给 Alice。

Alice 的 CT 只有在她首先在 L1 上获得资金时才能执行,因此她也不会面临交易对手风险。

更多其他用例

类似的流程可以通过 L2CT 事务捕获以下类型的事件,及为以下提供证明,就可以在 L1 上进行一些关联操作,例如:

ETH 的价格跌至 1010DAI (由已知在链上注册预言机提供数据),Alice 想在 L2 上以 1000DAI 的价格出售她在 L2 上的 1ETH。

Alice 希望在 L2 上给 Bob10ETH,Bob 在她选择的 dApp (例如 Aave 或 Compound)中以 Alice 的名义存入 9.5ETH。

Alice 想在 DeversiFi 的 L2 上为 Bob 提供 10ETH,Bob 在 dYdX 的 L2 中将 9.5ETH 存入 Alice 的账户。

这些其他操作用例代表着虽然 CT 的第一个用例是快速提款,但 StarkEx 运营商可以使用这个方式实现更多 L2-L1 交互,用来丰富产品功能。

关于作者: szhbsd

热门文章