图一:经由 L2 实现侧链和 L2 之间的资产转移
图二:经由 App 实现侧链和 L2 之间的资产转移
由 StarkEx 支持的解决方案
图三展示了我们提议的解决方案,即 StarkEx 为 L2 和侧链之间提供互操作性,同时满足上述提到的三个品质。请注意,这个方案 (使用 StarkEx 作为管道) 同样适用于侧链之间的互操作性。
图三:由 StarkEx 支持、以太坊提供安全保障的侧链桥接
StarkEx 的优点
以免一些用户不熟悉 StarkEx,下文简单介绍了其基本概念。读者可以在此处找到 StarkEx 的完整文档:https://app.gitbook.com/@starkware/s/starkex-v3/~/settings/share。但是要想读懂本文提议的桥接方案,了解下文的背景已经足够了:
StarkEx 去信任
由于 StarkEx 依赖于 STARK 证明,因此如果没有证明能够证实某状态确实有效,那么 L1 上就不会发生状态更新。这意味着只能根据以 Cairo 语言实现的逻辑在 StarEx 内部进行资产转移,该逻辑强制执行以下操作:
➤ 没有用户在相关转账请求上的有效签名,不能从用户那里转移资金
➤ L1 上已提交的 StarkEx 状态反映了 L2 环境中发生的所有资产转移记录
➤ StarkEx 不能再次执行同样的资产转移请求
这样做的结果是,运营者 (比如交易所) 无法盗取用户的资产。强制交易、应急舱口和专用升级机制完善了去信任这一版图,使 StarkEx 变得完全非托管。
StarkEx 速度快
一旦某笔交易进入 StarkEx 的交易队列,运营者可以认为该笔交易已成功结算。这意味着用户可以立即提交后续交易;无需等待交易在链上完成结算。
StarkEx 成本低
在 StarkEx 的 zk-Rollup 模式下,即使是复杂的永续交易的交易成本也低至 1100 gas,这比 L1 上便宜 200 倍。Validium 模式下的交易成本更加低。此外,StarkEx 资本效率高,一旦包含其执行的证明在链上发布,就会立即敲定交易 —— 这通常发生在交易后的几个小时。
将资金从 StarkEx 提到侧链中
图四:StarkEx-侧链的互操作性 —— 提款
第一步:用户向 App 发送链下请求,指定他们想要提出的资产数量和类型。该 App 验证用户在其 StarkEx Vault 中是否有足够的资金。
第二步:App 在侧链中的互操作性合约中锁定指定的资产数量和类型。然后 App 将这些资金与 StarkEx (未签名的) 资金转移请求相匹配。该请求命令 StarkEx 将相关资产从用户的 Vault 中转移到 App 的 Vault 中。
第三步:用户对步骤二中的转移请求进行签名,以激活侧链上的互操作性合约。然后该交易就会立即解锁用户的资金,以在侧链上使用。
回退流程:如果用户未能在有限的时间范围内签名,则 App 将从互操作性合约中收回资金。
第四步:该 App 现在可以在 StarkEx 上执行转账请求并在那里接收用户的资金。
满足要求
1、这个方案是去信任的:用户先在 StarkEx 上获得侧链上的资金,然后才向 StarkEx 上的运营者转移资产 (如果没有前者,后者就不可能发生)。
StarkEx 强制要求,想要从用户那里获取资金,App 必须获得用户的签名。提供签名可以解锁用户在侧链中的资产。
2、速度快:侧链敲定时间的两倍之后,用户即可访问资金。
3、交易成本低:不涉及 L1 交易,App 可以在 StarkEx 上立即访问资金,然后几个小时候在 L1 上也可以访问资金了。
从侧链充值资金到 StarkEx
图五:StarkEx-侧链的互操作性 —— 存款
第一步:用户将其资金锁定在互操作性合约的侧链账户中。这些资金与 StarkEx 上的特定转账请求参数相耦合,这些参数会将资金转移到用户的 Vault 中。
第二步:运营者在 StarkEx 中执行步骤一的转账请求,将资金发送至用户的 StarkEx Vault 中。用户便可以立即开始交易这些资金。
第三步:1) 步骤二中的转账与其他交易一起被批量处理;2) StarkEx 向 L1 证明这些交易已发生;3) 并相应地更新链上状态。
第四步:以太坊上的专用合约将新的 L1 状态发送到侧链的互操作性合约中。该状态 (即 StarkEx 上所有交易的默克尔根) 确认用户已按要求收到 StarkEx 上的资金。
第五步:该 App 打开默克尔树承诺,以向侧链证明用户确实在步骤二中的 StarkEx 上收到了资金,解锁了 App 的互操作性合约中的资金。
回退流程:如果 App 未能在有限的时间内完成步骤五,用户可以从互操作性合约中取回侧链上的资金。
满足要求
1、这个方案是去信任的:用户先在 StarkEx 上收到资金,然后 App 才能在侧链上认领资金。StarkEx 的逻辑和证明强制要求,如果没有前者,后者就不可能发生。
要想在侧链上接收资金,运营者必须通过 StarkEx 向用户展示相关转账记录。StarkEx 强制要求,只有在用户收到资金之后才能获得该转账记录。
2、速度快:一旦在侧链上确认了一笔交易,App 就可以立即将 StarkEx 上的资金交给用户。
3、成本低:侧链或者 StarkEx 上的交易成本较低,虽然步骤四中 L1 交易的成本较高,但这个费用由多个存款请求共同分担。
此外,该 App 在几个小时之后就可以在侧链上获取资金。
下一步是什么?
StarkEx 的用户很快就能使用上面介绍的去信任的互操作方案。
至于无需许可的去中心化 zk-Rollup 方案 StarkNet 的进展:StarkNet Planets Alpha 1 已经上线 Ropsten 测试网 —— 我们计划支持与其他生态系统 (如侧链) 的互操作性。由于 StarkNet 证明了任何任意逻辑,它可以支持与此处描述类似的机制,或者部署现有的互操作性解决方案。
无论如何,StarkNet 促进了高程度的互操作性,并将成为众多寻求扩展到以太坊之外的 DeFi Apps 的互操作性的中心。