区块链的可扩展性一直是一个被激烈讨论的话题。几乎每个区块链网络都把高的每秒交易量(TPS)作为一个卖点。然而,TPS 并不是比较区块链网络的有效指标 — 这使得评估其相对性能成为一种挑战。此外,大的 TPS 数字通常是有代价的 — 这就提出了一个问题:这些网络实际上是在扩展,还是只是增加了他们的吞吐量?
因此,让我们研究一下如何定义可扩展性,为实现可扩展性要做哪些权衡,以及为什么 Validity Rollups 是终极可扩展性解决方案。
不是所有的交易都消耗同等 gas
首先,我们需要确定我们的论断,即简单方便的 TPS 指标并不是可扩展性的准确衡量标准。
为了补偿执行交易的节点(并阻止用户用不必要的计算来扰乱网络),区块链收取与计算负担成比例的费用。在以太坊中,计算负担的复杂性是以 gas 来衡量的。因为 gas 是一个非常方便的交易复杂性衡量标准,所以这个术语在本文中也将用于非以太坊区块链。
交易的复杂程度有很大不同,因此,它们消耗的 gas 也有很大不同。比特币是无信任的点对点交易的先驱,只支持基本的比特币脚本。这些从地址到地址的简单转移使用的 gas 很少。相比之下,像以太坊或 Solana 这样的智能合约链支持虚拟机和图灵完备的编程语言,可以进行更复杂的交易。因此,像 Uniswap 这样的 dApps 需要更多的 gas。
这就是为什么比较不同区块链的 TPS 是没有意义的。我们应该比较的是计算能力或吞吐量。
所有区块链都有一个(可变的)区块大小和区块时间,决定了每个区块可以处理多少计算单位和可以多快的速度增加一个新区块。这两个变量共同决定了一个区块链的吞吐量。
什么制约了可扩展性?
区块链努力成为最大限度的去中心化、对外开放的和具有包容性的网络。为了实现这一目标,必须保持两个基本属性。
● 硬件要求
区块链网络的去中心化是由网络中最弱的节点验证区块链和保持其状态的能力决定的。因此,运行一个节点的成本(硬件、带宽和存储)应该保持在尽可能低的水平,以使尽可能多的个人成为去信任网络中的无需许可的参与者。
● 状态增长
状态增长指的是区块链增长的速度。区块链允许在单位时间内发生的吞吐量越大,区块链的增长速度就越快。全节点存储网络的历史,且必须能够验证网络的状态。以太坊的状态是使用默克尔树等高效结构来存储和引用的。随着状态的增长,新的叶子和分支被添加到其中,这使得执行某些行动变得越来越复杂和费时。随着链的增长,它使节点执行的最坏情况更糟,这导致验证新区块的时间越来越长。随着时间的推移,这也增加了一个全节点同步的总时间。
增加吞吐量的不利影响
● 节点
运行一个节点的最低要求和节点数量情况。
Bitcoin¹: 350GB 硬盘空间,5 Mbit/s 连接,1GB 内存,CPU>1 Ghz。节点数量:~10,000
以太坊²。500GB 以上的 SSD 磁盘空间,25Mbit/s 的连接,4-8GB 内存,CPU 2-4核。节点的数量:~6,000
Solana³。1.5TB 以上的 SSD 磁盘空间,300 Mbit/s 的连接,128GB 内存,CPU 12个以上的核心。节点数量:~1,200
请注意,区块链的吞吐量对节点的 CPU、带宽和存储要求越大,网络上的节点就越少,这会导致更弱的去中心化程度和更差的网络包容性。
● 同步一个完整节点时间
当第一次运行一个节点时,它必须与所有现有的节点同步,下载并验证网络的状态,从创世块到链的顶端。这个过程应该是尽可能的快速和高效,以允许任何人作为协议的无需许可的参与者。
以 Jameson Lopp 的2020年比特币节点和2021年节点同步测试为指标,表1比较了在普通消费级 PC 上同步一个比特币、以太坊、Solana 的完整节点所需的时间。
表1. 区块链吞吐量和节点同步比较
表1显示,吞吐量的增加导致同步时间的延长,因为越来越多的数据需要被处理和存储。
虽然不断对节点软件进行改进,以减轻区块链不断增长的挑战(降低磁盘占用,加快的同步速度,更强的崩溃恢复,某些组件的模块化,等等),但节点显然仍然无法跟上吞吐量的增长。
应如何定义可扩展性?
可扩展性是区块链领域中最被误用的术语。虽然增加吞吐量是可取的,但它只是难题的一部分。
可扩展性意思是在相同的硬件上能够执行有更多的交易。
出于这个原因,可扩展性可以分为两类:
● 排序器的可扩展性
排序器描述的是网络中交易的排序和处理行为。如前所述,任何区块链都可以通过提高区块大小和缩短区块时间来增加其吞吐量,直到这种方法对网络的去中心化程度造成较大的负面影响。但是,只是调整这些简单的参数并不能提供所需的改进。以太坊的 EVM 理论上可以处理高达约2,000 TPS,这不足以满足长期的区块空间需求。为了扩展排序,Solana 做了一些令人印象深刻的创新:利用可并行的执行环境和巧妙的共识机制,使吞吐量的效率大大提高。但是这些改进不足以满足对吞吐量的需求,也不具备排序器的可扩展性。随着 Solana 增加其吞吐量,运行一个节点和处理交易的硬件成本也在增加。
● 验证可扩展性
验证的可扩展性指在不给节点带来不断增加的硬件成本负担的情况下增加吞吐量的方法。具体来说,它指的是像 Validity proofs (有效性证明)这样的密码学创新。它们是 Validity Rollups 能够可持续地扩展区块链的原因。
什么是 Validity Rollups ?
Validity Rollups(也被称为 ZK-Rollups)将计算和状态存储转移到链外,但在链上保留少量的特定数据。底层区块链上的一个智能合约维护着 Rollup 的状态根。在 Rollup 上,一批高度压缩的交易连同当前的状态根,被发送到一个链外证明人(Prover)。Prover 计算交易,生成交易结果的和新状态根的有效性证明,并将其发送给链上的验证者(Verifier)。验证人对有效性证明进行验证,然后维护 Rollup 状态的智能合约将其更新为验证者提供的新状态。
在相同的硬件要求下,Validity Rollups 是如何扩展?
即使证明人确实需要高端硬件,它们也不会影响区块链的去中心化;因为交易的有效性是由数学上可验证的证明来保证的。
重要的是验证证明的要求。由于所涉及的数据经过了高度压缩并通过计算进行了大量的抽象,它对底层区块链节点的影响是很小。
验证器(以太坊节点)不需要高端硬件,批次的大小也不会增加硬件要求。只有状态转换和少量的调用数据(calldata)需要由节点处理和存储。这允许所有以太坊节点使用他们现有的硬件来进行有效性验证。
交易越多,价格越低。
在传统的区块链中,交易越多,对每个人来说就越昂贵,因为区块空间被填满了。用户需要在收费市场上出价高于对方,才能使他们的交易包含在区块内。
这个情况在 Validity Rollup 中是相反的。在以太坊上验证一个批交易有一定的成本。随着一个批中的交易数量的增加,验证该批交易的成本以对数级的速度增长。但在一个批中添加更多的交易会带来更便宜的交易费用,即使这个批的验证成本增加。因为这些成本由一个批内的所有交易摊销,所以 Validity Rollup 希望在一个批内有尽可能多的交易。当一个批的大小增长到无限大时,每笔交易的摊销费用会收敛到零,也就是说,Validity Rollup 中包含的交易越多,对每个用户说需要支付的交易费就越便宜。
dYdX,一个由 Validity Rollup 驱动的 dApp,经常看到超过12,000个交易的批。将同样的交易两在主网和在 Validity Rollup 上的消耗 gas 量进行比较,可以看见可扩展性的提高。
在以太坊主网上结算一笔 dYdX 交易:200,000 gas
在 StarkEx 上结算一笔 dYdX 交易:<500 gas
另一种方式来看待它则发现 Validity Rollups 的主要成本与同一个批的用户数量成线性比例。
为什么 Optimistic Rollup(OP)的可扩展性不如人们想象的那么好?
理论上,OP 拥有与 Validity Rollups 几乎相同的可扩展性优势。但有一个重要的区别。OP 针对平均情况进行优化,而 Validity Rollups 针对最坏情况进行优化。因为区块链系统是在极端对抗的条件下运行的,针对最坏情况进行优化是实现安全的唯一途径。
OP 拥有的最坏情况是用户的交易不会被欺诈检查器检查到。因此,为了质疑欺诈,用户必须同步一个以太坊全节点和一个 L2 全节点,同时自己计算可疑的交易。
在 Validity Rollups 中,即使在最坏的情况下,用户也只需要同步一个以太坊全节点来验证有效性证明,省去了自己的计算负担。
与 Validity Rollups 相比,OP 的成本与交易数量呈线性关系,而不是与用户数量呈线性关系,这使得 OP 更加昂贵。
无需许可的访问 Rollup 状态
为了保证交易的有效性,用户只需要运行一个以太坊节点。然而,用户和开发人员可能希望出于各种目的查看并运行 Rollup 的状态和执行。一个索引的(indexing) L2 节点完美地满足了这个需求。它不仅可以让用户看到网络中的交易,而且也是生态系统基础设施运作所必需的一个关键基础设施。像The Graph、Alchemy、Infura 这样的索引器;像 Chainlink 这样的 Oracle 网络,以及区块浏览者,所有这些都由无需许可的索引 L2 节点完全支持。
结论
许多解决区块链可扩展性的方法错误地集中在增加吞吐量上。但是,这忽略了吞吐量对节点的影响:处理区块和存储网络历史的硬件要求不断增加,以及这如何抑制了网络的去中心化。
随着有效性证明密码学的出现,区块链可以实现真正的可扩展性,而不给节点带来不断增加的成本负担,并允许广泛的去中心化。同样的硬件执行具强大和更复杂计算的交易现在是可能的,扭转了收费市场的困境—— Validity Rollup 上的事务越多,它就越便宜!
About zCloak Network
zCloak Network 是基于波卡生态的隐私计算服务平台,使用 zk-STARK 虚拟机为通用计算进行零知识证明的生成与验证。基于独创的自主权数据和自证明计算技术,可以让用户在无需对外发送数据的情况下,实现对数据的分析和计算。通过波卡跨链消息传递机制,可以为波卡生态内的其它平行链以及其它公链提供数据隐私保护支持。项目会采用“零知识证明即服务”的商业模式,打造一站式的多链隐私计算基础设施。