详解 Celer 新扩容方案 Layer2.finance:「原地扩容」而无需迁移 DeFi 应用

撰文:董沫,Celer Network 创始人

今天我们正式发布 Celer Network 旗下最新解决方案:Layer2.finance 致力于降低 DeFi 使用门槛,让普罗大众再不必担心高昂的交易手续费,能够自由且方便地使用现有 DeFi 协议从而获得高额收益。Layer2.finance 不是一个新的 DeFi 协议,而是一个低门槛且无需信任中心化第三方的「DeFi 世界总入口」。

DeFi

众所周知,现有的 Layer 2 扩容解决方案都需要将 DeFi 协议和生态进行整体迁移,这样不仅会影响 DeFi 的可组合性,同时还会造成生态、用户以及流动性的割裂。Layer2.finance 则实现了对现有 DeFi 生态进行「原地扩容」。由于不需要将 DeFi 迁移到 Layer 2,在确保 Defi 协议流动性不被分散的同时,还能保证其可组合性。Layer2.finance 让多个用户,原本需要多次,多账户,完成的资金分配交易,通过 Layer 2 Rollup 聚合为单次交易。这个聚合过程是通过一个创新性的 Layer 2 到 Layer 1 的广义函数调用来实现的,能够在确保与 Layer 1 同等安全性的情况下,不需要对任何中心化的第三方有额外信任。下面我们将详细介绍发布 layer2.finance 的动因、具体解决方案以及上线计划。

DeFi 落地速度正在大幅降低,或将成为巨鲸专属游戏

在过去的两年中,我们一起见证了 DeFi 用户和锁定资金的双百倍增长。这样一个开放自由且不依赖第三方的国际金融体系拥有让人热血沸腾的潜力:我们都希望 DeFi 迅速开启狂暴增长模式,早日从一个加密朋克的乌托邦进入寻常百姓家。

但是当我们仔细研究链上数据,却发现 DeFi 的增长在最近已经明显放缓。DeFi,一个本应是无歧视,无国界,能让普通人站在和大型机构一样起跑线上,共享全人类有效金融市场的开放理想国,正在崩解成为一个平常人无法进入的贵族围城。

DeFi图一:DeFi 用户增长速度放缓

如图一所示,在去年夏天的快速增长之后,DeFi 生态的整体增速已经放缓,每日新增用户回落到了 2000 左右,并且如果我们去看一些「蓝筹」和「入门级」DeFi 项目的话,比如 Maker,yEarn,Curve,其增速放缓的趋势更加显著。

另一个重要的指标是 DeFi 每日活跃地址数(日活)。某种程度上讲,日活可能是一个更精确的 DeFi 活跃度指标,因为它能够比较好的排除一个人多账户的现象,并可以真实反应有多少人每天在活跃”的使用 DeFi 产品。我们可以从图中看到,在经历了去年夏天的 10X 增长之后,DeFi 日活基本不再大幅增长,稳定在一个 4 万的水平。

问:那么 4 万日活是什么概念?

答:少的可怜。

如果我们拿

「单个」

「苹果手机系统上的」

「美国市场上的」

「综合排名 1500 左右的」

游戏来看的话(注意加了四个限制定语)。这个游戏的 DAU 大约是全世界 DeFi 日活的两倍有余。如果按照这个趋势,再过一年,整体 DeFi 的活跃度都不一定能超过一个很普通的手机游戏。

DeFi

不是,等一下。DeFi 用户不增长,这完全没道理啊!哪怕是最稳定可靠的一些 DeFi 应用,都能达到 10% 左右的无风险年化收益,且不论相较美国活期存款利息高出 250 倍,就是吊打不少私募基金也都完全不在话下。咱们别说老一辈的用户,就说生在互联网时代,对金融有所理解,收入较高的中青年白领阶层,不说一窝蜂冲上去,怎么不也有几千万用户,每人放个万八千的试试水?诚然,有区块链理解门槛,用户使用习惯等客观问题存在,但是古话说得好,有钱能使 xxx,强大的资本势能当然可以踏平一切门槛。

所以我们不禁要问:为什么?为什么没有大批的用户各自携带万八千资金,涌入 DeFi?

高额的区块链交易手续费正是罪魁祸首。区块链交易对于不同价值的交易,只要是同样的计算和储存成本,都一视同仁。但讽刺的是,正是这样的「无差别待遇」,造成了一个对小体量用户极为歧视的 DeFi 生态。这导致对于「小鱼」级用户,10% 的年化收益就是一个白日梦。

