Layer2 - 扩容难题

Layer2 - 扩容难题

Updated
Mar 11, 2021
作者
Ashu Chan
Tags
Layer2

DeFi 业务的增长从 2020 年起飞,TVL 从 $600M 到 $25B,增长了 40 倍。从一个现象就能直观感受:DEX 去年从每日数千笔到达数十万笔规模,Uniswap 的单日交易量甚至一度超过了老牌中心化交易所 Coinbase。

以太坊上的交易量不断攀升,区块容量却开始吃紧,而矿池选择 GasPrice 竞价排序交易使其利益最大化。同时考虑到 DeFi 业务技术上存在抢跑攻击,用户心理上存在 FOMO 等问题,导致最终大家愿意付出更高的价格让交易跑得飞快。高价矿工费,使我们离普惠金融的初衷渐行渐远。

那么以太坊为什么不选择直接提升区块容量,承载更多交易呢?原因很简单,区块链核心限制在于「每一笔交易都要由网络中每一个节点验证处理」,那么当区块大小扩大几倍时,则会让更多小型节点退出,逐渐走向中心化。

给区块链扩容难吗?

image

早在 2010 年时中本聪就已经探讨过扩容问题,最初中本聪在比特币源码中设定区块容量为 32M,但后来区块交易量一直很小,就把容量设置为了 1M。他自己也认为如果有扩容需求,那么在代码中设定区块高度自动升级区块容量就好了。

但是后来比特币扩容却不是那么顺利,主要分歧在于是采用「隔离见证和闪电网络」,还是「增加区块容量」。前者认为「区块容量增大要求更高带宽和存储,会使节点逐渐走向中心化」,希望借助隔离见证和闪电网络这两项技术完成扩容,不增加区块容量。

注:这也是为什么 Eth2 希望采用 PoS 降低节点门槛,从而让更多人可以成为验证人,使其完成去中心化世界账本的理想。

当然这最后已经不是技术问题了, 而是上升到了意识形态之战,经历香港共识的出尔反尔与不信任,最终走向硬分叉的道路,形成目前 Bitcoin Core 和 Bitcoin Classic 两条扩容路线。

比特币扩容过程就像一场戏剧,我们可以看到诸如 SegWit、Schnorr Signature、Lightning Network 等扩容技术落地实现,但还未有质的改变。

  • SegWit:交易数据压缩至 25%;
  • Schnorr Signature:单签名数据压缩至 50%;多重签名:多笔交易压缩成单笔交易体积;
  • Lightning Network :缺少点对点小额支付场景,资产规模仅有 1000+ BTC。

image

后来闪电网络白皮书的作者 Joseph Poon 转战以太坊社区,与 Vitalik 在 2017 年发布 Plasma 白皮书,试图解决以太坊的扩容问题。

Plasma 主张将交易的计算和存储搬到 Layer2,然后将多笔交易压缩成一个区块,并将区块的默克尔根提交到 Layer1 Plasma 合约,从而提高吞吐量和降低交易成本。

Layer2 依赖 Layer1 Plasma 合约作为安全信任和仲裁层,如果 Layer2 出现问题/作恶,那么用户可以借助 Layer1 Plasma 合约退出资金。退出资金要等待约 2 周的挑战期,在此期间任何人都可以提交「欺诈性证明」证明退出无效,从而获得奖励。反之,若无问题则等待挑战期结束,顺利退出。

Vitalik 称 Plasma 是 side chains that have a non-custodial property,究其原因主要是用户需要信任 Side Chain 机制,而无法保障自己资金的所有权,但 Plasma 通过交互式欺诈性证明可以让用户随时申请退出资金,即便 Plasma 子链出现问题/作恶。

Plasma 曾是社区的希望,我们可以看到许多 Plasma 变体实现诸如 OmiseGo、Matic、Loom 等,但因为一些缺陷,它并没有获得社区最终的青睐:

  • 缺少数据可用性,用户不得不依赖 Plasma 可信任节点数据或不断监控网络是否作恶,无法获得同等于 Layer1 的安全性。
  • 提款周期长,依赖长达两周的欺诈性证明挑战期,如果有人作恶,同时挑战期内无人发现并提交作恶(欺诈)证明,那么用户资金存在损失风险。

