一文总览过去五年中以太坊的可扩展性解决方案

快链头条
2022-03-10 09:37
新闻
26139

“ 区块链无法扩展 ” 你可能已经听过一百万次了。几年前,这感觉像是对该行业的真正威胁。如果我们甚至不能每秒处理 15 笔交易,我们如何为没有银行账户的人提供银行服务?

但大问题推动了创新,区块链的可扩展性是一个大问题。它很快引起了工程师和科学家的注意,直至今天,我们对区块链可以扩展越来越有信心。事实上,当前的大多数争论都关注哪种可扩展性解决方案将获胜。

这就是为什么在这篇文章中,我将分解一些在过去五年中探索过的以太坊可扩展性解决方案——并解释这些解决方案如何成为可能成为赢家的垫脚石:汇总

面对 “ 可扩展性三难 ”

如果不提到著名的 “ 可扩展性三难困境 ”,我们就无法谈论可扩展性。该术语由Vitalik(V神)创造,用于解释区块链旨在拥有的三个属性:可扩展性、去中心化和安全性。很明显,到目前为止,我们可以实现其中两个属性。但是要同时获得这三个是非常非常困难的。

在我们理解为什么之前,让我们把我们的条款弄清楚。

  1. 可扩展性只是意味着区块链可以处理大量事务,以每秒事务数 (TPS) 衡量。
  2. 去中心化意味着区块链由世界各地的许多“去信任”节点运行——而不是由一小群集中的“受信任”节点运行。
  3. 安全性意味着即使网络中一定百分比的节点是恶意的,区块链也能抵抗攻击。理想情况下,它应该能够处理多达 50% 的恶意节点。

Vitalik 创建了一个简单的三角形,每条边代表三个属性之一。三角形的每一边代表能够实现 3 个属性中的 2 个的不同类型的区块链解决方案。

以太坊

去中心化和安全

以太坊

三角形的底部是传统的区块链,如比特币和以太坊 1.0(一层)。

这些类型的区块链是:

  • 去中心化:是的。因为世界上任何人都可以选择成为挖矿节点。全世界有成千上万的矿工参与保护比特币和以太坊网络的安全。也无需授权自己为矿工;这是完全不信任的。
  • 安全:是的。因为网络中的每个节点都保留了区块链的副本并验证每笔交易。此外,工作量证明旨在处理高达 50% 的恶意节点。
  • 可扩展性:不能。凭借其安全性,网络中的每个节点都保留一份区块链副本并验证每笔交易。虽然安全,但效率低下,导致延迟和吞吐量非常低。对于比特币,每秒大约 7 笔交易,对于以太坊,每秒大约 15 笔交易。

安全且可扩展

三角形右边是典型的高TPS链,比如币安智能链。他们使用一种称为“ Proof-of-stake-authority ” 的共识算法,其中 “ 选举 ” 了 21 个节点来生成新块。每 24 小时,2月15号更名为BNBChiin,从21个节点扩展到41个节点。将选出一组新的 41 个节点来在 24 小时内生成新块。

以太坊

  • 安全:是的。每个 “ 选举 ” 节点被授权,因此我们控制系统中的对手。
  • 可扩展:可以。由于少量的选举节点在任何时候都会产生新的块,因此我们可以获得更高的事务吞吐量和更低的延迟,这意味着与每个节点都必须验证每个事务相比,交互费用更低。
  • 去中心化 : 不够去中心化。 由于只有 41 个选举产生的验证者,它比传统的区块链去中心化要少得多。此外,每个 “ 选举 ” 节点被授权,因此我们将信任介绍到系统中,使其减少分散。

可扩展和去中心化

三角形的左侧是多链生态系统,例如 Cosmos、Polkadot 和 Avalanche。这些系统有许多独立的区块链网络,它们都作为更大区块链网络的一部分进行通信。

以太坊

  • 可扩展:是的。由于我们不再需要将所有状态存储在单个区块链上,因此我们可以将状态拆分到许多独立的区块链中,从而实现比传统区块链更高的可扩展性。
  • 去中心化:看情况而定。生态系统中的每个区块链都有一组验证区块链的节点。生态系统中的一些链会有很多验证者(例如需要去中心化的稳定币链),而另一些链可能很少甚至只有一个(例如不需要太多去中心化的企业链)。因此,去中心化的程度取决于我们所指的生态系统中的哪条链。
  • 安全:不太安全。如果生态系统中有一条链受到攻击,那么它可能会对系统的其余部分产生连锁反应。例如,如果链 B 受到攻击,而链 A、C 和 D 都依赖它,那么其他链也会受到影响。