让我们看两个例子:

例 1

  • 小红存了 5000 元到交易所,想要玩儿玩儿 DeFi
  • 小红买了 1000 元的 ETH,以及 4000 元的 USDC
  • 小红把 ETH 和 USDC 都取到了自己钱包里面,花了 60 块的手续费
  • 小红想要把 4000 元 USDC 存到 Compound 赚取年化 10% 的收益
  • 小红惊讶的发现,手续费需要支付 420 元
  • 小红懵逼:为了赚一年 400 元的收益,我要先交 420 元,这什么操作?
  • 小红放弃继续探索 DeFi 世界

例 2

  • 小丽存了 5000 万到交易所,想要玩儿玩儿 DeFi
  • 小丽买了 1000 元的 ETH,换了 4999.9 万的 USDC
  • 小丽花了跟小红一样的 60 块手续费,把 USDC 和 ETH 取到了钱包里面
  • 小丽放了 3000 万到 Compound,手续费也跟小红的完全一样:420 元。在不到两小时后,小丽就收回了她 420 元的手续费交易成本
  • 剩下的 1999.9 万,小丽彻底玩儿 high,在花了 6 万尝试了 50 种不一样的 DeFi 协议之后,找到了一个风险较低,综合收益达到 50% 的策略。
  • 在一个月内,小丽赚到了 45 万的净利润,小丽很开心

我们可以很明显的看到,我们所希望看到的「早期多数」用户,被交易手续费赤裸裸的挡在了 DeFi 门外。

更细思极恐的是,虽然小红这样的用户进不来,但小丽这样的资本大鳄们看到高额的利润,低廉的手续费占比,会越来越多的涌进 DeFi 生态中,这进一步加剧了小红这类小体量用户的边缘化,最终形成一个被大资本独占的封闭生态。

文化上面来讲,这很不加密朋克,现实一点说,区块链技术和应用,无法吸引圈外用户,终究是整个生态可持续发展的重大阻碍。

这个问题亟待解决。

赶快使用 Layer 2 Rollup 扩容?冷静!

对 DeFi 关注比较长时间的朋友应该都听说过 Layer2 扩容,对于类似 SKALE 和 Matic 这类 POS 侧链技术,由于不具有 Layer 1 的安全性,且和一个独立的链建立 Ethereum 桥接没有区别,我们将不把他们列入 Layer 2 扩容的范畴。

Layer 2 Rollup 是近期受到较多普及且被社区广泛认同的技术方向(不论是 Optimistic Rollup 还是 ZK Rollup)。对于不同 Rollup 技术的介绍,请参加 Vitalik 的 文章,我们之后也会出一系列的 Rollup 中文文章,这里不再赘述。除了使用 Rollup 技术做单独的 DeFi 应用之外,目前社区中比较流行的观点是未来将会出现一个 EVM 兼容的 Rollup 扩容链,现有 DeFi 生态皆可重新部署并迁移到一个(注意不是多个,因为多个会破坏可组合性) Rollup 链上,然后大家就可以开心快速地使用 DeFi 应用了。若果真如此,那还等什么,赶紧的啊!

DeFi

可惜理想丰满,现实骨感,这样的技术方向正面临一些根本性挑战。

先从技术角度来说。

对于一个单链 Rollup 架构而言,计算和存储资源仍然是有上限的。为了保证 Rollup 的 liveness (即,能稳定地产生 block),需要多个出块节点之间保持同步。一旦存在这种多节点同步的要求,不论使用何种出块节点选择规则和算法,实事求是的说,一个单 Rollup chain,能够比主链提升 50-100 倍的容量已经是非常好的结果了。目前流行的节选择点同步方案也是类似一个 DPoS 的解决方案。这大概给我们了一个 2-4 百万每日活跃地址的扩容上限。显然,这个离我们所希望的 DeFi 走进千家万户的大规模落地,还远远不够。