上面这段话可能有些难以理解,我们来举个数据可用性的例子:

当你去赌场玩德州扑克时,你从柜台(Layer1)将美元换取筹码,然后你开始随便找了一张桌子玩了几个小时德州(Layer2 交易),当你赢到盆满钵满的时候,你准备起身到柜台兑换筹码。此时赌场的坏人给你当头一棒,你失去了记忆(数据不可用),牌桌上的荷官当作什么事情没有发生过一样,重新开始刚才的牌局,骗走你本应赢到的筹码。

从过去比特币和以太坊扩容情况来看,我们逐渐找到了理想扩容方案应该有的样子

  • 保持区块容量大小,避免走向中心化;
  • 支持数据可用性,用户可以从 L1 上重建交易状态;

随着 2019 年以太坊硬分叉升级 - Istanbul,我们离理想扩容方案越来越近,此次升级包含两个 Layer2 友好的 EIP 提案

  1. EIP - 1108:使 SNARKs 和 STARKs 验证运算更便宜;
  2. EIP - 2028:降低 Calldata Gas 消耗量,以便 L2 数据采用 Calldata 形式低成本上链。

Layer2 Rollup 的现状

什么是 Rollup?

Rollup 有不少中文译名,其中一个打趣的翻译是「春卷」,你可以想象将食物卷起来一口吃下去的感觉。实际上,Rollup 就是将交易数据压缩放到 Layer1 上,从而实现同样的区块容量可以塞下更多交易,将 30 TPS 扩容到 3000 TPS 级别,再搭配上 Eth2 Sharding 扩容,效果可以媲美当下 Visa 的水准。

如何压缩数据?

image

压缩是 Rollup 的精华,巧妙的压缩技巧可以塞下更多的交易,同时压缩数据上链可以提供「数据可用性」,保障用户资产安全。

一笔简单的以太坊交易(比如发送 ETH)通常消耗约 110 字节。然而,在 Rollup 上发送 ETH 仅消耗约 12 字节。我们以收款地址和交易签名举例:

  • To:使用「索引」来代替 20 字节的地址(例如:一个地址是「状态树」中的第 4,527 个地址,我们就可以用索引 4,527 来表示它);
  • Signature:利用零知识证明的特性,将数千笔交易签名转化为零知识证明,通过检查证明的有效性,从而证实数千笔交易有效。

Rollup 方案对比

Optimistic Rollup 欺诈性证明zkRollup 有效性证明
任何时候都需要至少 1 个诚实的验证者
零知识证明验证一次即可
如果欺诈性证明失败,所有资金都将丢失
如果有效性证明失败,重试即可
退出需要 1 周
退出需要 15 分钟
隐私性差且成本高
隐私性高且成本低
项目还未完全上线主网
项目 zkSync 和 Loopring 已上线主网
EVM 兼容
EVM 不兼容(暂时)

Rollup 方案主要分为两种 :ZK Rollup 和 Optimistic Rollup。前者采用有效性证明,后者采用欺诈性证明,这两种证明方式背后的理念是不同的:

  • 有效性证明:采用数学的方式保障资金安全、用户体验流畅和隐私,但短期内无法支持通用的 EVM 计算;
  • 欺诈性证明:支持通用 EVM 计算(方便以太坊项目迁移) ,但短期内无法采取零知识证明,所以折衷选择欺诈性证明,保障资金安全。

最后,本文为了讲述 Layer2 发展历程提及了一些过往不同的扩容方案,但这并不意味这些方案的思路是失败的。这其中除了技术问题,商业可行性也是值得深思的,正如 Vitalik 对这两种 Rollup 方案的评价:

短期内,Optimitic Rollup 很可能在通用的 EVM 计算中胜出,而 ZK Rollup 则可能在简单的支付、交易和其他特定应用场景中胜出。但从中长期来看,随着 ZK-SNARK 技术的改进,ZK Rollup 最终将在所有场景中胜出。