一文了解去信任的“侧链-StarkEx”桥接:连接侧链和layer2的桥梁
来源 | StarkWare
原标题:《去信任的“侧链-StarkEx”桥接》
摘要
➤ 在侧链和 L2 之间转移资金的需求日渐旺盛
➤ 目前的方法:经由 L1 (以太坊) —— 速度慢、成本高,但是去信任;经由 App (或 LP) —— 需要信任,但是速度快且成本低
➤ 我们提议一个去信任的、安全的和低成本的 “侧链-StarkEx” 桥接,其依赖于以太坊的安全性
➤ 通过扩展 StarkEx 和多个侧链之间的桥梁,我们创建了一个连接这些侧链的有效桥梁
介绍
虽然以太坊仍然是 DeFi 的“资本”区块链,具有高牵引力和安全性并连接至多个链,但以太坊越来越拥挤,交易成本高昂且不稳定。这促使用户使用其他平台如侧链 (Polygon、BSC、Solana) 和 L2s (Optimistic Rollups 或者 ZK-Rollups)。这些平台在成本、安全性、性能和 Apps 方面各不相同 —— 加剧了流动性的碎片化。
因此,越来越多的用户需要在多个平台之间转移资金。
侧链之间的去信任桥接解决方案上线了 (例如 Hop 或者 MovR)。然而,L2s 和侧链之间的去信任互操作性仍不能得到解决方案。
从设计上讲,与 Optimistic Rollups 的互操作性是有问题的,因为最终确定时间长意味着运营桥接需要很高的资本要求,这导致了资金转移的成本很高。
ZK-Rollups 呢?跨 L1 和 ZK-Rollup 的去信任存款和提款已经可用 (如 dYdX、DeversiFi、Loopring)。并且,zk-rollup 通过条件式转移 (Conditional Transfers) 使最终确定时间较短。
但是,zk-Rollups 目前与侧链互操作性不兼容。原因出自技术方面:目前部署在 L1 上的 zk-Rollups 证明了特定计算语句的有效性 (即使其背后的工具如 Cairo 语言是图灵完备的)。这使得它们与 Rollup 中需要“互操作性智能合约”的方案不兼容。
而我们去中心化的、无需许可的 zk-Rollup 解决方案 StarkNet 将解决这一问题。但是现在可以借助我们去信任的可扩展引擎 StarkEx 做些什么呢?下面我们将演示 StarkEx 如何支持侧链的互操作性。
StarkEx 于 2020 年 6 月上线主网,促成了数百万笔总计价值为数十亿美元的交易。我们将展示 StarkEx 系统和方案,以阐述其如何支持低成本且快速地将资产转入且转出侧链 —— 这将为在 zk-Rollups 和侧链上运行的 dApps 之间更好的互操作性铺平道路。但我们先考虑一下,一个良好的互操作性系统由什么定义。
良好互操作性解决方案的品质
侧链和 L2 之间的一个好的互操作性解决方案应需要最小化的信任,并提供简化的用户体验。更精确地说:
➤ 信任最小化:应该要求用户信任尽可能少的实体。
Fast Finality: funds should be available fast.
敲定时间短:资金应快速可用。
➤ 成本低:低成本的解决方案必须在各自的平台上提供低交易价格和在桥接上提供高资本效率 (因为流动性提供者承担的成本将抵消给用户)
L2-侧链之间的互操作性
到目前为止,用户如果想要在侧链和 L2 之间转移资金,就必须要在两个幼稚的选项中做出选择:去信任但成本高且速度慢的方案 (图一);成本低、速度快,但需要信任的方案 (图二)。
图一:经由 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 的互操作性的中心。