如您所见,在扩展区块链方面有许多不同的尝试,但它几乎总是以这三个属性之一为代价。Vitalik 和以太坊社区一直不愿意做出这种妥协,他们的目标是获得所有三个。

在我们了解这如何可能之前,了解另一件事很重要:第 1 层扩展与第 2 层扩展。

了解第 1 层和第 2 层扩展

在最高级别,第 1 层扩展是指扩展核心区块链本身。相比之下,第 2 层扩展是指将交易从主区块链层移到可以与主链通信的单独层中。

以太坊

以太坊希望同时使用第 1 层和第 2 层解决方案来解决可扩展性的三难困境,分片是以太坊的第 1 层解决方案,而汇总是以太坊的第 2 层解决方案。

以太坊

以太坊最早的二层解决方案

但是汇总和分片必须等待片刻。首先,我们应该记录以太坊过去探索的第 2 层扩展解决方案,然后最终得出汇总,即以太坊的 “ 圣杯 ” 。毕竟,这就是工程的工作方式——我们提出想法、测试它们并进行迭代,直到找到可行的解决方案。

状态通道

状态通道已经存在了很长时间,所以它们并不是什么新鲜事。以下是它们如何工作的快速说明。假设我们有两个人,爱丽丝和鲍勃,他们想互相交易。爱丽丝每次发推文都会向鲍勃支付 1 美元。但是由于 Bob每天发很多推文,使用以太坊进行交易会太慢而且太贵。

相反,他们使用 “ 状态通道 ” :

  • 爱丽丝在以太坊的智能合约中投入了 500 美元。
  • 每当 爱丽丝 想给 鲍勃 1 美元时,她都会签署一条消息,表明她想给 鲍勃 多少钱。她一直在签署消息,直到 鲍勃 准备好 “ 兑现 ” 他的资金。
  • 鲍勃 提交一条新消息,表明他已准备好关闭状态通道。以太坊上的智能合约验证爱丽丝和鲍勃的签名,向鲍勃支付应付金额,并将其余款项返还给爱丽丝。

以太坊

请注意,只有第一步和最后一步需要我们在区块链上进行交易,在这些步骤之间,爱丽丝 和 鲍勃 可以向对方发送无限数量的签名消息,指示付款。

在这种情况下,以太坊区块链仅用作结算层来处理一次性付款的最终交易,这减轻了底层区块链的负担。

重点是:通过开辟一个在区块链之外进行交易的渠道,我们在保持低成本的同时大幅提高了交易容量和速度。这是可能的,因为:

  • 首先,大部分交易都发生在链下,这意味着付款可以即时处理,因为两方之间的链下更新不需要额外的时间来处理和验证区块链网络。
  • 其次,支付产生的费用较低,因为我们只需要在打开和关闭状态通道时进行链上交易。这意味着大多数交易都是在链下进行的,费用要低得多。

那么,为什么这不是最终的解决方案呢?好吧,状态通道可以做的事情是有限制的。

例如,我们不能使用状态通道与不属于状态通道的人进行交易,我们也仅限于状态通道中可能的状态更新类型。像 Uniswap 这样的复杂应用程序不能在状态通道中使用,因为当我们在 Uniswap 上交换两个代币时,智能合约会自动执行一系列中间步骤来进行交换,这些步骤没有授权用户在每个步骤上签字。

状态通道的另一个缺点是它们要求我们锁定流动性以实例化通道并防止恶意交易对手可能永远不会真正支付承诺资金的情况。这对于单一渠道来说可能没问题,但是当我们试图通过状态渠道网络进行支付时,锁定在中间渠道中的流动性使其相当“资本效率低下”。

最后,状态通道需要可以定期监视网络的人(或将此责任委托给其他人)。这确保了您的资金安全,这又增加了一层复杂性和低效率。

总而言之,状态通道适用于两方需要在一段时间内快速、廉价地进行交易的用例(例如商家和客户)。但鉴于它们有限的用例和资本效率低下,我们并不认为状态通道是以太坊的最终扩展解决方案。

侧链

侧链也已经存在很长时间了,而且很容易理解。简而言之,侧链是与主区块链 “ 挂钩 ” 的独立区块链。

当我们将一个区块链“挂钩”到另一个区块链时,这意味着我们可以在两个区块链之间移动资产。“单向”挂钩是我们将资产从主区块链移动到侧链的地方,而不是其他方式。这是通过将主区块链上的代币发送到不可使用的地址来“烧掉”代币,然后在侧链上 “ 铸造 ” 等价的代币来实现的。

