DeFi 应用 Layer2 扩容方案选择指南
Jul 14 2020 · 17 min read
DeFi 热潮,再次突显以太坊性能问题
以太坊是目前最去中心化的智能合约与应用平台,任何一笔交易或者一个合约的执行都会被分布在全球的 8000 余个节点所验证和储存。
足量的冗余是工作量证明机制下网络安全的保证,但由于节点间同步速度受网络通信带宽的限制,整个网络在一定时间内可以达成共识的状态变化(State Transition)有限。交易发起者和合约运行者需要通过竞价来获得这些资源。
具体地,以太坊目前每秒可以处理的交易数可以按以下公式计算:
公式中,以太坊区块的 Gas limit 以 12,500,000 计,平均区块间隔以 13.2 秒计,可以得出以下表格:
从表格中可以看出,向 Compound 存入 ETH 等复杂的合约交互的 Gas 开销大于数十笔 Ether 转账,一笔复杂交易的转账费用可以高达数十美金。当以太坊收到越来越多 DeFi 等应用的复杂交易时,每秒可处理的交易数将快速下降。而这也正是目前正在发生在以太坊上的变化,下图显示了与主要 DeFi 项目账户数的变化趋势。
尽管区块 Gas limit 在 6 月 19 日的矿工投票后增加了 25%,区块的使用率仍然居高不下。用户被动地支付更加昂贵的 Gas Price 来竞争 Layer1 紧张的处理能力,Gas Price 正在 DeFi 应用爆发式增长的推动下同步上涨。
尽管竞价打包的机制提高了矿工收益,维护了以太坊的稳定运行,但成本的提高同时显著地限制了 DeFi 应用的发展和用户的进一步增长。按照目前的以太坊 Gas Price (85GWei),将 1ETH 在 Uniswap V2 中兑换为 LEND 所需要的 Gas fee 为 0.04544ETH,向流动性提供者支付比例为 0.3%,相加起来是中心化交易所一般收取的 0.2% 手续费的 24.22 倍(尽管在 DEX 上交易的 Gas fee 是一固定值,当交易数额增大时所占百分比将快速下降,但 AMM 交易所的流动性同样会显著地提高滑点,进一步增大在去中心化交易所交易的额外成本)。
高昂的手续费使用户望而却步,DeFi 应用开发者和投资者正在急切地寻求合适的扩容方案。
欺诈证明(Fraud Proof)还是有效性证明(Validity Proof)?
Layer2 扩容的思路简而言之是将许多笔交易用一个证明所取代以节省 Layer1 的资源,相应的,这个应该可以证明对应的多笔交易的有效性。自然地,证明的方式可以分为两种:
- 欺诈证明,提出证据以证明链上的状态转换并不正确;
- 有效性证明,提出证据以证明链上的状态转换正确。
欺诈证明对应的 Layer2 扩容方案乐观地假设链下交易均真实有效,直到某方提出证据证明其存在错误。多数我们熟悉的扩容方案都属于欺诈证明类方案,其中包括状态通道(State Channel)、Plasma、Optimistic Rollup 等,这些方案在作恶者为少数的系统中非常高效,因为多数交易无需证明即被乐观地认为是真实有效的,证明这些交易真实有效所需要的开销被节省了。
但为了避免恶意交易成为漏网之鱼,采用欺诈证明的系统必须留出足够的「容错时间」或者说「质疑时间」来接收欺诈证明以证明某些交易并不真正有效而将之取消。在质疑时间之内,Layer2 上的交易仍然有被修改的可能,关联账户的余额在 Layer1 上仍将被锁定,无法退出。同时,这种机制的有效建立在被害者有能力在「质疑时间」内认识到系统的错误并提交欺诈证明以纠正的「在线假设」(Liveness Assumption)基础之上。在这一假设中,对错误的沉默等同于对错误的默许。攻击者常常通过各种手段阻止利益相关方在质疑时间之内提交欺诈证明而完成攻击。欺诈证明类方案必须在质疑时间的长短上做出取舍。
有效性证明类方案,如 ZK Rollup 与 Validium 等,相比欺诈证明稳重许多,系统每次在 Layer1 上进行状态转换时都提交足以证明其转换真实有效的证明供 Layer1 节点验证。有效性证明因此无需设置质疑时间,从 Layer2 退出无额外延迟。如何节约生产证明的开销是有效性证明类扩容方案的艺术。
零知识证明是一种精巧有效性证明方式,它使得 Layer1 的验证节点无需获取链下交易的全部信息并进行重复计算即可证明其有效性。零知识证明算法的研究一直处在密码学领域的前沿,由于涉及复杂的数学和安全性证明,零知识证明的研究进展相较应用技术缓慢许多。目前主流的零知识证明算法包括 zk-SNARK、zk-STARK、PLONK 和 SONIC 等。好的零知识证明算法应该是验证开销低、生产快的。值得注意的是,目前实用的零知识证明算法生成证明的时间大约在 1~10 分钟,这是额外的无法消除的交易确认延迟。另外,由于零知识证明的生产需要大量计算,开发者通常通过开发电路(由低级语言编写的特定逻辑运行程序)减少计算时间,这使得零知识证明更倾向于运算格式一致的交易,也因此更适用于去中心交易所等需要处理的交易类型固定、合约简单的应用。
数据可用性(Data Availability)的解决
D1 Ventures 对于数据可用性的关注,始于对 Plasma 的讨论,Plasma 是一种通过建立锚定以太坊主链的侧链而实现扩容的方法。Plasma 在以太坊主链之外开启一条或多条侧链,周期性地在主链上记录侧链所有的区块头的快照(不包含具体交易信息),以此将侧链的状态纳入主链的安全保护伞下。但由于快照中不含具体交易信息,主链无法得知用户在 Layer2 的状态,在侧链运营商仍然保有随意停止向主链同步信息或者拒绝打包某些交易的权利时,用户必须独立存储侧链上的全部数据并提交至主链才能保护自身财产的绝对安全,而这一数据量对于主链的处理能力而言并不现实。
Rollup 改进了这一问题,将 Layer2 交易连同整个侧链的状态一同锚定到以太坊主链之上,从而实现了数据可用性。这一改进使得用户可以轻松地向 Layer1 的验证节点证明其在 Layer2 的全部交易真实有效,因此,可以随时退出 Layer2。
实现数据可用性的同时必须避免过度占用 Layer1 空间,Rollup 灵活、立足实用地将单个交易在链上的存储空间压缩到 11 个字节(Nonce 和 Signature 并不会存在链上),748Gas,是 Layer1 普通转账的 1/28,其中:
- 缩小账户空间到 23*8 (大于 1677 万个),按照预设的 Merkle Tree 将以太坊主链上的 20 字节的账户地址转为 3 字节的叶节点索引作为压缩后的地址;
- 缩小金额分度为 0.001ETH,分别将 32 字节的空间压缩为 4 字节和 1 字节以表示转账金额及手续费;
- 假设一个账户的转账次数不会超过 2 万,以两个字节表示 Nonce。
实现数据可用性的实质在于对 Layer2 网络交易数据的储存和检索,在主链上压缩数据并存储可能是最简单的方式,但并非唯一。Rollup 方案下的 Layer2 的交易可以像 Layer1 的交易一样在区块链浏览器中被解析和查阅,这对 DEX 中不想暴露交易策略的专业交易者造成了困扰。StarkEx 建立了链外的许可型数据可用性委员会(DAC)来存储数据并对不断对整个账本的新状态进行签字确认。随着 Filecoin、Lazyledger 等去中心化存储平台的逐渐成熟,数据可用性将会找到成本最低,隐私最好的解决方案。
主流 Layer2 扩容方案矩阵
D1 Ventures 将目前主流的扩容方案和代表性应用按照上述的欺诈证明 / 有效性证明和链上 / 链下数据有效性分为四个象限。
zkSync 是 Matter Labs 在 ZK Rollup 的基础上开发的以太坊 Layer2 开放网络。在实现 ZK Rollup 的高 TPS 和低手续费的基础指标外,zkSync 建立了一个更加实用和独立的网络:
- 亚秒级交易确认。zkSync 引入了即时交易收据(Instant TX Receipts)设计,网络验证人会在对一笔交易形成共识后预先使用质押资金确保这笔交易将被包含在下一个 zkSync 区块之中。
- 抗审查。为了保护网络的隐私性,zkSync 设置了守护者(Guardian)的角色,用以监控验证节点见的点对点通信流量和探测审查行为,守护者可以频繁更换一部分验证者。
- 零知识智能合约框架。zkSync 推出了安全且高效的编程框架和基于虚拟机的运行环境 Zinc,为基于零知识证明的智能合约而设计,可以将 Layer1 上的智能合约快速编译为零知识证明算法善于处理的程序,以此作为 Layer1 上 DeFi 等大量消耗资源的应用转移到 Layer2 的桥梁。但由于零知识证明本身过于复杂,安全性仍然需要大量尝试验证。
zkSync 是目前最成熟的 ZK Rollup 开放网络,普通交易之外,zkSync 正在努力支持更加复杂的 DeFi 应用在其上运行。未来,zkSync 将在 Layer2 引入代币治理以更好地实现去中心化,Matter Labs 还计划推出 zk Porter 将网络分片,使得不同逻辑类型的应用的智能合约在不同分片上得到更好的支持。成熟的 Layer2 开放网络与一条独立的区块链看起来愈发相似。
Optimistic Rollup 是欺诈证明与去掉零知识证明的 Rollup 的结合,由 Optimism (原 Plasma Group)最先开始研发。OVM (Optimistic Virtual Machine)是 Optimism 推出的一个搭建在 Layer2 上的与 EVM 完全兼容的执行环境。它允许用户在 Layer2 的 Rollup 网络中进行以太坊主链上能做的所有操作,包括编写 Solidity 智能合约、通过 Web3 API 交互等。将 Dapp 移植到 OVM 上除去部署合约之外不需要进行额外操作。Optimism 已与 Synthetix 展开合作,在 OVM 上部署和测试整个 Synthetix 应用。下列初步测试数据显示了 OVM 对于主链 DeFi 应用性能显著的提升。
除 Optimism 外,Fuel Labs 开发的 Fuel 是另一个值得注意的 Optimistic Rollup 扩容网络。Fuel 的侧链采用了 UTXO 和 HTLC 等设计,支持任意两种 ERC-20 Token 的无抵押(Non-custodial)互换。
Optimistic Rollup 不需要零知识证明,可以在 Layer2 上直接运行 EVM 以方便地支持 Layer1 上的各种逻辑的智能合约,Dapp 的迁移成本小。作为代价,退出 Layer2 仍然需要等待一周左右的质疑时间,不过在具体项目中仍然可以通过建立资金池等不那么优雅的方式消除小额提款的延迟,为用户提供便利。
在象限的左下角,Validium 即是链下数据可用性和有效性证明的组合,由 Starkware 在去中心化交易所引擎产品 StarkEx 中集成。实际上,StarkEx 设计了灵活的数据存储结构(解决方案被称为 Volition),用户每次交易时都可以自由地选择数据存储位置,并且由于 DAC 的支持,StarkEx 中的数据无论在链上链下都可以获得数据可用性支持,用户可以在无许可的情况下自由退出 Layer2。
我们考量了上述 Layer2 扩容方案的一些关键指标,通过下面的表格对他们做横向比较:
三种主要的 Layer2 扩容方案均可充分满足应用对 TPS 和交易手续费的要求。对智能合约兼容度最好的是 Optimistic Rollup,在 OVM 上移植 Dapp 不需要额外修改,并且 Synthetix 已经被部署在其上测试;ZK Rollup 其次,尽管 Zinc 已经开始测试,但由零知识证明引入复杂性风险与开发门槛仍然使许多开发者难以尝试;Validium 仍然是一个集成在 StarkEx 交易引擎中的方案,尚无拓展为开放网络的计划。ZK Rollup 对交易密集型应用支持最好,数据可用性带来的快速退出相较欺诈证明类方案以周计的退出期限相比优势十分明显。
可组合性限制与功能分区
Layer2 扩容方案可以轻易地将 TPS 与交易成本优化数十倍,其代价是可组合性的丢失。Layer2 网络类似法币体系中的大型购物商城,而 Layer2 网络中的 DeFi 项目就像商场中的一家商铺。用户需要购物则必须办卡(Layer2 开户),充入资金,消费,最后将余额取出。用户无法使用一家商场中的购物卡到另一家商场的商铺中消费,可组合性难题成为商场之间无法打破的隔阂。
在某些应用场景中,可组合性是去中心化应用领先于中心化应用的主导因素之一。以 DeFi 应用为例,去中心化交易所可以轻松地进行流动性聚合并形成聚集效应,将整个生态内的流动性越做越大,相比中心化交易所激烈的流动性内卷化竞争显然更加高效。
而在今年 DEX 交易量大涨的热潮中,Loopring、IDEX 等应用 Layer2 扩容技术的去中心化交易所交易量增长并没有分享到头部 AMM 交易所交易量增长的红利。尽管 Loopring 积极地设计了中间人(Mediator)机制使得用户无法感受到资产在 Layer2 账户中与 Layer1 钱包交互中繁琐的步骤,但仍然使 1inch 等去中心化交易所聚合器难以集成。
D1 Ventures 认为可组合性壁垒将导致不同类型的 DeFi 应用选择不同种类的 Layer2 扩容方案而形成不同的分区,例如去中心化交易所选择 ZK Rollup 网络,智能合约执行任务较大的借贷类、合成资产类项目向 Optimistic Rollup 网络聚集,两类项目分别在两种网络内部实现可组合性。DeFi 中借贷和合成资产类应用除了智能合约外还需要大量的资产,资产沉淀将会成为各个侧链的先发优势和竞争壁垒。
除此之外,我们也注意到许多独立的区块链正在与以太坊 Layer2 侧链殊途同归,Ava Labs 推出的 Athereum 和与以太坊社区关系紧密的 NEAR 都提供了对以太坊良好的兼容性,并致力于建立 Ether 与 ERC-20 资产跨链桥。在以 DeFi 为代表的去中心化应用快速发展的趋势中,不同类型的应用将会在不同的取向主导下重新划分阵营。