浅析 ETH 的扩容方案
前 言
2017 年加密猫与 ICO 大火,堵塞了整个以太坊网络,造成 gas 费的大幅飙升,扩容就是一个一直在讨论且亟待解决的问题。为此,各位科学家对以太网“扩容”的研究和努力也从没有停止过。
所以接下来将简单的介绍下以太坊扩容方案。
扩 容 方 案
以太坊的扩容方向是提高交易速度和交易吞吐量。我们将以太坊的扩容分为两层:Layer1 和 Layer2。
第一层,俗称 Layer1
指的是对核心以太坊协议进行升级,使区块链本身拥有更高的事务处理容量 。比如让区块变得“更大”,但“大区块”会让区块链的验证过程变得更为困难,而且可能会使节点更加中心化。为了避免这样的风险,开发者可以提高客户端软件的效率。更加具有可持续性的扩容方式是,使用分片等技术,让构建和验证区块链的工作分摊到许多不同的节点上,其主要项目是 ETH2.0。
第二层,俗称 Layer2
指的是构建在基础以太坊协议之上的技术,能够优化可扩展的同时不妨碍网络的安全性。也包括链下技术,如侧链,通过不同的安全性权衡以实现更好的可扩展性。用户不需要直接把所有的活动都直接放在区块链主链上,而是在主链外的“二层”协议中执行大部分活动,并生成一个证明,证明链外发生的这一切活动都遵循规则。
主链上部署一个智能合约,它只有两个任务:
1. 处理存取款,2. 对上述证明进行验证。
由于DeFi 的高速增长,较大的交易吞吐量已经导致交易确认时间长、交易拥堵等众多问题,严重影响到ETH的高速运行;外加BSC(币安智能链)的上线,众多原以太坊的DeFi项目向BSC迁移,让以太坊社区感受到了巨大的威胁,所以能快速解决扩容问题成为了ETH能否继续生存下去的的关键。
不过幸运的是ETH还有 layer2 扩容方案。我们将 Layer2的扩容方案,简单做一个分类:
layer2 扩容方案
接下来进行详细介绍他们的相关运作机理。
运 作 机 理
① 状态通道
状态通道是支付通道的一般形式,将相同的想法应用于通常在区块链上执行的任何类型的状态更改操作。在不要求任何额外信任的情况下将这些交互从链条中移开,可以显著提高成本和速度。
状态通道技术很强大:广义的状态通道可以支持双向支付、实现智能合约, 并具有可组合性。但是通道的作用是有限制的:不能向还没有加入通道的用户在链下发送资金;不能用于没有明确逻辑所有者的对象(比如 Uniswap 智能合约)。此外,如果使用通道处理的事务比小额支付场景更复杂,需要锁定大量的资金在通道中。
② Plasma
要将资产从主链存入 Plasma 链,用户需要在主链将资产发送至管理 Plasma 链的智能合约。Plasma 链会给该资产分配一个新的唯一ID。每条 Plasma 链都有一个操作者。每隔一段时间,操作者就会生成一个“批处理”(batch),包含这段时间内所收到的所有 Plasma 链的交易。操作者生成一棵 Merkle 树, 在索引为 X 的叶子节点处,如果资产 ID 为 X 的资产在这一批次中发生了交易,则叶子节点上存有对应交易,否则该叶子节点为零。操作者将这棵树的 Merkle 根发布到主链上,还需要将每个索引 X 的 Merkle 分支发送给该资产的当前所有者。如果需要将资产从 Plasma 链提取至主链上,用户需要给主链的智能合约发送该资产最近一次交易对应的 Merkle 分支。智能合约随即开始了一个挑战期(例如 7 天),在此期间,任何人都可以尝试使用其他 Merkle 分支来证明:
(i)用户在提取资产时并不拥有该资产,或者
(ii)用户在某个时间点将资产发送给了其他人,从而使退出申请无效。如果在 7 天内没有人证明退出是欺诈性的,用户便可以成功取回资产。
Plasma 提供了比状态通道更强的功能:你可以将资产发送给从未加入二层的用户,锁定的资金也低得多。但这是有代价的:状态通道在“正常运行” 时不需要将任何数据存入主链,但 Plasma 要求每条链每隔一段时间在主链发布一次哈希值。此外,Plasma 链中的交易没有即时性,即必须等待一批交易(也可 称为 Plasma 区块)的证据(即那个 Merkle 根值)发到主链上。
此外,Plasma 和状态通道都有一个重要缺陷:其安全模型所对应的博弈论依赖于这样的想法:两个系统所控制的资产在逻辑层面都要有 "所有者"。只要资产所有者在乎自己的资产,那么当涉及该资产的状态变更 “无效”时,资产所有者就会想办法出示变更 “无效”的证明。这对一些应用来说无关紧要,但对不少其他应用来说这是个问题,也不能很好地与 Plasma 兼容。
这意味着,在现实中部署 plasma 或状态通道时,都需要推演“特定应用”的潜在逻辑设计定制化方案,不太可能做出一个能完整模拟以太坊运行环境(即 “EVM”)的 plasma 或状态通道系统。
接下来让我们看看 rollup 是如何解决这个问题的。
③ Rollup
它则与前两者不同,是一种具有“混合性质”的二层方案。Rollup 将计算(和完整的状态存储)转移到链下,但在链上保存了每笔交易的部分数据信息。为了提高效率,Rollup 使用了一系列的压缩技巧,并尽可能地用计算替代数据。其结果是,这个系统的可扩展性仍然受限于底层区块链的数据带宽,但在此基础上实现的扩容倍数非常可观:在以太坊主链执行一笔 ERC-20 代币的转账大约消耗 45000 gas,但在 Rollup 中,每笔交易仅需要在主链上存储 16 字节数据,消耗的 gas 小于 300。
数据存储在主链是 Rollup 的关键因素。将数据存储在主链并进行共识,使得任何人可以在本地处理 Rollup 中的所有操作,包括欺诈检测,发起提款,生成批处理等。因为不存在数据可得性问题,所以运营者如果作恶或者离线所造成的损失相对更少,也在谁有权发布批处理这个问题上提供了更多的可能性,同时也使 Rollup 更易于理解。
更为重要的是,不存在数据可得性问题意味着,资产无需和所有者有明确的逻辑映射关系。相比其他二层扩容方案,这是以太坊社区对 Rollup 感到更加激动的重要因素:Rollup 是具有通用性的,比如可以在 Rollup 中运行 EVM,从而使现有的以太坊应用可以在不写新代码的情况下迁移至 Rollup。
Rollup 的三种类型包括:
① Optimistic Rollup,使用欺诈证明解决上述问题:主链的 Rollup 合约记录了该 Rollup 内部状态根变更的完整记录,以及每个(触发状态根变更的)批处理的哈希值。如果有人发现某个批处理对应的新状态根是错误的,他们可以在主链上发布一个证明,证明该批处理生成的新状态根是错误的。合约校验该证明, 如果校验通过则对该批处理之后的所有批处理交易全部回滚。
② ZK Rollup, 使用有效性证明解决上述问题: 每个批处理中包含一个称为 ZK-SNARK 的密码学证明(例如使用 PLONK 协议, 证明新状态可以由旧状态 经此批处理操作后转换而来。无论批处理的计算量多大,都可以在主链上高效对证明进行验证。
③ Arbitrum Rollup 跟 Optimistic Rollup 在框架思路上近似,在结果验证方面, 都属于欺诈证明范畴。Arbitrum 和 Optimistic 之间的主要不同在于解决分歧的方式。当有验证者向 L1 提交 rollup 区块,有人认为不正确,这个时候怎么办?
Arbitrum 采用的是多轮互动协议来解决争议,将规模大的争议细分成小的争议, 直到找到最关键的那一步,然后再通过以太坊合约来确定它是否正确。通过拆分争议,Arbitrum 试图实现更高效的解决方案。
短期内 Optimisitc Rollup 、Arbitrum 很可能在实现具有通用性的 EVM 中胜出(Arbitrum 现在已经被 uniswap 和 sushiswap 使用),ZK Rollup 很可能在简单的支付、转账和其他特定应用中胜出。但从中长期来看,随着 ZK-SNARK 技术的改进,ZK Rollup 将在所有应用场景中胜出。
从整体上看,ZK Rollups 的安全性更高,且实现最终性更快,这意味着其提取时间更快,它更适合转账等场景。而 Optimistic Rollup 和 Arbitrum 的方案都有挑战 期,需要挑战期结束,才能最终确认,才能提币,这是它的不足。不过,ZK Ro llups 要生成加密有效性证明,其计算成本很高,很昂贵,且落地成熟还需要一定的时间。
Scan QR code with WeChat