以太坊

那么,“ 双向挂钩 ” 是我们可以将资产移入和移出主区块链和侧链的时候。这需要在主链上 “ 锁定 ” 我们的代币,然后在侧链上 “ 铸造 ” 等量的代币。当我们想要转换回原始代币时,我们会 “ 烧掉 ” 侧链上的代币,然后解锁主链上的代币。

以太坊

因此,侧链是当我们创建一个与主区块链双向挂钩的新区块链时。当我们想要更快交易时,我们可以将我们的资金从主链转移到侧链并在那里进行交易。完成后,我们将资金转移回主链。

以太坊

比特币侧链的一个例子是Liquid Network。Liquid Network 与比特币挂钩,允许更快、更便宜的比特币支付。另一个流行的例子是Polygon,它是与以太坊挂钩的侧链。

当用户想要更快交易时,他们可以锁定一些 ETH 并在 Polygon 侧链上创建等量的 Matic 代币。在 Polygon 侧链上,他们可以享受更快、更便宜的交易。当他们完成交易后,他们可以将他们的 Matic 代币转换回 ETH。

以太坊

注意:从技术上讲,Matic 不是侧链,因为它会定期将侧链的状态提交给以太坊。因此,他们喜欢称自己为 “ 提交链 ”。

以太坊

总体而言,侧链是可扩展的,因为它们通常通过使用允许可扩展性的不同共识算法在去中心化和/或安全性方面进行权衡。

对于以太坊网络上的大量拥塞,侧链是一个很好的权宜之计,但以太坊也不认为这是最终的可扩展性解决方案。随着您继续阅读,原因将变得清晰:)

Plasma

Plasma 是另一个 “ 第 2 层 ” 解决方案,可以让我们将交易移出基础层。在我们进入 Plasma 之前,重要的是要注意,随着时间的推移,Plasma 已经进行了多次迭代,每一次都有自己的权衡取舍。您可以查看Plasma世界地图,其中列出了人们为解决Plasma带来的挑战而尝试创建的许多不同类型的设计,有很多!

以太坊

当然,为了这篇文章的目的,我必须概括 Plasma 的概念,而不是过多地关注个别的实现。如果您想深入挖掘,请务必查看世界地图。

那么,什么是Plasma?Plasma 本质上是一系列在主区块链之外运行的智能合约(或 “ Plasma链 ” )。

以太坊

Plasma 链就像一棵树的树枝,以太坊是主干,每条 Plasma 链都是一个分支,每个分支都被视为具有自己的区块链历史和计算的区块链。

“ 根区块链 ”(即以太坊区块链)使用称为 “ 欺诈证明 ” 的东西来强制 Plasma 链中状态的有效性。欺诈证明是我们提供某些数据的一种机制,任何人都可以使用数学证明来确定数据是否无效。

以太坊

每个 Plasma 区块链不需要将交易数据发布到根链上。相反,每个 Plasma 链都有一个 “ 操作员 ”。这可能是一个中心化的参与者,一个代表多个人的多重签名,甚至是一个参与成为运营商的委员会。Plasma 链的运营商提交 Plasma 链上发生的转移的 Merkle 根。

注意:如果您不知道 Merkle(默克尔树)树的工作原理,那么我强烈建议您在继续之前阅读此解释器。在高层次上,Merkle 树让我们可以获取一个大型数据集(例如,一个块中的交易)并生成一个代表整个数据集的单个根哈希。

以太坊

稍后,我们可以很容易地证明来自大数据集的一条数据(即,来自一个事务块的单个事务)存在于该数据集中,只需提供通往该数据的分支。

以太坊

如果有人试图证明欺诈交易的存在,那么哈希值将不匹配,我们会立即知道。

好的,回到 Plasma。

每个 Plasma 链都在提交发生在其上的转移的 Merkle 根。当用户稍后试图将他们的资产从 Plasma 链移回根链时,用户可以提交将资产发送给他们的最新交易的 Merkle 分支(最近的交易足以让我们知道当前余额在等Plasma上)。这开始了一个挑战期,任何人都可以尝试证明用户的 Merkle 分支是欺诈性的。如果 Merkle 分支存在欺诈,则可以提交欺诈证明。

由于根区块链仅跟踪 Merkle 根,因此与那些发生在主链上的交易相比,它必须处理的数据要少得多。这显著减少了存储在根区块链上的数据量,并使我们能够扩展根链。

此外,如果某个特定的 Plasma 链受到恶意攻击,人们可以从腐败的子链中 “ 大规模退出 ”。

