跳转到内容

以太坊主要扩容方案及代表项目

以太坊主要扩容方案及代表项目

原文标题:《以太坊扩容分析》 撰文:孙琪璇 Simon

一直以来,以太坊公有链的核心限制是每一笔交易都要由网络中的每一个节点进行处理,在以太坊区块链上进行的每一项操作(付款,新的 ECR20 合约部署、创建 NFT 等)都必须由网络中的每一个节点并行处理,这也就意味着以太坊整个网络的吞吐量(tps)不能高于以太坊单个节点的吞吐量。以太坊可以选择提高节点的区块工作量来实现扩容,但这是以去中心化为代价的,因为节点做的工作多了,意味着算力小的计算机(就像消费者设备)可能会退出网络,挖矿在算力大的节点上就变得更加中心化。在 2017 年的时候以太坊就因为 ICO 热潮就已经导致以太坊开始变的拥堵,主链每秒所能处理的交易量只有 15 笔(tps),从那时起,陆续有开发团队提出相应的解决方案,只是随后而至的熊市降低了人们的交易热情,这类方案也就淡出了投资者的视野。

直到 2020 年 5 月份,随着流动性挖矿及 Uniswap 的火爆,用户发现交易的 gas price 成本一路飙升到 500Gwei(约两三百人民币),需要漫长的交易确认时间,未确定交易数达 14 万余笔,以太坊转账变的极其拥堵和昂贵,这严重阻碍了以太坊生态的发展以及用户的增长,因此扩容问题再次吸引着开发者、项目方和投资人的关注。

本文将梳理分析现今已有的各扩容方案的演进情况、进展和采用该方案的代表项目现状,以及未来可能的方向。

扩容方案分类

在以太坊主网上,所有的计算过程和数据存储都在主链进行,每个节点都需要处理所有交易,交易数据存在区块中,全节点执行所有计算过程,开发者已经提出了很多在解决协议层吞吐量问题的方案,这些解决方案基本可以分为两类:

  1. 一类是将所有计算委托给一小组强大的节点来完成,可以根据 layer2 如何解决这两个扩展相关的瓶颈问题(计算 & 数据存储)来对各种扩容方案分类。
  2. 另一类是让网络中的每个节点都只需处理所有工作中的一部分,也就是 layer1 层的扩容方案。

目前主要有六种扩容计算方案,它们分别是分片、侧链、状态通道、Plasma、Rollup、Validium,其中我们把 ZK Rollup 和 Optimistic Rollup 统称为 Rollup 技术扩容方案。

下面我们分析一下各个扩容方案。

分片(Sharding)方案

分片属于 layer1 扩容,是指区块链不同的节点子集处理区块链的不同部分,通过分割数据以减少区块链节点必须存储和处理的数量。內部运行很多条链,并将一条链称为一个「片区」。每个片区都会拥有独立的一组验证者,即通过 PoS 机制来验证交易和生成区块的网络参与者。通过随机性来选择每一个分片的验证者,而为了实现随机性和验证者分配的计算,所有现有的设计都包含了一条信标链,负责执行维护整个网络所需的操作:除了生成随机数和将验证者分配到各个片区,还包括接收分片的信息更新(并创建快照)、处理权益证明(PoS)系统中验证者质押的押金及其罚没,并(在支持该功能之后)不断重划片区(rebalancing shards)。

同时,整个网络的处理能力受到信标链节点的计算能力限制,因此分片的数量自然是有上限的。但分片网络结构的节点性能提升会产生倍乘效应,比如所有节点(包括信标链中的节点)处理交易的速度都变成 4 倍,那每个分片能够处理的交易量将是之前的 4 倍,且信标链能够维持的分片数量也将是之前的 4 倍,整个系统的吞吐量将变成 4x4=16 倍。

分片模式一般有交易分片和**状态分片(State Sharding)**两种:

  • 交易分片只是对交易进行分片分配
  • 状态分片是对存储、交易处理和网络都进行了分片分配

代表项目 Harmony

Harmony 于去年 6 月份上线主网,是一个快速安全的区块链,核心创新在于状态分片,快速共识算法以及高效 P2P 网络。Harmony 的分片技术结合了全新的 EPoS 抵押机制以及基于 VDF 的随机数算法,兼顾去中心化和安全性。目前主网有 159 个节点参与竞选,其中 82 个大众节点被选中,能够实现 5 秒即时确认性,有四个分片实施。

其他分片方案项目:Zilliqa 是第一个把分⽚做出来的公链,但它仅仅只能对交易进行分片,已经过时了。NEAR Protocol 使用了独家研发的分片技术——「夜影」(Nightshade),可以将网络分割成多个分片,平行计算并运行。

侧链方案

侧链协议本质上是一种跨区块链解决方案。通过这种解决方案,可以实现数字资产从第一个区块链到第二个区块链的转移,又可以在稍后的时间点从第二个区块链安全返回到第一个区块链。

侧链是独立的网络,通常具有唯一的共识层,通过双向挂钩连接到一个基础层协议。由于没有第一层设计的负担,侧链可以支持超出其基础层能力的某些特性,包括但不限于可扩展性和互操作性,同时不依赖于第一层的存储。

