“谁能扛起跨 Rollup 交互的大旗?
三月将会是 Rollup 扩容方案的高光时刻。从进度看各个 Rollup 方案已经蓄势待发,有些方案已经明确将会在 3 月上线,而 Rollup 扩容方案的上线,将会为行业带重大影响。
但由于 Rollup 之间难以互通,这就造成了以太坊生态的割裂,不同协议之间难以实现协同性,对 DeFi 非常重要的可组合性也将支离破碎。那有没有办法解决这个问题呢?
今天聊一聊几种想要解决跨 Rollup 交互问题的方案,看看如何将不同 Rollup Layer2 扩容方案连接起来,保持协议间的可组合性和协同性。
之前我们已经介绍了 Optimism、ZkSync、Arbitrum 以及 StarkEx 这四种主要的Rollup 扩容方案,这里再进行简要叙述,以作为背景。
四种 Rollup 方案的详细内容,可以点击查看:《四种主流 Rollup 方案及热门 DeFi Layer 2 进展盘点》。
不同的 Rollup 方案和 DeFi 协议的选择
目前四种主要 Rollup 扩容方案各自都吸引到了一批生态用户,其中:
Optimism 吸引了来自 Uniswap、Compound 的目光,更是在主网预启动之后,得到了合成资产交易平台 Synthetix 的深度参与。
Curve、StablePay、GitCoin 采用或计划采用 Matter Labs 的 zkSync 方案作为扩容选择。
Offchain Labs 所创建的 Arbitrum,有多个 DeFi 项目已开始测试或有计划使用,包括 Bancor、Bounce、DODO、麦子钱包、Burgerswap、Hop、MCDEX 和 Swapr 等。
StarkEx 一边,也不乏战友。去中心化合约交易平台 dYdX 会使用 StarkEx 所支持的 Layer2 网络,还有 Paraswap,DeversiFi 等应用,也会使用 StarkEx 的方案。
各 Rollup 扩容方案进展如何?
Optimism 二月份宣布完成 A 轮融资, 领投方为 Andreessen Horowitz (a16z),将于三月份上线主网。
Arbitrum 由学术性研究计划而肇始,在计划进入商业化阶段时,曾申请专利。团队近日表示,在征得普林斯顿大学同意后,考虑到项目进入社区成熟阶段,将放弃专利。Arbitrum 也公告主网处于即将上线阶段。
zkSync 项目的创始团队 Matter Labs 也公开了 A 轮融资的信息,“联合广场风投(USV)领投该轮,此前的投资者 Placeholder、1kx 和 Dragonfly 继续参与本轮,除此之外还有 zkSync 的生态合作方参与了投资,其中包括 Aave、Balancer、1inch、Curve、Binance、Coinbase Ventures、火币、路印、Argent、MYKEY、imToken、Flexa、MoonPay、ripio、ZKValidator、CoinGecko”。Matter Labs 表示,zkSync 将于今年支持图灵完备的智能合约(Solidity)。
大多数 DeFi 协议都是基于智能合约而创建的,这些智能合约部署在 Layer1 的以太坊上,并通过各自的方式,连接到自己的 Layer2 网络。
对用户来说,将资金存入智能合约,开始使用这些 Layer2 网络,智能合约会记录所有的交易变化,用户在 Layer2 网络上使用,能提升效率,降低成本。
但是如果 Synthetix 和 Uniswap 分别存在于不同的 Layer2 网络上,那么彼此之间可能就处于各自的孤岛,如何交互会成为问题。
如何让不同的扩容方案连接起来,保持 DeFi 协议最为人所知的可组合性和协作性?
在币乎社区的一次线上 AMA 中,Vitalik 提到了目前 Rollup 等 Layer2 方案需要解决的两个问题:
以太坊的社区很多应用喜欢调用智能合约,比如 DeFi 的项目。但目前的 ZK Rollup 不支持智能合约,只支持发币、交易币等简单的应用。这是第一个问题。当我们有支持完整 EVM 的 Rollup 的时候, 我觉得会有更多的用户搬到 Rollup。
现在 Rollup 相关的基础设施生态还不多。比如我们还没有解决不同的 Rollup 之间交易的问题。如果我有一些币在 ZKsync 怎么把币搬到路印?首先需要把币从 ZKsync 的二层提取到以太坊底层,然后再转移到 Loopring 的二层账户。如果这样做了,交易费会不会特别高?
现在以太坊上会有很多用户体验方面的挑战(问题)。但我觉得6个月之后很多这些问题都会解决。
那么如何解决?
几天前以太坊联合创始人 Vitalik Buterin 提了个想法,将不同的第二层扩展解决方案连接起来,这样它们就可以相互“交谈”,以保持 DeFi 协议的可组合性和协同性。
假设存在两个 Rollup:A 和 B。用户 Alice 想要将 Rollup A 上的一些代币,换成 Rollup B 上的另外一些代币。假设存在两种情况:
Rollup A 和 Rollup B 都能够支持合约
只有一个 Rollup 支持智能合约,另一个 Rollup 只支持简单的转账。
第一种情况,社区也有一份提案,名为 "Hop: Send Tokens Across Rollups(Hop: 跨 Rollup 发送代币)",地址见:https://ethresear.ch/t/hop-send-tokens-across-rollups/8581。
Vitalik 的提案,针对第二种情形,即:如果 RollupA 只支持简单的转账交易,而 Rollup B 支持智能合约。
V 神提议,有一种简单的方法,可以将这些各自孤立的合约网络连接起来。
“假设有一个交易中介,名为 Ivan(当然有很多中介可以选择,这里只是举例)。Ivan 在 Rollup A 上有一个帐户 IVAN_A (他完全控制该帐户)。Ivan 也有一些资金存入到 Rollup B 上的智能合约 IVAN_B 中。”
设想有如下的操作:
Alice 向 Rollup A 上的 IVAN_A 账户发起一笔交易,转账到 Rollup B 上的账户:ALICE_B。(Alice 在 Rollup A 上转给 IVAN)
Ivan 能怎么办呢?他会通过 IVAN_B 账户,发送一笔交易,将扣除了手续费之后的代币数量,发送到 ALICE_B 这个账号中。
在第一步之后,第二步可以立即进行。如果 Ivan 证明第二笔交易跟第一笔交易之间的差异非常小,那么甚至可以在合约里设置规则,允许收取更高的费用。
“最坏的情况”是 Ivan 没有像预期的那样向 ALICE_B 发送代币。在这种情况下,Alice 可以等待 Rollup A上的交易确认,然后通过其他途径获得 Rollup B 上的代币用来支付跨 Rollup 传输的手续费,然后她自己就可以 claim,获得资金。
按照 V 神的解释,用户 Alice 可以直接在 Rollup B 上完成。只需要让 Rollup B 可以获得在前一 批 Rollup 记录之前的 L1 上的相应 hash 记录,然后 RollupB 就能够记录下来 Merkle 分支,能够在 Rollup 里验证。
通俗来说,通过技术方式能够确保用户 Alice 在 Rollup A 上交易确认之后,可以有方式安全的在 Rollup B 上领取到对应的资金(支付了手续费之后),避免因为其中某一个或者几个交易中介出现问题,导致资金受损。
无论这个交易中介 Ivan 是谁,为什么别人会选择转给他代币,这些可以暂时不管;这里的含义是,存在连接层,让存入到各类孤立的 Layer2 智能合约上的资金保持同步,实现跨 Rollup 转账的功能。
具体的实现细节,可能要了解在 Rollup B 上的合约 IVAN_B 的规则了。遵从下面的设定(为便于理解有所删减):
如果任何人发起一个交易,发送若干数量的比特币到 IVAN_A 这个账户(存在 Rollup A上),在 memo 中,包含了目标地址的信息。那么,在若干时间之后,他们可以向合约 IVAN_B 发送一笔交易,该交易包含了转账的证明,该证明能够将对应数量的比特币提到在 Rollup B 上的目标地址之中。
提款要经过一些延迟(例如,1天的时间),是为了确保对应的转账批次和索引可以记录到 Rollup A 的 Layer2 网络之中。
当 Ivan 在 IVAN_A 收到资金时,他可以自己将代币发送到目标地址。他可以通过 IVAN_B 合约发送交易。
在这种情况下, Ivan 充当了结算商的角色,可以收取一定的转账手续费,让 Rollup A 这个只支持简单转账交易的Layer2 网络,和可以支持智能合约交易的 Rollup B,能够连接起来。而通过转账证明、Merkle 索引等方式,也确保用户资产能够在转移过程中不会遇到损失。
结算商充当了跨 Rollup 转账的协作角色
Ivan 自己也需要进行内部结算,毕竟有可能在某个 Rollup 上会耗尽资金。比如,用户一直在通过 Rollup A 向 Rollup B 转账,需要通过 Ivan 在 Rollup B 上的储备资金转给用户所指定的地址。这时候 Ivan 这类交易中介,就需要进行内部结算了,也因此这提案的限制,会要求 Ivan 这类中介商持有大量的资金在账户之中,以便服务用户需求。
我们用法币举例,或许能更好理解。如果你从工商银行向建设银行的卡转账,尽管 ATM 机上显示立即变更了,但是实际的结算过程是每天进行一次,只有在工行结算后,才将实际的资金转给建行,更具体来说,是通过在央行的结算账号之间进行的。
同样的,从支持智能合约的 Rollup B 向只支持普通转账的 Rollup A 发起转账交易,也是类似的操作。
Alice 发送代币至合约账号 IVAN_B, 并附上了目标地址;
若干时间之后,Alice 可以将资金取回;
不过如果中间 IVAN 这个中间商能够提供证明至智能合约 IVAN_B, 附上链上的转账记录等信息,证明自己已经将资金在 Rollup A 上转给了 Alice,那么,Alice 就不能再取回资金了。这时候,跨 Rollup 转账完成。
至此,我们大致理解了 Vitalik 提案之中所提到的跨 Rollup 转账原理,并且只需要其中一个 Rollup 支持智能合约即可实现,主要引入了 IVAN 这一中间商来支持跨 Rollup 转账。
至于如何设置限定,避免中间结算层的资金不足和浪费、以及转账的 Memo 应该如何设定等技术细节,可以查看 Vitalik 的提案所述: https://ethresear.ch/t/cross-rollup-dex-with-smart-contracts-only-on-the-destination-side/8778。
上文中,我们还提到过另外一个场景:两个 Rollup,比如 ZKSync 和 Optimism,都支持智能合约,那么如何实现跨 Rollup 交互?
Hop 团队成员 chris whinfrey 1 月 24 日在 ETH Research 论坛发了一篇帖子,介绍 Hop 如何跨 Rollup 进行去中心化的代币转账。
内容如下:
Hop protocol 提供了去信任、可扩展的跨 Rollup 通讯桥。致力于:
快速轻松实现跨 Rollup 代币转移
可以快速从 Rollup 中退出
最终实现跨 Rollup 合约调用的功能
在 Hop 团队看来,对于解决跨 Rollup 可组合性问题,他们提供了广泛的解决方案,通过双管齐下的方式实现:
创建一个跨网络桥接代币,可以快速而经济地从一个 Rollup 移动到另一个 Rollup ,或者在 Layer1 上创建,支持领取对应的底层资产。
使用自动做市商(AMM) 在每个 Rollup 上的每个桥接代币和其对应的代币之间进行交易,以便动态定价,并让整个网络的流动性再平衡。
换句话说,借助于一个锚定代币(比如 Bridge),在多个 Rollup 上都有部署,也可以在 Layer1 的以太坊网络上部署并支持 Layer1 跟 Layer2 的 Rollup 上的 Bridge 代币的1:1锚定兑换。
如果用户想要从 Rollup A 转账 100 个 BTC 到 Rollup B 上自己或者他人的账号中,那么,就有如下的过程:
首先,在 Rollup A 上,通过 AMM 将这 100 个 ETH 兑换为 Bridge_A 代币,即桥接代币;
交易确认之后,Rollup B 上通过 AMM 将 Bridge_B 代币兑换为 100 个 ETH 代币,然后转给用户所指定的在 Rollup B 上的对应地址;
由于 Bridge_A 和 Bridge_B 都是同样的代币,只是起到了跨 Rollup 桥接的作用,他们的比值是 1:1 锚定的。如果有价值波动,套利者会进行无风险套利,搬砖搬平差价。
Hop 目前已有测试网上线
https://hop.exchange/send。
除了上述方案之外,Celer 跟 Matic Network 的方向我们也一并聊聊。
Celer 的 Layer2 方案:原地扩容
国产 DeFi 项目 Celer 提出了个新的思路,称为“原地扩容”,原地的意思就是,让 DeFi 项目继续在 Layer1 即可,不需要专门去 Layer2 另外部署专门的版本,即可通过 Celer 的方案--Layer2.finance, 实现扩容。
根据 Celer 团队的介绍,在该场景下,用户的资产存放在 Layer2 链上(Celer 从基于 Optimistic Rollup 的方案开始,后续扩展升级,支持 ZK Rollup),然后用户发送指令,告诉 Layer2.finance 协议自己的操作要求,指明将自己的多少资金、存放到哪些 DeFi 协议中,比如 Curve、AAVE、Compond 等位于以太坊 Layer1 网络上的 DeFi 协议。
通过这种方式,Layer2 充当了命令代理,用户存储资产 + 发送指令即可,而具体的业务逻辑,则仍然是交给了 Layer1 上的 DeFi 协议执行。而不同用户的命令,可以通过合并交易的方式,更经济的与 Layer1 合约交互。
该方案预计在3月份上线。
Matic Network 品牌重塑:Polygon
Polygon 原名为 Matic Network,则走了另外一条路,定调为 Layer2 聚合器,通过两种方式实现扩容:
依赖以太坊网络,借助对应网络上的验证者,并支持 Matic Plasma、zkRollups、Optimistic Rollups、Validium 等方案。
建立自己的子链体系和独立的验证节点,自行负责自己的安全性。这一方向,目前已经上线的是 Matic PoS 链。
Matic Network 升级之后的方案走得更远,除了依托现有生态之外要独立建立自己的生态体系,所付出的努力也要更多。据统计,目前有 80 多个 DApp 部署在 Polygon 上,涵盖 DeFi、NFT、游戏等领域。
按照当前的进展,Matic Pos 链和 Matic Plasma 方案已上线,而目前还未支持 zk Rollup 和 Optimistic Rollup,这些方案会在未来上线。限于篇幅,对 Polygon 不再展开。Polygon 链接见:https://polygon.technology/
三月份会很热闹,Arbitrum、Optimism 的主网上线,标记着我们目前处在 Rollup 等 Layer2 方案的爆发前夜。Layer2 方案争夺用户的举措,会成为三月份以及上半年的一大母题。
而不同 Layer2 (具体来说 Rollup)之间如何兼容,避免破坏 DeFi 的协作性?目前见到的这几个方案,其实也都在摸着石头过河。Vitalik 的提案,Hop 的实现,以及 Celer 的创意,或许能够解决各自设想中的问题,但是跨 Rollup 实现 DeFi 的调用组合,仍然是个摆在前方的大难题。
另一方面,最近 Sushi 等协议在多条链上部署的动作,或许预示了另外一种可能性,跟 Hop 方案之中所提到的类似,借助于 AMM + 协议自身代币的方式,或许许多 DeFi 协议会先尝试在内部打通不同 Layer2 网络及 Layer1 之间的隔阂,形成闭环。
也许未来随着更多 DeFi 加入 Layer2 的行列,更广泛意义的 DeFi 聚合器巨无霸将会出现,现在还只是刚刚开始,读者朋友们不妨多想想多看看。
参考资料:
https://mp.weixin.qq.com/s/2HYIsxnUaovKYs19xQ_KbQ
https://www.trustnodes.com/2021/03/02/vitalik-buterin-proposes-cross-rollup-scaling-solution
https://www.chainnews.com/articles/872971457746.htm
https://hop.exchange/whitepaper.pdf