以太坊

以太坊

等Plasma 比状态通道更有利,因为您可以将资产发送给任何人,而使用状态通道,您只能与状态通道中的人进行交易。此外,等Plasma相对于侧链的好处是等离子链由以太坊保护。

两者(Plasma 与侧链)的根本区别在于侧链有自己的安全模型。他们有自己的共识机制和一组单独的节点来验证状态。即使侧链受到攻击,主链也不会发生任何事情,反之亦然。如果侧链发生攻击,主链无法保护用户。

另一方面,等Plasma具有依赖的安全模型,每个 Plasma 链都可以使用自己的机制来验证交易,但它仍然使用以太坊区块链作为最终的真相仲裁者。在拜占庭攻击的情况下,等离子链用户可以退出到以太坊。

但是 Plasma 有几个缺点,使其成为一个平淡无奇的可扩展性解决方案。

首先,当用户想要将他们的资产从 Plasma 合约转移到以太坊主区块链时,他们需要等待 7 天。这足以让人们验证提款交易不是欺诈性的。如果是,他们可以使用 Plasma 链上的 Merkle 树构建欺诈证明。

其次,每个 Plasma 链都需要一个运营商将 Merkle 根承诺发布到主链。这需要我们依靠第三方来准确地将 Merkle 根承诺发布到链上。不幸的是,运营商可以执行所谓的“ 数据可用性攻击 ”,他们出于恶意原因拒绝将某些交易发布到主链上。

以太坊

在这种情况下,运营商可以说服网络接受无效块,而无法证明无效块。这可以防止其他用户知道区块链的准确状态。这也阻止了人们创建区块或交易,因为他们缺乏构建证明的信息。与欺诈不同,数据可用性攻击并不是唯一可归因的。我们无法知道攻击正在发生。

运营商也可以通过更明确的方式进行恶意操作,例如通过提交欺诈性交易。在这种情况下,人们可以“大规模退出,” 如上所述。但事实证明,这些在实践中实施起来要困难得多。如果很多用户想要大规模退出,可能会导致主链拥堵,用户可能无法及时退出,导致资金损失。

第三,Plasma 要求交易资产的所有者在场。这确保了 Plasma 链的安全,因为它有效地使未经所有者同意无法进行交易(例如将 ERC 20 代币发送到批准的地址)。Plasma 最适合简单的转账,但随着交易变得越来越复杂,设计空间变得不规则。

出于上述原因,Polygon 和 OMG 网络最初追求 Plasma 架构以进行扩展,但后来又放弃了。

正是在这种情况下,在提出了各种解决方案之后,我们得到了汇总。

汇总

就像状态通道、侧链和等Plasma一样,汇总是“第 2 层”解决方案。事实上,rollup 与 Plasma 非常相似,因为我们在链下批量处理交易并将更新发布到主区块链。然而,关键的区别在于,通过汇总,我们还将每批交易的交易数据发布到链上。使用 Plasma,我们只发布 Merkle 根。

换句话说,通过汇总,我们在链下进行交易处理,但我们在链上发布交易数据。我们在链上发布的数据量是本地验证汇总交易所需的最小数量。通过将数据上链,任何人可以检测欺诈、发起提款或亲自开始生成交易批次。因此,汇总比 Plasma 链或侧链为我们提供了更高的安全保证。

rollups 和 Plasma 之间的另一个关键区别是我们不必担心数据可用性问题。毕竟,我们将交易数据发布到主链上。这是一个巨大的胜利。

使用汇总,我们有效地在汇总层内运行 EVM 的一个版本。这意味着以太坊上任何可能的交易都可以在汇总中执行。

这就引出了一个问题:如果我们仍然在链上发布交易数据,那么这将如何扩展第 1 层?扩展性不还是受限于主链的数据带宽吗?

是的。这里的关键是我们通过汇总获得 5 到 100 倍的可扩展性,但不是无限的可扩展性。Rollups 还使用了许多花哨的压缩技巧来最小化我们在链上发布的交易数据,因此链上的数据存储比其他方式少得多。

以太坊

同时,我们将链下交易执行的所有繁重工作外包给汇总。回想一下,在交易执行期间,交易必须由以太坊虚拟机 (EVM) 处理并与状态交互(例如存储、账户余额等)。这是昂贵的。

然而,对于汇总,我们通过在汇总中运行 EVM 的一个版本来将此执行转移到汇总层——所以我们仍然在执行相同的执行,但汇总层的 gas 成本比以太坊便宜得多。

仔细查看汇总

现在,让我们看看汇总是如何在幕后工作的。

