链上扩容并不是一个「新」问题。
早在 2017 年,以太坊和比特币拥堵、无法满足用户需求的弊病就已经显现了,从那时起,陆续有开发团队提出相应的解决方案,只是随后而至的熊市降低了人们的交易热情,这类方案也就淡出了投资者的视野。
直到今年 5 月份,随着流动性挖矿及 Uniswap 的火爆,人们再次发现:Gas price 一路飙升到 500 Gwei,未确定交易数达 14 万余笔。有人调侃,以太坊的性能都不足以提供一个 DeFi 项目的正常使用。也因此,链上扩容的问题又重新成为了热议的话题。
谈到扩容,就不得不提到区块链的不可能三角问题。对一条公链来说,安全性、去中心化程度、可扩容性三者不可兼得。理论上,为确保去中心化程度及安全性,链上的每一条信息都需要通过所有节点的认证才能达成共识,这意味着一条链的吞吐量就等于一个节点的吞吐量。
人们尝试从多个角度来解决扩容问题。最直接的方式就是从不同维度「修改」这条链:小到调整区块大小、尝试不同共识算法,大到改变链的组成及数据传输结构——每种改变都会不同程度地妥协系统的去中心化程度和安全性。利用分片技术是一种新的尝试:让每一分片处理各自片中产生的交易。想法很美好,但目前分片技术在区块链上的应用还不成熟,诸多问题尚未被解决,尤其是跨片通信与互操作性。
链下扩容算是唯一还算成熟的技术。这一方案的主要逻辑是将一层主链负担减到最低,二层完成应用逻辑。能够实现这一方案的原因是并非所有的交易都需要达成全局共识,并非每一笔交易都需要改变全局状态,一层公链只需要负责保证公共可验证性就已足够。
从上图可见,以太坊的 Layer 2 项目已经非常丰富,但以太坊依然会堵,为什么 Layer 2 的应用很少有人用呢?
为更深入了解 Layer 2 生态的发展现状与问题,律动 BlockBeats 与 Layer 2 头部项目 Matic 创始人兼 CEO JD(Jaynti)Kanani 和 Celer Network 的联创董沫博士进行了讨论。在下文中,我们试图以最一线的视角回答一个核心问题:为什么 Layer 2 看似成果显著,但为什么离我们还是那么远?
Layer 2 的生态发展
即便不曾体验过 Layer 2 带来的便捷,大家或多或少都听说过 Layer 2 项目或者代币。从技术架构来说,Layer 2 方案百花齐放,比如适合大规模转账的 zkRollup,Optimsm 和 Offchain labs 在做的 Optimistic Rollup,Celer 提出的 Hybrid Rollup 和状态通道网络,以及一些还在坚持 Plasma 的项目。
DeFi 热潮兴起后,Celer Network 的董沫博士明显感受到了市场对底层基础设施的态度转变:「Layer 2 生态其实一直都在稳步推进,开发者也是越来越活跃,随着以太坊拥堵问题再次显现,开发者对 Layer 2 的关注也在不断的增强。」
不光是开发者关注,更重要的是,不同公链也在布局自己的 Layer 2 扩容生态,包括 Polkadot,Oasis Labs,Nervos 等等。那么,在如此众多的方案中,这些项目面对的最大技术难题又是什么?
不同的路径中间,摆放着各式不同的路障。Matic 的 JD 认为:「对于 Matic 的 Plasma 解决方案而言,大规模退出问题十分棘手。Matic 的 Plasma + PoS 混合架构中 PoS 数据可用性层最大程度地减轻了退出问题。应用多个验证节点取代单一节点的认证能够将欺诈及数据可用性问题缩减至近乎为零。」
董沫博士告诉律动 BlockBeats:「Celer 的 Hybrid Rollup 虽然没有 Opitmistic Rollup 中『谁来决定交易打包的顺序和与主链的连接』问题,以及『如何设计出块节点的激励机制来避免交易 censorship』的问题,还有『如何尽量加快交易确认的延迟』的问题,但『如何帮助轻节点监控交易的有效性』的问题仍然存在。」
在与一线开发者的讨论中,我们发现,目前状态通道网络其实已经没有什么尚未突破的难点了,它基本上已经是一项能进入生产环境使用的技术——基于 Celer 的游戏平台 CelerX 每天都在使用状态通道技术,用户已经能在无感知的情况下使用着区块链技术与支付平台。
但或许很多人都很疑惑:为什么即便已经有那么多的 Layer 2 解决方案,为什么这次 DeFi 热潮的冲击下,以太坊网络还是会如此拥堵?JD 认为造成这种割裂的原因主要有两个,一是开发者问题,「对大多数开发者们来说,他们希望在不改变原有代码的情况下将应用迁移至 Layer 2。因为对代码进行任何改动会涉及到可观的审计及维护费用。但如果 Layer 2 项目方能够让应用开发者们简单的完成迁移,这将在一定程度上促进开发者迁移的意愿。」
其次是用户端的问题。「对用户来说,选择使用以太坊主链,还是 Layer 2 应用是一件非常棘手的问题。用户需要明白使用两者的利弊,或者说,Layer 2 项目方能直接让用户实现无感地与 Layer 2 进行交互。在没有合理的激励措施下,将资产在一层与二层间转移对于用户来说是极具挑战性的。」
此外,董沫博士也认为:「进出 Layer 2 的过程往往比较复杂,这个对于技术和用户都是门槛,同时对于生态更是门槛。Layer 1 的基础设施(Infura,浏览器,轻客户端,交易所支持等等)已经比较完善,而在应用迁移到 Layer 2 的过程中,还需要有相应配套的基础设施,这些东西都不难做,但是需要一点时间。」
DeFi 项目适合部署在 Layer 2 上吗?
让我们再回到 DeFi 的问题上来。
DeFi 应用中的多频、复杂交互是导致本次以太坊拥挤的本质原因,那么 DeFi 应用是否适合部署在 Layer 2 上呢?董沫博士认为:「理论上来说非常适合,Layer 2 可以极大地降低交易成本。但这里面的核心难题还是之前提到的两点:生态支持和时间的检验。」
目前,DeFi 繁荣的生态是非常依赖应用的组合性的,单木不成林。这种组合性其实在一些基础性协议,比如 Maker、Uniswap 的长期运行和检验后迎来的综合性爆发。从开发者的角度看,最适合 Layer 2 的,可能是那些类似于 dYdX、Loopring DEX 等这种相对来说不依赖组合性的 DApp,然后慢慢再聚沙成塔的一个过程。
除了内生生态,外部生态的环境也很重要。大家可以想象一下,如果没有交易平台的支持:你挖了基于 Layer 2 的红薯,如果还要等很长时间才能转回到 Layer 1,之后发送到交易平台再完成交易的话,可能市场价格早就变了。
此外,虽然理论上这中间不存在安全性问题,但实际上,无论是工程化,还是生产级的产品质量,都需要时间的检验和信心的积累。
据了解,近期已经有部分 DeFi 项目(EasyFi)迁移至了 Matic,包括上文提到的去中心化衍生品交易平台 dYdX 也迁移至了基于零知识证明的 Layer 2 解决方案 StarkWare。JD 认为,长期来看 DeFi 项目终将迁移至 Layer 2。那么具体到每类项目,DeFi 项目应该选择怎样的 Layer 2 解决方案呢?
如何给 DeFi 选择 Layer 2 方案?
对于这个问题,可以先对 zk Rollup、Optimistic Rollup 和 Hybrid Rollup 的优劣势做一个简单的对比。
根据 Celer Network 的董沫博士的介绍,zk Rollup 的特点是二层区块的交易数据(calldata)和零知识证明上链之后,交易有效性就能立刻确认。而由于零知识证明的特性,正确性验证是很简单的操作,可以直接在 Layer 1 完成验证,确认及时性比较高,适合转账。
当然,这个方案也有缺点。「首先验证链路的构造没有一个通用的解决方案,所以目前没有很好的办法做到很广义的虚拟机逻辑。简单来说,zk Rollup 必须对每一个用例定制;其次是程序正确性的验证相对复杂,要对多项式 curcuit 做验证;最后是二层打包节点负担重,成本高,计算零知识证明所需时间长,用户延迟的体验角度仍然比较差。」
而 Optimistic Rollup 主要的缺点是它本身的交易延迟有点高。这个延迟甚至比 Layer 1 还要高,但它的优点是可以支持无限参与者的任意智能合约逻辑。一次可以打包很多,在董沫博士看来,「交易排序和打包机制没有很好的解决办法,只是需要比较复杂的矿工剩余价值拍卖(MEV auction)的机制来选择打包节点,且容易出现 censorship 的问题。」
除此之外,Celer 的 Hybrid Rollup 方案有点像混动车,将 Optimistic Rollup 以及 Celer 的 SGN 结合在一起,「优点是可以解决 Optimistic Rollup 交易延迟比较高的问题,同时解决了区块打包中的交易排序和付费问题。」董沫博士表示。
当然,不是所有的交互都有那么高的安全性要求,只有涉及到交易时的操作安全性要求会比较高,但很多应用的数据交互并不需要那么高的安全性要求。因此,我们大概可以这么考虑:很多对安全性要求不高的操作可用侧链来确认,与此同时,还可以在同一条侧链上组合多个 Rollup 来达到应用层类分片的效果,提高可组合性。即使确认出现了问题,还是可以通过最终的主链确认,进行事后的纠错。
在明确了各类 Rollup 解决方案的优缺点后,律动 BlockBeats 认为各类 DeFi 应用可按照需求选择与项目特征最匹配的扩容方案:
对于去中心化交易所以及各类支付平台,应用中需要进行大规模转账,zk Rollup 将会是合适的解决方案。应用 zk Rollup 的去中心化交易所 Loopring 就是一个很好的例子,另外近期 Tether 也在考虑将 ERC-20 的 USDT 迁移至 zk Rollup 的 Layer 2 上。
若应用内需要执行复杂的合约逻辑,且对吞吐量要求较高,那么 Optimistic Rollup 或者 Hybrid Rollup 的机制与此类应用比较契合。合成资产平台 Synthetix 尝试使用 Optimistic Rollup 来大幅提升预言机报价频率,以此解决在一层网络会遇到的交易暂时停滞问题。
在 Rollup 解决方案中,Hybrid Rollup 尽量优化降低了延迟,提高用户体验,但对于安全性做了一定的妥协。因此许多底层 Layer 1 项目,像以太坊、波卡、Near、Conflux,都选择了使用 Celer 的状态通道作为他们的二层扩容解决方案。
在以太坊 2.0 到来之前,如果计算复杂、用户热度高的应用能够选择迁移至二层网络,以太坊网络拥挤问题可以得到一定程度缓解。
而随着 Layer 2 的解决方案逐渐成熟,在技术难点逐一被解决、用户体验被进一步优化后,未来也一定会有更多的应用会选择迁移或直接部署在二层网络。只是目前来看,短时间内要想大规模用上部署在 Layer 2 的 DeFi 项目,仍有待时日。