虽然远期不够,那我们是否能先用这个方法解决燃眉之急?遗憾的是,目前这样的 Rollup 的技术架构,需要非常多的周边生态基础设施支持,并会对使用过程中的安全性假设造成深刻影响。想要将 DeFi 生态迁移到一个单独的 Rollup 链上,首先要解决一系列的问题,随手举例如下:

  • 用户在链正常运行的时候以及链发生暂停和回滚的时候,应该怎样和应用交互?以怎样的状态为准?
  • 中心化交易所怎么接入 Layer 2 生态,是否将 Layer 2 的代币和 Layer 1 的同种代币等同对待?
  • 在周边生态设施缺乏支持的情况下,如何让用户快速进入和退出 Layer 2 Rollup 链?
  • 区块链状态查询服务(类似 Infura 和 Alchemy),现在需要扩充 100 倍的容量,并且同时接入 Layer 2 和 Layer 1 进行复杂的验证和交易转发分流工作,这样的服务是否已经就绪?
  • 当出块节点试图停止出块进度的时候,客户端如何有效地通知客户并且保证迅速地将用户切换到 Layer 1 交互模式以保证安全性?
  • 对于那些依赖预言机的 DeFi 协议来说,这些预言机是否准备好能够抵抗可能的 Layer 2 禁言攻击?
  • 如果没有和 Layer 1 同量级的状态同步延迟假设,大部分 DeFi 协议是否需要重新评估其安全性?

这样的问题还有很多很多。在我们扔 400 亿到 Rollup 之前,所有这些问题,需要通过大量的时间和研究来找到合理的解决方案和折中。可一万年太久,只争朝夕。

那么就算假设所有的技术问题,都有了很好的折中方案,除了扩容有上限的根本问题无法解决外,是不是就万事无忧了呢?

可惜并不是这样的,因为从经济博弈模型的角度来讲,这条道路走下去,会不可避免地导致流动性割裂,极大的降低 DeFi 的市场效率。

如上所述,Layer 2 Rollup 扩容并不是免费的午餐。这个扩容是用各种各样的「麻烦」换来的,在系统设计中,叫做「取舍」(tradeoff)。这些取舍包括更复杂的用户交互,主链级别安全性确认的延迟,更复杂的周边基础设施,区块回滚重构风险,禁言攻击风险,还有被交易插队(front running)等等。对于小体量的用户来说,这些取舍是可以忍受的,因为不忍受这些取舍就无法得到使用 DeFi 的好处,是一个 0 和 1 的对比。

但对于巨鲸用户来说,相对于本身持有的巨量资金,Layer 1 的交易手续费本身就是很小的一部分,在这个很小比例基础上的费用降低,对巨鲸用户而言收益有限,但上述各种取舍所带来的潜在麻烦和安全不确定性,要远远超过降低手续费所带来的好处。他们显然不会迁移到这样的 Layer 2 系统中,而是会继续留在 Layer 1 的 DeFi 生态里。

综上来看,如果我们沿着这条路走下去,就算各种技术问题得到了比较合理的解决,我们仍然陷入了一个具有扩容上限,并且流动性割裂的 DeFi 生态系统,如果想要突破单个 Rollup 的扩容上限,就要开启多个具有独立 DeFi 生态的 Rollup 链,这将进一步导致流动性割裂和整体市场有效性下降。可谓是进退维谷。

我们需要一个全新的解决方案。

Layer2.finance: 不要将 DeFi 迁移至 Layer 2,把 Layer 2 带给 DeFi

为了解决上述挑战以及实现 DeFi 生态系统的广泛落地应用,我们以不同的方式使用 Layer 2 Rollup,引入了 Layer2.finance。类似于任何 Rollup,用户可以通过对 Layer 1 上的 Rollup 合约进行存款交易来将资金存入 Layer2.finance 的 Rollup 链。

但是,与大多数流行的方法不同,Layer2.finance 不会将 DeFi 协议本身迁移到 Layer2。简单的来说,Layer2.finance 构建了一个类似去中心化中介的模型。用户将资金存在 Layer 2 链上,并且通过特殊的 Layer 2 交易 (transaction) 形式,指明自己的资金希望被放在哪个 DeFi 协议中去。在 Layer2.finance 的二层 Rollup 链上,「交易」(transaction)不再是「A 给 B 发钱」,或者直接的智能合约函数调用,而是一个「资金分配指令」,比如「我想放¥500 到 Compound 协议中去」。而 Layer2.finance 的 Rollup 架构,实现了一个无需信任的「资金分配指令汇总」功能。比如在 2 个小时内,有 10 个人,陆陆续续的发出了「我想存 X 元到 Compound」的交易,Layer2.finance Rollup 则将所有这些交易实现汇总,并且实现“二层到一层」的函数调用,加和总的资金分配后,向 Compound 合约发起单一的一个调用,直接分配所有资金之和。通过这样聚沙成塔的模式,将原本需要的 10 个交易,简化为了一个交易。当有越多人聚合的时候,平摊到每个人头上的交易手续费,也就更少。计算机术语来说,就是原本 O(N) 的操作,简化为了 O(1) 的操作,极大的提升了效率,降低了成本。

