一文了解通往 Layer-2 互操作性的道路
四句话总结
Layer-2 互操作性的意思使用户可以在 Layer-2 系统间迁移资金,并且在 Layer-1 上的摩擦力是尽可能小的。
本文所提及的 Layer-2 互操作性解决方案都基于我们之前建议使用的 “条件性交易密码学元件”。
StarkEx 2.0(预计在 2020 年 11 月推出)将使用链上的条件性交易来提供 Layer-2 to Layer-1 的互操作性(快速取款)。
StarkEx 3.0(预计在 2020 年 12 月推出)将使用链下的条件性交易来提供 Layer-2 to Layer-2 的互操作性(快速取款)。
背景
Layer-2 (L2)可扩展方案进步迅猛。以太坊主网上已经有很多个有效性证明系统了,也有不少欺诈证明系统已经推出测试网。L2 方案提供了可扩展性,但也有所牺牲:使用了 L2 方案,完全运行在 L1 上所能获得的一些好处就会被打破,或至少有所减损。我们不认为有某个 L2 解决方案能完美解决所有需要:不同应用对吞吐量扩展的需要大不相同。应用们自己会在丰富的 L2 设计库里面挑选自己合用的。
在进一步介绍以前,我们先对两个重要的术语下一个定义:
互操作性(Interoperability):能让用户在应用1(初始环境)和应用 2(目标环境)之间高效转移资金
可组合性(Composability):能在一笔交易中操作 app_1、app_2、···、app_n。(可组合性不是本文的主题。我们下次再专门聊。)
除了这些松散的定义,我们还需要一个增强版的条件性交易。这种重要的元件是产生互操作性的关键。
条件性交易(Conditional-Tx):
这是一种密码学元件(此处是我们初次提出这种方案),可用来在免信任的区块链上实现互操作性。条件性交易,就是依赖于一些事件的发生或不发生(例如:某笔支付、某一次状态变更),来决定自身生不生效的交易。给个基本的概念就是,我们可以在初始环境中定义一笔条件性交易,然后等它指明的条件在另一个环境(也就是目标环境)中得到满足,它再生效。
循序渐进
在更好的解决方案缺位之时,至少,用户总能够把资金从初始 L2 迁回 L1 上,再转而投入目标 L2。这种粗暴的方式既慢又贵,而且随着需求量的增加会变得越来越慢、越来越贵。
所以我们要做得更好才行。实际上,我们计划按照下列步骤,循序渐进地实现更好的方案。
Phase I:StarkEx (L2) → Ethereum (L1) — 快速取款
“快速取款” 可以解决用户需要快速从 StarkEx 系统中取出资金到 L1 上的问题。它不仅仅能把资金发送到用户自己的 L1 地址上,也可以把资金发送到 L1 的任意目标地址上,比如 Compound、Aave,等等,都行。重要的是,用户取款的时延将以 “区块时间” 来衡量,与 StarkEx 为批交易生成证明的频率无关。
使用场景:Alice 希望把自己在 L2 的 dYdX 账户里的 1eth 发送到自己在 L1 的地址上。
参与者:
Alice(一名在 L2 上有存款的用户)
LP(在 L1 上有资金的一名流动性提供者)
初始环境中的 StarkEx 运营者(在上述例子中就是 dYdX)
- 图 1:快速取款流程 -
流程:(1)用户向 LP 传递一笔条件性交易,承诺支付 1eth(加上 LP 的手续费),条件是 LP 在 L1 上把 1eth 打给 Alice 的 L1 地址;(2)等 LP 在 L1 上给 Alice 打钱之后,该笔条件性交易生效;(3)LP 把该笔条件性交易发送给运营者,等待它被打包到下一批待证明的交易中;(4)等下一笔证明被提交到 L1 并得到验证之后,该 LP 的 L2 余额增加,反映他从 Alice 处得到的资金。
定期再平衡:该 LP 需要定期拿自己在 L2 账户中(逐渐积累)的资金来补充自己 L1 账户中(逐渐消耗)的资金。
Phase II:StarkEx (L2) → StarkEx (L2)
最开始的 StarkEx 是每个实例托管一个应用。到了这个阶段,我们希望用户能够在这些不同的应用之间快速地迁移资金。很像快速取款,我们也希望能帮用户尽可能降低链上的开销,并且不用等待自己的取款交易在 L2 上打包和证明。
使用场景:Aliece 想把自己在 L2_1 的 dYdX 账户上的 1eth 转移到她在 L2_2 上的 DeversiFi 账户上。
参与者:
Alice(一名在 L2_1 上有存款的用户)
LP(一名在 L2_2 上有资金的流动性提供者)
初始环境中的 StarkEx 运营者(在上述例子中就是 dYdX)
- 图 2:链下条件性交易流程 -
流程:(1)Alice 向 LP 传递一笔签过名的条件性交易,承诺在 L2_1 上支付支付 1eth(加上 LP 的手续费),条件是 LP 把 1eth 打到 Alice 的 L2_2 的账户上;(2)该 LP 在 L2_2 上给 Alice 支付;(3)该笔支付交易由 L2_2 的运营者打包进某个批次并提交证明,该证明在 L1 上验证;待该批次交易发布在 L1 上之后,该笔条件性交易就可以生效了;(4)该 LP 把该笔条件性交易提交给 L2_1 的运营者,由后者将它打包进自己要证明的下一个批次中;(5)等 L2_1 的下一批交易发布到 L1 上、且其证明经过了合约的验证之后,该 LP 在 L2_1 上的账户余额更新,反映 TA 从 Alice 处得到的数额。
定期再平衡:LP 需要定期平衡 L2_1 和 L2_2 中的资金,就看两个系统中的资金流向如何。
在此阶段,支持互操作性的主要成本将是 LP 的资金成本;要注意的是,他们的资金成本要经过一段时间才能回笼,也就是从向用户提供流动性、到运营者打包处理条件性交易这段时间。我们预计这个时间一开始会是几个小时(大部分时候是),然后随着(所有 StarkEx 应用中)吞吐量的增加而下降到证明的生成时间(几分钟)。
Phase III:L2→ L2
Phase II 基础上的延伸,让资金能够在任意 L2 之间迁移,无论是使用有效性证明的系统,还是使用欺诈证明的系统(Optimistic Rollup、Plasma)。这里要提醒的是,(相比于 zkRollup)Optimistic Rollup 在使用 LP 来实现互操作性时,资金效率会有一些劣势,这是不可避免的(见此处)(中文译本)
信任模型
现在我们来归纳一下所需的信任模型。
对用户来说
完全是免信任的。
对 LP 来说
LP 需要信任(初始环境中的)运营者,相信后者会处理他们的有效条件交易,也就是不会审查他们。这种信任需要可以用几种方式来消除。
如果 LP 的条件交易没有得到运营者的及时处理,LP 可以:
反审查:提交被审查的条件交易到链上的 “运营者” 智能合约中,让后者冻结运营者,使该运营者所提交的证明都不能得到处理。
安全押金:提交被审查的条件交易到链上的一个安全押金智能合约中,从该合约处直接接收资金。
计划
Phase I 将在2020 年 11 月登陆以太坊主网(即 StarkEx 2.0),而 Phase II 将在2021 年第一季度到来(即 StarkEx 3.0)。
Phase III 也将紧随其后。我们预计 L2 上的不同应用会有与其他 L2 上的应用互操作的需求,也渴望与其他 L2 方案提供者讨论解决方案。