主链上有一个“汇总合约”,用于维护汇总层的当前状态。这包括在其上进行交易的用户的账户余额和其中存在的合约的智能合约代码。简而言之,汇总合约跟踪汇总层中交易的“状态根”。

以太坊

“状态根”由一个键值映射组成,其中键是地址,值是账户。每个账户最多有 4 个属性:余额、随机数、代码(仅适用于智能合约)和存储(仅适用于智能合约)。 

以太坊

当事务发生在汇总层时,会发生状态更改。当然,这意味着状态根也需要更新。但不是为每笔交易更新状态根,而是将交易“批量”发送到主链上的汇总合约。该批次将包括该批次事务的压缩形式和一个更新的状态根,该状态根表示该批次事务处理后的数据。

主链上的汇总合约检查批次中的前一个状态根是否与其当前状态根匹配——如果匹配,它将状态根切换到新的状态根。

以太坊

由于发布的交易数据实际上并没有被 EVM 解释,我们没有访问或写入状态——这太昂贵了。相反,我们将压缩的交易数据作为“calldata”参数发布到汇总合约。

这就是为什么这很整洁,在 Solidity 中,calldata(是一种数据结构存储方式)是最便宜的存储形式。事实上,作为 calldata 参数传递的参数根本不会存储在以太坊的状态中,这意味着我们避免了很多 gas 费用。同时,以太坊节点仍然可以在创建区块时存储交易数据(在历史日志中)。

精明的读者可能想知道 Plasma 和汇总之间有什么区别。这是关键的区别:通过汇总,我们将交易数据与状态根一起发布到链上。使用 Plasma,我们只需发布交易的状态根。

与 Plasma 不同,我们有一个将 Merkle 根发布到根链的操作员,rollups 允许任何人将新一批交易发布到链上的 rollup 合约,稍后我们将更深入地探讨。

再一次,这引出了一个问题:既然我们只是将交易数据发布到主链而不是执行链上的交易,我们怎么知道发布在主链上的交易数据和状态根不是欺诈性的?

输入:乐观汇总和零知识汇总,每种都有自己的处理和验证批次正确性的方式。

乐观汇总

您可能可以根据名称猜出乐观汇总是什么,当一批新的交易 “ 汇总 ” 到主链时,每批的状态根和哈希都会被发布,但我们实际上并没有验证交易是否正确执行,至少在发布时没有。

通过这种方式,我们 “ 乐观地 ” 将新的状态根和交易数据发布到主链上的汇总合约。当某人将新的状态根发布到主链时,汇总智能合约会简单地接受他们的话。

如果有人发现向汇总智能合约发布了无效的状态转换,他们可以生成 “ 欺诈证明 ”。

欺诈证明包括:

  • “ 预先状态”的证明,或者,在应用交易之前事情的样子
  • “ 后状态 ” 的证明,或者,在应用交易后状态应该如何处理
  • 在状态转换期间应用的交易证明

工作流程很简单:这个欺诈证明被发布到主链上的汇总合约中。然后汇总合约验证证明并将交易逻辑应用于预状态。然后,它将结果与后状态进行比较。如果存在不匹配,则证明发布批次的人没有正确应用交易。然后,智能合约会还原该批次的交易以及之后的所有批次。

为此,任何将批次发布到主链的人都必须存入保证金,因此如果他们表现出恶意并被抓到,他们可能会被 “ 罚没 ”。

ZK 汇总

如果乐观汇总使用“在被证明有罪之前是无辜的”心态,那么 ZK 汇总使用“不信任,验证”心态。

使用 ZK 汇总,每个批次都包含一个称为 ZK-SNARK 的加密证明,它证明状态根是执行该批次事务的正确结果。ZK-SNARK 证明是一个哈希值,表示在 zk-rollup 层中执行交易后区块链状态的变化。该有效性证明被发布到汇总合约中,因此任何人都可以使用它来验证汇总层上特定批次中的交易。

这里的魔力在于 ZK-SNARK 的工作方式。它们让我们在不泄露数据的情况下生成底层数据的证明。任何人以后都可以验证数据是否存在,即使他们无权访问数据本身。

ZK-SNARKS 的数学基础很复杂,超出了我们的范围,但如果你好奇,我鼓励你去 Google 或 YouTube 上花点时间了解它们的工作原理。

哪个更好?

显而易见的下一个问题是……哪个更好?很难说。各有优缺点,接下来我们来看看。

成本