DeFi图二:Layer2.finance 的体系架构

接下来,我们使用一个示例来说明 Layer2.finance 的体系架构。

生成资金分配方案

Alice, Bob 和 Charlie (简称 A,B 和 C)首先将资金放入 Rollup 基金池合约中,就像对待各种常见 Rollup 一样。然后,他们开始在 Layer2 上使用其资金。 Layer2.finance Rollup 上的帐户和资金状态不只是地址到值的映射, 对于每个用户,其资金的任何部分都可以处于三种不同的状态:1. 闲置; 2. 已承诺; 3. 已分配。

「已承诺」是指用户已发出第 2 层交易,以表示有意将资金分配给某些 DeFi 策略(我们将在后面说明)或从某些 DeFi 策略中提取资金。 我们需要这种「已承诺」状态,因为新汇总的资金分配建议在链上发布到实际执行的时间点之间存在延迟。 在下一部分中,我们将讨论延迟的原因以及在 ZK 和 Optimistic Rollup 之间进行选择的权衡。

用户「已分配」状态的资金呈现为在链上执行资金分配后收到的一定数量的「流动性证书」。它类似于 Compound 和 yEarn 中使用的 cToken 或 yToken 概念。这些带有收益率的流动性证书以后可用于赎回基础流动性,并将收益返还至闲置资金。在 Layer2.finance 中,我们将这些计息收益率流动性证书称为 stToken (st:strategy 策略)。

当用户正在部署和提取流动性时,stToken 和空闲流动性都可以处于「已承诺」状态。

现在,A,B 和 C 开始发出交易,以将其闲置流动资金投入不同的策略以获取收益,如图 3 所示。它们还可以从已分配的协议中撤出其流动资金。 出块节点在 Rollup 区块链上汇总这些交易。每当这些小额交易汇总到数额足够大,交易手续费相对占比较低,或等待一定时间后,Rollup 中的出块节点就会在 Rollup 链中生成一个区块。出块节点不仅将每个用户帐户状态的状态根(state root)发布到第 1 层,而且还将整个池的汇总「资金分配方案」发布到不同连接的 DeFi 收益协议之间进行重新平衡。在此特定示例中,资金分配方案为「将 $300 分配给策略 0,将 $500 分配给策略 1」。

出块节点是一个逻辑概念,最终将成为去中心化的 Celer 状态守护者网络 (SGN),以确保能够对抗审查并增加 Rollup 链的安全性。

从资金分配方案生成到真的资金移动的延迟:ZK 和 Optimistic Rollup 之间的选择

在生成区块并将状态根哈希和资金分配方案发布到链上之后,会在直到实际发生资金流动为止前有一个延迟。值得注意的是,Layer2.finance 极大的拓展了第二层和第一层之间简单的信息接口,即把「谁有多少钱」这样简单的存取资金的状态,扩展为更通用的「指令接口」来表达资金分配方案,即「将多少资金分配给哪些协议”」。这本质上是二层对一层的函数调用。

在使用 Layer2.finance 的 Optimistic Rollup 时,延迟是确保在转移资金之前最终确定总资金分配建议的挑战时间窗口。与取款不同,这里不会有第三方从系统中拿走资金,且由于在汇总期间的长延时与挑战证明的简单性,这里的挑战期可以从数周缩短为数小时。

使用 ZK Rollup 时,状态根有效性不需要挑战期,所以资金移动延迟取决于区块时长。

在 1.0 版本中,我们选择使用 Optimistic Rollup 以简化并加快迭代速度。 将来我们会计划迁移到 ZK Rollup,以在协议成熟后缩短执行延迟。

资金分配方案的执行

当延迟结束,资金分配将在链上执行。 我们定义了一个名为「Strategy Adapter」(可插拔策略策略)的通用抽象层,而不是直接与每个不同的 DeFi 协议进行交互。 它们和 yEarn 的 vault 具有类似的概念。该层用于三个目的:

  • 流动性证书(stToken)抽象。 策略适配器跟踪总存款流动性的基础价值,并生成一定数量的收益证书代币(stToken),被 Layer2.finance 的用户接收;
  • 易于扩展。 通过为 Layer2.finance Rollup 合约定义的公共接口,可以更容易地将协议的右侧扩展到任何具有收益的协议;
  • 灵活的策略配置。 策略抽象为使用不同策略(例如抵押比率)到同一收益协议甚至将多个 DeFi 协议组合为一个策略提供了灵活性。