它的缺点是安全性问题,因为无法获得主链的安全性。

代表项目 xDai Stable

xDai 是以太坊侧链,运用 POA Network 突出的跨链桥接技术(Token Bridge Technology),桥接 Dai 稳定币作为通证,具有「可扩展、使用方便」的优点,由原 POA 团队负责开发。

xDai 应用为日常用户提供快速交易的平台,且只收取极低的费用。由于 xDai 与以太坊兼容,因此数据和资产可以无缝传输到以太坊主网。用户在进行支付行为时,只需要消耗一种代币,而不需要像过去一样使用以太坊作为燃料费用,转账费低廉且转账速度远远高于以太坊。

状态通道(State Channel)方案

状态通道技术,受启发于比特币的闪电网络。状态通道是固定一组参与者(通常是两名参与者)之间的协议,用以实现安全的链下交易,其中支付通道专门用来支付。支付通道协议具体情况是两名参与者各自通过链上交易在链上锁定保证金,一旦锁定完成,参与者双方即可互相发送形式为轮次、金额、签名的状态更新来实现转账,无需与主链进行交互。

状态通道的优点:

  • 交互延迟在毫秒级别,是唯一能够逼近当今互联网用户体验的区块链扩容技术
  • 交易手续费极低,从根本上比所有其他 layer2 技术的交易手续费低
  • 水平扩展性强,加节点就能增加总系统容量,TPS 无上限

状态通道的缺点:

  • 只能在两个参与者之间开设
  • 参与者需要保持在线

代表项目 Celer Network

Celer Network 是第一个致力于以状态通道技术为基石构建匹配互联网规模的区块链应用入口平台,让所有人都能够在该平台上便捷快速地开发、运行与使用高性能的分布式区块链应用。它并不是一个独立的区块链,而是一个可以广泛运行在现有和未来区块链之上的网络系统。

Plasma 方案

Plasma 由 Vitalik Buterin 和 Joseph Poon 于 2017 年提出,也是以太坊扩容技术中一种重要的 Layer2 方案。与状态通道相比,Plasma 能够运行智能合约。

Plasma 遵循着递归性的链接的区块链(Plasma 链)来执行交易,并保证这些交易都能在主链上争议,将主链作为最终所有者的财产仲裁员。每条 Plasma 链都有一个自己的状态,由哈希存储在主链上,有一个运营者,对交易排序,同时运行一个独立的共识机制(即 PoW/PoS),其将以比主链更快的速度处理交易,在每个 Plasma 区块完成时,将少量数据提交到主链。

Plasma 的主要问题: 面临「交易数据可用性」问题,需要退出时有较长的挑战期(7-14天)。

代表项目 OMG Network

OMG Network(前称 OmiseGo)成立于 2017 年,是以太坊之上的非托管、第 2 层去中心化交易所(DEX)和支付网络。2020 年 6 月推出主网 beta 版,可以实现 4000 TPS 的处理速度。

Rollup 方案

Rollup 方案可以被认为一种压缩技术,多笔交易可以压缩在一起(几千笔交易可以被打包到一个 Rollup 区块中),既能减少交易数据规模,又能降低交易验证负担,因此使得以太坊区块链能处理更多交易,tps 可达到 3000 左右。它是将所有 layer2 上的交易数据,也就是 Rollup 区块的快照发送到主链上某个智能合约内,用主链上的单个合约来保管所有的资金,而 Rollup 则通过在主链上为每一笔交易公开一些数据,让任何人都能通过观察区块链上的 calldata(交易输入数据)来获得 layer2 的所有数据。

目前主要分为 ZK RollupOptimistic Rollup 两种 Rollup 技术分类。

ZK Rollup

ZK Rollup 是靠着在主链完成零知识证明,链上无需包含签名数据,因为零知识证明就足以证明交易的有效与否,交易有效性就立刻确认,保证无效的状态绝不会发生,也即数据可用性放在链上,所以 ZK Rollups 对数据存储方面也带来了一定程度上的扩展性提升。

ZK Rollup 的缺点:

  • 验证链路的构造没有一个通用的解决方案,目前没有很好的办法做到很广义的虚拟机逻辑
  • 程序正确性的验证相对复杂,要对多项式 curcuit 做验证
  • 二层打包节点负担重,成本高,计算零知识证明所需时间长

代表项目 Loopring(路印协议)

路印协议 3.0 的核心设计目标包括两个:高安全性和高性能。协议设计的很多方面,都是围绕着在各种可能的情况下,为用户提现自己充值的资产提供各种保障。为了提高吞吐量,并降低清结算成本,将几乎全部的计算都迁移到区块链外完成。中继批量处理几十到几万个充值提现和交易清结算等请求,并将批量更新后的树根上链。

其他 ZK Rollup 项目:zkSync(Matter Labs 开发)在主网上线后,旨在将以太坊上的吞吐量提高到每秒几千笔交易,同时又能确保资金像存储在底层账户那样安全,并维持较高水平的抗审查性。

Optimistic Rollup