“ 成本 ” 在抽象中并没有太大的意义,但是当我们将其分解时,乐观和 ZK 汇总的性能开始出现分歧。

  • 在链上发布新批次的 Gas 成本:乐观汇总成本更低。我们乐观地发布新的状态根和数据,所以这是一个简单的交易。ZK 汇总成本更高。当我们在链上发布新批次时,我们必须验证 ZK-SNARK 有效性证明。这在计算上更昂贵。
  • 发布在链上的每笔交易的 Gas 成本:乐观的汇总成本更高。我们必须在链上发布足够的数据,以便稍后验证欺诈证明。ZK 汇总成本更低。我们可以省略大部分交易数据,因为有效性证明足以让任何人验证批次的正确性。
  • 链下计算成本:乐观汇总成本更低。我们只发布新的状态根,而不是执行/验证交易。也就是说,我们仍然需要一些人来观察新批次的创建和新交易的执行,以确保批次的正确性。ZK 汇总成本更高。ZK-SNARK 的计算成本很高(成本高出 20 到 1000 倍,尽管随着创新它继续变得更便宜)。

旁注:尽管 ZK-rollups 的链下计算成本更高,但考虑到链下的 gas 价格要低得多也很重要。

速度

乐观汇总很慢。通常,用户必须等待大约一周才能提取他们的资产。如果用户试图在汇总层上提取他们实际上并不拥有的代币,这可能会给某人足够的发布欺诈证明的机会。

ZK 汇总很快。用户通常等待不到 10 分钟来提取他们的资产。我们只需要等到下一批来处理提款,因为所有的汇总状态都已经过验证。

旁注:有一些方法可以通过使用“快速提款”来绕过这个一周的等待期。这是通过流动性提供者完成的,他们在主链上维护一个 “ cookie jar ” 资金。当用户快速提取资金时,他们给流动性提供者一张借条用于汇总中的资金,然后他们立即获得主链上的流动性提供者的付款(收费)。

稍后,当一周期限结束并且用户从汇总层取回资产时,用户可以将欠他们的资金发送给流动性提供者。流动性提供者甚至可以选择运行一个验证节点来验证用户在汇总上的交易,然后再在主链上向他们发放资金,从而进一步降低他们的风险。

然而,这种 “ 快速提现 ” 方案对于 NFT 来说是不可能的,因为任何 NFT 中只有一个存在,并且流动性提供者无法在链上创建相同的 NFT。

复杂

乐观汇总更简单,欺诈证明的概念由来已久,因此解决方案相对简单。

ZK 汇总更复杂,ZK-SNARK 是新的并且在数学上很复杂。

广泛性

乐观汇总更容易广泛化,工程师们已经构建了一个与 EVM 兼容的虚拟机,称为 OVM(乐观虚拟机),它允许乐观汇总处理可以在以太坊上处理的任何事务。

ZK 汇总更难概括。使用 ZK-SNARK 证明通用 EVM 执行比证明简单计算(如价值转移)要困难得多。也就是说,这个领域发生了很多创新。事实上,StarkNet alpha引入了一种名为 Cairo 的新编程语言,它是以太坊上的图灵完备 ZK 验证器,可让我们验证通用计算智能合约。

可扩展性

乐观汇总的可扩展性较差。当我们在链上发布数据时,它通常包括一些状态(例如交易细节)和见证人(例如证明交易方同意的数字签名)。使用乐观汇总,我们必须为每笔交易发布见证,以便人们以后可以证明欺诈。见证人占用大量存储空间,是交易数据的 3-10 倍。

ZK 汇总更具可扩展性:我们不需要为每笔交易包括见证人,因为在计算 ZK-SNARK 时所有数字签名都已验证。相反,我们每批只需要一个见证人,这大大减少了存储在链上的数据。

安全

乐观汇总不太安全,乐观汇总依赖于加密经济学来确保链的安全性。换句话说,他们必须激励人们观看发布在链上的批次并检测欺诈行为。

ZK 汇总更安全,ZK 汇总依赖于数学,它们不需要激励。他们使用密码学而不是密码经济学。

那么,既然我们已经分解了这些,哪个更好?仍然很难说,但这证明了这些程序背后的工程师所做的伟大工作。我们有像 Optimism 和 Arbitrum 这样的团队正在努力开发乐观汇总,这些已经可供以太坊开发人员使用。我们有StarkWare和Zksync这样的公司将通用 ZK-rollups 引入以太坊。

这两种解决方案都处于起步阶段。但是乐观汇总更接近于被采用,因为它们不太复杂并且可以用于当今的通用计算。另一方面,ZK rollups 需要一些时间才能赶上,但许多工程师会认为 ZK rollups 是一项卓越的技术。毕竟,它们依赖于数学而不是加密经济学,而且它们比乐观汇总更具可扩展性。