我们打算与 yEarn,Curve,Aave,Compound 等 DeFi 领域的开发者社区合作,构建适配器,并使更多用户访问这些产品。

当资金分配执行真实发生在链上时,Layer 2 出块者层将根据 Layer 1 交易生成 Layer 2 并进行状态更新,将每个用户的新 stToken 添加到 Layer 2 状态(在本例中为 A ,B,C),并清除那些处于「已承诺」状态的资金。在此步骤中,我们使用从第 1 层到第 2 层的广义反向通信来实现此目的。

上述就是系统的一个完整循环,layer2.finance 由此可以允许用户自由选择并在与不同协议相对应的不同策略之间移动资金。

Layer2.finance 作为 DeFi 扩容提速解决方案的优势

我们总结了使用 Layer2.finance 对广大受众的主要好处:

  • 低成本。由于 Layer2.finance 将少量流动资金汇总在一起,因此为每个用户分配资金和产生收益的成本要低得多。尽管存在一定的数据可用性成本,但越多的人使用它实际上越能将降低单个用户与 DeFi 协议进行交互的成本。 我们估计完全有可能将成本降低 1000 倍;
  • 保持可组合性,没有流动性碎片,也无需迁移 DeFi 协议。 Layer2.finance 可原地扩容 DeFi 协议,因此它不会造成任何流动性分散,并将进一步提高 DeFi 协议的可组合性;
  • 可叠加的可扩展性。如果单个 Layer2.finance 汇总链变得过于拥挤或状态变得太大而无法维护,则可增加一条新链连接到 Layer 1 DeFi 中相同的流动性系统上。虽然短期内受限于于链上容量,但在将来使用 ETH2.0 时,扩展性的上限将得到几乎无限的可叠加提高。
  • 灵活的 DeFi 分片。 除了可扩展性之外,还有很多原因可以启动多个 Layer2.finance 链,例如不同的批处理配置,不同的策略风险特征(无论风险高低)等等。 这有效地实现了 DeFi 生态系统中的功能性分片 .

局限与权衡

尽管我们相信 Layer2.finance 是会将 DeFi 带入大规模普及的解决方案,但我们同时也要说明此解决方案的局限性与取舍。 同时我们便可更好地讨论这样的取舍是否「值得」。

  • 由于聚合导致延迟。 无论我们选择 ZK 汇总方法还是 Optimistic 汇总方法。 从用户表达出进行资金分配的意图到实际进行资金分配的时间都存在固有的延迟。 这是由于 Layer2.finance 依赖的第 2 层聚合。但是,我们认为这是一个合理的取舍,否则这些小额流动性用户根本无法从 DeFi 中受益。 我们可以动态调整此延迟,以找到成本与反应性之间的正确的折衷点。
  • 高级操作的局限性。 与 DeFi 生态系统的原始接口不同,Layer2.finance 为用户提供了抽象化的策略。 用户无法执行多个 DeFi 协议的高级定制化组合。 但是,我们认为这不是问题,因为高级 DeFi 用户不是 Layer2.finance 的目标受众。

至于其他限制,最明显的是交易插队和交易禁言。 但是,它们并非 Layer2.finance 所独有,其他 Rollup 构造也同样存在此类问题。 实际上,考虑到 Layer2.finance 的可分片叠加扩展性,此类问题的严重性其实比传统 Rollup 要小得多。

启动计划

我们什么时候启动 Layer2.finance?

我们的目标是在 2021 年第一季度推出推出基于 Optimistic Rollup 的 Layer2.finance 1.0,当然这取决于我们支持的协议数量和安全审计。 我们计划在迭代初始阶段之后升级到 ZK Rollup。 我们将在 1.0 版本支持一些最受欢迎的协议,例如 Curve,yEarn,Compound 和 Aave。

对于 DeFi 社区,如果您希望我们支持并降低使用某些协议的成本,请在我们的 Discord 频道中提出。

协议经济学

我们不会发行新的代币。Layer2.finance 是一个生态系统项目,使用了 Celer 的开源第二层技术堆栈。最初的迭代之后,出块者的关键基础架构将在 Celer 的状态守护网络 (SGN) 上运行。可以通过质押 CELR 代币成为 SGN 的验证节点。CELR 还将成为治理代币,用来对新策略的实施、集成和配置进行投票。为了快速提高平台上的流动性,我们很可能会考虑进行流动性挖矿。详细的经济学和费用模型不在本文的范围之内,将在以后的文章中进行更详细的描述。

希望 Layer2.finance 可以与社区一道,帮助 DeFi 早日走进千家万户。