Optimistic Rollup 的理念是由 John Adler 首先构想出来的,它保留了 calldata,可以让主链获得所有 layer2 的数据,但那些刷新 Layer-2 状态的交易不会在链上被验证,只让主链存储一系列的历史状态根,添加了一个新的状态的一段时间(例如 1 周)后才将新状态最终敲定,也就是数据可用性放在链下。采用错误性证明(跟 Plasma 方案一样),对提交无效状态的执行者进行惩罚。

其链下 OVM 虚拟机可以支持任意智能合约逻辑的实现,与以太坊 EVM 虚拟机搭配使用,开发者就可以用 Solidity 来写码,实现 dapp 和智能合约之间的无缝互操作性。

Optimistic Rollup 的缺点: 安全问题,只有使用 1~2 周的错误性证明挑战期才足够安全。在挑战期过去以前,没有交易能被认为是确定的。

代表项目 IDEX

IDEX 是一个基于以太坊的分散式智能合约交易平台,提供实时交易,即时订单放置和处理,免费取消订单,实时订单簿更新等服务。于 2020 年 10 月 20 日发布了 2.0 版本,其 Rollup 链支持登记订单式去中心化交易功能。

其他 Optimistic Rollup 项目:Optimism 是由 Plasma Group 的前研究人员在 2019 年成立的一家公司,专注于实施以太坊扩容解决方案 Optimistic Rollup,Synthetix、Uniswap、Chainlink 成为他们的早期测试者。

Validium 方案

Validium 是由零知识证明研发机构 StarkWare 主导开发的,选择将 layer2 的交易数据放在链下,因而比 rollup 方案有着更高的扩展性。验证计算方面,Validium 不像 Plasma 依托诈欺证明,而是采用零知识证明。

由于交易数据放在链下,以太坊主网无法恢复它的 Merkle tree(默克尔树),所以它并不具备以太坊主网的安全性。比如数据扣留攻击问题,(恶意)执行者修改自己所控制的账户的状态是没有问题的,然后积压关于这些交易的数据,这会导致某些用户想退出资金时,无法创建默克尔证明来证明他们对账户的所有权。

代表项目 DeversiFi

DeversiFi 是基于以太坊智能合约的去中心化交易所,由 StarkEx 交易引擎支持。DeversiFi 2.0 版本整合了 Validium 技术,每秒交易处理量可达 9000+。为了解决 Validium 的数据扣留问题,StarkEx 系统中引入了数据可用性委员会,8 位委员负责对数据签名,并保证数据始终可用。

扩容技术对比

方案TPS提款延迟安全性EVM 兼容适用场景
状态通道无限即时有限点对点支付
侧链7000+即时较低完全通用
Plasma4000+7-14天有限资产转账
Optimistic Rollup2000+7天完全通用 DApp
ZK Rollup3000+即时最高较好通用 DApp
Validium9000+即时较高较好高频交易

未来发展方向

相比于 Plasma 和 ZK Rollup,Optimistic Rollup 做了一些权衡,所以带来的扩展性提升幅度最小,但 Optimistic Rollup 不依赖于什么过于前沿的技术或悬而未决的问题,实际推广中 Optimistic Rollup 更好落地。

而 ZK Rollup 可以解决 Optimistic Rollup 上的几个根本问题:

  • 消除了令人厌恶的尾部风险(通过复杂但可行的攻击方法从 Optimistic Rollup 中盗取资金)
  • 将提取资金的时间从 1-2 周缩减到几分钟
  • 支持快速的交易确认和退出,而且体量几无上限
  • 并且默认保护隐私

由于 Validium 仅具备链下数据可用性,所以 Validium 比 ZK Rollup 的吞吐量会高得多,适合传统的高频交易。

各扩容技术也会互补,比如在 Optimistic Rollup 上面可以增加接入状态通道,或者在不同的 Rollup 之间,用状态通道进行跨链互通。

Vitalik 在以太坊社区发表了一篇「探讨以 Rollup 为中心的以太坊发展路线」的文章,基本上是在主张,以太坊可以利用分片链作为数据可用性层并使用 Rollup 作为执行环境来实现扩容,这会使以太坊生态社区更加积极的拥抱 Rollup 扩容方案。

总结

不同的扩容技术有它不同的优缺点,导致适应不同的应用场景,未来不同的扩容技术之间也会是相互合作关系,某一场景下同时使用多种扩容技术。

虽然扩容生态已经很丰富了,但这些扩容方案目前也只是被少数项目所使用,原因有两个:

  1. 对大多数开发者们来说,他们希望在不改变原有代码的情况下将应用迁移至 Layer2,因为对代码进行任何改动会涉及到可观的审计及维护费用
  2. 对用户来说,选择使用以太坊主链,还是 Layer2 应用是一件非常棘手的问题,将资产在一层与二层间转移对于用户来说是极具挑战性的

但这种状况会随着时间推移,技术难点逐一被解决,各个 layer2 项目方开发者迁移体验更完善,开发者迁移成本更低,最终那些能够得到众多开发者、用户、项目方支持的扩容技术方案,将建立一定的生态并经受住了时间的检验,脱颖而出。

参考资料:ethfans、以太坊中文网、链闻、涉及项目公众号。