也就是说,最好的技术并不总是赢。我们不能忽视的是,一旦一项技术变得根深蒂固,它就很难被取代。乐观的汇总肯定是领先的——所以只有时间才能证明从长远来看哪个会 “ 赢 ”。

汇总的聪明之处

在我们讨论汇总的一些持久挑战之前,让我们看一下汇总使用的压缩技巧如此高效。

以太坊

  • 随机数:在典型的以太坊交易中,我们包含随机数以防止双花攻击。Rollups 完全省略了它们,因为它们可以使用区块链的先前状态重新计算。通过这种方式,汇总尽可能用计算替换数据。
  • Gas 价格:与其以 gwei 计价(其中 1 gwei 是 10^-9 ETH),不如将 Gas 价格限制在固定的价格范围内,从而显著减少在交易数据中记录 Gas 价格所需的存储量,这真的加起来了!
  • 费用:同上。
  • To:一个地址是 20 字节长,加上 1 个字节用于 RLP 编码。汇总可以存储索引到地址的映射,而不是包括地址,并且只在 “ to ” 字段(例如,1234)中包括索引。这就像将坐标留给目的地,而不是渲染整个位置本身。
  • 值: “ 值 ” 字段为 9 字节,因为 ETH 和 ERC-20 代币最多有 9 位小数。汇总可以改为把值限制为最多 3 个小数位,为我们节省 6 个字节。看起来很实用!
  • 签名:如上所述,数字签名的 “ 见证 ” 占用了大量存储空间。Rollups 可以使用 BLS签名(签名聚合和密钥聚合的算法),它允许我们将许多签名聚合为一个,这节省了大量的存储空间!

让我们把这一切付诸行动,使用所有这些压缩技巧,我们可以为 ETH 传输减少多少字节?典型的 ETH 传输需要 112 个字节,但是有了这些压缩技巧?只有 12 个字节,这几乎提高了 10 倍的效率!

ZK rollup 可以获得比乐观 rollup 更多的优化,因为它们在将交易数据发布到主链之前进行链下交易验证。他们也不需要包含交易数据的“验证”部分;有效性证明就足够了。所有 ZK 汇总需要存储的是计算状态转换所需的数据。因此,重要的一点是汇总不仅因为它们将计算移出链而高效,而且因为它们非常聪明的数据压缩技巧。

Rollups 并不完全是“圣杯”

但不要太兴奋,尽管汇总非常有希望,但仍有很多问题需要解决,以下是您应该注意的一些挑战。

可扩展性有天花板

到目前为止,您已经了解汇总和其他第 2 层解决方案(如 Plasma 和侧链)之间的主要区别。你会记得,汇总将计算移出链,但将数据存储在链上。这对于解决数据可用性问题非常有帮助。但是由于我们将交易数据存储在链上(尽管是以非常压缩的形式),我们仍然受到以太坊存储容量的限制。

我们可以通过一些粗略的数学来看看理论上的 TPS 将使用汇总。

  • 以太坊区块gas限制:1250万gas
  • 每字节存储在链上的数据成本:16 gas
  • 每个块的最大字节数:~781,000 字节(1250 万气体/每字节 16 气体)
  • 使用汇总进行 ETH 传输所需的数据字节:12 个字节(参见上一节中的数学)
  • 每块交易:~65,000(每块约 781,000 字节/每个 ETH 传输 12 字节)
  • 以太坊的平均出块时间:13秒
  • 每秒交易数:~5000 TPS(每块约 65,000 笔交易/每块 13 秒)

当然,这个数学假设一个区块中的所有交易都是 ETH 转账,并且一个区块中除了批量汇总交易之外没有其他任何东西,这是极不可能的。大多数区块将包含各种交易,包括一些第 1 层交易,这些交易将花费超过 16 个气体费用。此外,如果这些是 ZK-rollup 批次,则将不包括在链上验证 SNARK 证明的成本,这大约是 500,000 gas。

尽管如此,这为您提供了使用汇总的 TPS 的起点,5,000 远不及 Visa 显然拥有的 65,000 TPS ,但它比今天的 TPS 以太坊要好得多。

破碎的流动性

Rollup 技术是作为独立项目创建的,而不是由以太坊协议本身创建的。因此,将会有几种不同的汇总技术并行存在,这就是流动性断裂的地方。

随着流动性从主链转移到汇总,它会 “ 破坏 ” 不同汇总网络的流动性。尽管一旦有跨汇总通信的机制就可以解决这个问题,一些聪明的工程师已经在研究这些机制!

降低可组合性

在以太坊上构建的主要好处之一是可组合性。在以太坊上构建的每个新协议都像乐高积木一样,其他协议可以轻松地在其上构建。例如,这就是让 DeFi 如此强大的原因。它让我们创造了金钱乐高积木。

当应用程序和流动性转移到汇总时,我们会失去一些可组合性。毕竟,在汇总层和主链之间传递消息和事务并不像在基础层的上下文中那样容易。

但解决这个问题可能只是时间问题。我当然可以看到一个存在于不同汇总上的智能合约仍然可以相互通信的世界。与往常一样,我们离解决这些问题只有几个聪明的工程师。

集权

我们忽略了讨论谁实际负责将新批次发布到主链的部分,所以让我们回到这个话题。

大多数汇总依赖于 “ 定序器 ” 来完成这项工作:定序器是一个节点,它对交易进行批处理并将结果发布到链上的汇总合约。对于 Arbitrum、Optimism 和 StarkNet,sequencer 是它们自己运行的单个节点。

以太坊

我知道。“ 去中心化 ” 是区块链的核心,虽然效率很高,但显然是非常中心化的,如果定序器出现故障或审查交易怎么办?

好吧,事情没那么简单。这些项目目前采用这条路线的原因是因为使用这种方法进行迭代更容易、更快捷。为了降低集中化的风险,随着时间的推移,大多数汇总都希望对排序器进行某种去中心化——其中许多确实有这样做的计划。

测序仪的去中心化将如何运作?有几种方法。一方面,我们可以创建一个类似 Proof-of-Stake 的系统,在该系统中,测序人员必须质押代币才能有机会提出下一批。或者我们可以进行 Delegated-Proof-of-Stake,其中一个排序器被选举出来,如果它做得不好,可以不被选举。

总而言之,测序仪将如何去中心化还有待观察!

并排比较

呸。希望您对汇总有更好的理解——以及为什么以太坊将其押注(和分片!)作为可扩展性解决方案。当然,Rollups 坐在它之前的巨人的肩膀上——如果没有侧链、状态通道和 Plasma,我们就不会拥有它。

以太坊

使用去中心化、安全性和可扩展性的“三难”框架将汇总与其他第 2 层解决方案进行比较也是有益的。除了我将添加一个额外的维度:通用性。多年来,我们已经意识到第 2 层解决方案的通用性非常重要,这样它就可以用来做任何可以在主链上做的事情。

以太坊

这清楚地表明,Rollups 在不牺牲去中心化、安全性和通用性的情况下为我们提供了适度的可扩展性。 

然而,权衡是可扩展性。因为我们仍然在链上存储数据,所以与在链下存储数据的第 2 层扩展解决方案相比,我们的可扩展性受到限制。此外,在短期内,汇总依赖于集中式排序器,这降低了安全性。但这是一个短期问题,随着时间的推移,rollup 很可能会分散排序器,使其成为优于 Plasma、侧链和状态通道的技术。

那么汇总是圣杯吗?我会让你决定。

PS..

为了简洁起见,我省略了很多关于汇总如何工作的有趣细节。但我也遗漏了一个新的第 2 层扩展方案,称为 “ Validium ”。

Validium 与 Plasma 的相似之处在于我们将数据和计算移至链下。关键区别在于 Validium 不依赖欺诈证明来验证交易。相反,运营商需要使用零知识证明来做出新的状态承诺,这使得操作员无法推进无效的状态转换。

它还消除了对 “ 大规模退出 ” 计划或协议中长期退出延迟的需要。但是我们仍然获得了 Plasma 链的无限可扩展性,因为我们没有将交易数据存储在链上。总之,值得一提,我鼓励你阅读它!

结论

这篇文章比我预期的要长得多,如果您仍在阅读,那么您就是我喜欢的类型。

尽管篇幅较长,但这确实是您对汇总有基本了解所需了解的最低限度。毕竟,汇总只是以太坊可扩展性解决方案的一半。另一半是分片,如果您对构建 Web 3.0 应用程序感兴趣,请注册我们的下一个DappCamp队列,在那里您将学习如何在以太坊上构建和部署安全的智能合约。

温馨提示:
快链头条登载此文本着传递更多信息的缘由,并不代表赞同其观点或证实其描述。
文章内容仅供参考,不构成投资建议。投资者据此操作,风险自担。
提示:投资有风险,入市须谨慎。本资讯不作为投资理财建议。