「模块化」的以太坊时代:PoS、分片与Rollups

以太坊开发正达到一个新的成熟度水平。以太坊目前所处的位置与其定义的路线图之间的差距正在迅速缩小。

现在我们处于这个阶段,即很明显以太坊正在开发模块化的设计架构。那些使区块链之所以成为「区块链」的属性正在呈现差异化趋势,以使每条链都实现自身最优化的愿景。

在本文中,我们将探索 PoS (权益证明共识机制)、分片 (sharding) 以及 Rollups 将如何实现模块化的区块链设计,从而实现以太坊的长期愿景,并为区块链的未来发展设定标准

01. 区块链的「三难困境」

臭名昭著的「区块链三难困境」(也称区块链「不可能三角」) 指出,你只能优化区块链三个属性中的其中两个,由于技术上的限制,必须牺牲其中一个属性。这三大属性分别是:

**· 可扩展性:**系统的数据吞吐量是多少?TPS 有多大?

**· 去中心化:**网络中有多少节点?是否存在任何权力中心?

**· 安全性:**攻击网络的难度如何?

区块链的不可能三角:此三角形的每一边都只能实现两个属性

为什么会这样呢?为什么区块链不能一次性同时实现足够的去中心化、安全性和可扩展性?

这是因为传统区块链是单片式的 (monolithic)。区块链总是试图在主链 (L1) 上实现所有这三个目标。然而,当我们将这些组件进行模块化时,区块链三难困境的局限性就荡然无存了

打个比方,想想劳动分工。这一经济原则将一项复杂的任务划分为更小的部分,每个人都可以专门从事特定的工作部分,从而使整个系统产生的产出远远超过相同数量但独自工作的工人。

那么模块化的区块链到底是什么样的呢?它是如何运作的呢?在对此进行解释之前,我们需要了解区块链的三个组件,它们组成了上面描述的区块链的三大属性。

区块链的底层组件

去中心化、可扩展性和安全性是区块链的三大属性。它们是区块链可以包含的特性,但是还需要有实现这三大属性的底层组件。模块化的区块链将这些组件划分为单独的部分,并将它们最大化。那么这些底层组件到底是什么呢?

· 共识:为区块链提供了安全性,并界定了存储在区块链上的数据的权威真实性。区块链的共识决定了目前的区块号是什么,「区块 N」中包含的内容是什么。(注:N 表示区块号)

· 执行:将区块链从「区块 N」更新到「区块 N+1」所需的计算。也即是获取旧状态,同时添加一些新交易,然后将旧状态转换为新状态。这个过程需要通过计算完成。

· 数据可用性:由区块链 L1 (主链) 保证可以被引用的数据。构成了区块 N 的所有数据。

在深入解释之前,让我们用一个类比来熟悉这些术语。假设这是一个周三的早晨,你正前往当地的一家富国银行分行,想要存入一张 100 美元的支票。

· 你的账户状态是你的银行余额,里面目前存有 69,420 美元。

· 从你开设该账户开始截止到当下的所有账户交易都保存在数据可用性层中,也就是一个由富国银行托管和保护的中心化数据库。

· 当这家分行的出纳员处理你的支票时,实际上就相当于富国银行对这个数据可用性层执行了状态转换,从而将你的账户余额更新为 69,520 美元。

· 现在,这个「N+1」的新状态 (也即 69,520 美元) 反映在了你的富国银行手机 App、Web 端以及其他分行机构上。之所以有这样的共识,是因为所有的更新都发生在一个中心化的数据库中,只有持有凭证的人才能访问该数据库。

现在,我们将这个例子延伸到区块链中:

· 共识

** **

如前所述,共识 (consensus) 界定了存储在区块链上的数据的权威真实性。

在共识的类别中,主要包括了 PoW (工作量证明) 和 PoS (权益证明) 两类共识。这些共识机制决定了将新区块添加进区块链中的方式,以及共识参与者对于区块的正确性达成一致的方式。

通过达成共识,区块链得以在时间上向前发展,而不会被分割成上百万条不同的、有各自数据真实性版本的链。

· 执行

** **

区块链的执行属性涉及到将区块链的状态携带至下一个新区块中。

区块 N 包含了一些特定的状态,这些状态代表了数据 (如状态余额、合约代码等) 是如何从区块 N-1 转变而来的。然后验证者从区块链的内存池 (mempool,也称交易池) 中抓取一些新的交易,并通过生产区块 N+1 来对区块 N 中的状态进行更新,也就是获取区块 N 的状态,然后根据从内存池中抓取的这些交易来更改这一状态。区块链的内存池 (mempool) 中包含了所有等待被矿工/验证者打包确认的交易,就像银行中一群等待获取银行服务的客户一样。

当验证者使用从内存池中选出的交易 (作为输入) 以及共识机制来对下一个新区快的状态进行计算时,就意味着这些交易是在被执行了。

· 数据可用性

** **

数据可用性是指托管在每个区块链节点上的数据。如果这些节点上存在数据,那么这些数据对于任何使用该区块链的人来说都是可用的。

这也使得这些数据非常重要和昂贵。这些可用的数据量非常有限 (我们称之为稀缺的区块空间)。当你向区块链增加一些数据 (比如发送一笔交易或者部署一份合约) 时,你实际上是在将该数据添加到运行这条区块链节点的所有计算机 (节点) 中,而且是永久性地添加。我们知道,区块链上的记录是不可篡改的,这意味着系统中存储的数据可以说是人类创造的最有价值的数据。

所有人都想要使自己的数据 (交易) 不可篡改,因此人们会为了获取这些区块空间而出竞相出高价,这就是为何我们看到以太坊 L1 上非常高昂的 Gas 价格。

02. 单片式区块链

单片式区块链 (Monolithic Blockchains) 是指试图在 L1 (主链) 上同时完成共识、执行和数据可用性这三件事的区块链。基本上来说,截至目前的大多数区块链,包括当前的 PoW 以太坊链,都是单片式区块链

单片式区块链的问题在于,它们受到了「区块链三难困境」的束缚。由于同一个区块链的 L1 层要负责提供使区块链之所以成为「区块链」的三个底层组件 (即共识、执行和数据可用性),优化其中一个属性就会对其他两个属性带来约束:

想要拥有更快的出块时间和更大的区块大小,从而提供更多的区块空间?那么可以减少能够与区块链保持同步的节点数量。这样一来,世界上的那些缓慢的计算机就不会拖累区块链的速度了。

想要更快地确认交易?可以减少节点数量,这样需要进行计算的计算机 (节点) 总数量就更少了。这样一来,我们就不会有一堆冗余的计算机来进行相同的计算工作;但也意味着,我们只能信任少数的几个节点,相信这几个进行繁重计算工作的节点不会对网络撒谎。

想要优化安全性和去中心化?可以减少区块空间的供应,**并降低节点的硬件要求,**这样所有人都可以参与到网络中来成为节点了,但这样一来,你的交易将需要花更长的时间来确认。

单片式区块链已经让我们走了这么远了,但现在它们正在达到可扩展性的极限。

单片式区块链的时代即将结束。

模块化的区块链时代正在到来。

03. 模块化的区块链

模块化的区块链 (Modular Blockchains) 采用了目前单片式区块链 L1 的三大组件 (共识、执行和数据可用性),并将它们进行了划分。就想劳动分工一样,将这三个组件进行拆分后,使我们能够优化每个组件,并生产出更好的产品,使得整体大于部分之和

(1) 通过 Rollups 实现模块化执行

Rollups 处理交易的速度要比 L1 主链快几个数量级,通过创建一个独立于以太坊 L1 的链下交易执行环境,并在处理完交易之后更新 L1 的状态,Rollups 无须承担共识和数据可用性的责任

Rollups 链不需要像高度去中心化的 L1 链那样关注共识和数据可用性;相反,Rollups 链可以自由地在共识和数据可用性方面做出任何牺牲,因为 Rollups 链以加密的方式与以太坊 L1 紧密关联。换句话说,Rollup 是基于一组规则通过在以太坊 L1 上发起一笔交易而创建的,Rollup 承诺遵守这一组规则。从 Rollup 链初始化的那一刻起,它就向以太坊 L1 做出了一个加密承诺,即它将遵守这些规则。

Rollups 的「最初承诺」为其自身设定了交易管理方式的限制 (也即,Rollups 承诺提交有关所有交易都是合法的数学证明),以及以太坊 L1 的安全性如何桥接至 Rollups 上,同时不会将 L1 缓慢的共识和受限的数据可用性移植到 Rollups 中。

在这笔初始化 Rollup 的交易中,给予了任何用户都可以将自己的资金从 Rollup 中撤出来的能力,这被称为「逃生舱」,意味着当某个 Rollup 网络崩溃或者变得怀有恶意时,用户可以通过一笔 L1 交易来跳出逃生舱。一个崩溃的 Rollup 网络就像是一个坏掉的电梯,只是此时的电梯变成了步行梯。

无论 Rollup 是否在线并正常运行,Rollup 与以太坊 L1 之间都存在一座「桥梁」,该桥梁允许以太坊 L1 的结算保证延伸到 Rollups 上面。

该桥梁将以太坊 L1 的安全性和去中心化连接到了 Rollups 的交易执行环境中。

有了这座桥梁,以太坊的每个模块相互补充;安全性模块 (PoS) 被添加到可扩展性模块 (Rollups) 中。一个模块的属性融入到另一个模块的属性中,这就是 Rollups 如何在不妥协的情况下同时实现规模化和去中心化。

Rollups 的维护成本几乎为零,而且 Rollups 网络在任何给定时间都仅需很少数量的节点处于活跃状态,同时这些节点也不需要为了保证安全性而承担昂贵的共识机制。以太坊 L1 提供了安全性,并维护去中心化,因此 Rollups 无需如此。

某些类型的 Rollups 甚至可以拥有与中心化服务器一样高的性能。实际上,对 Rollups 的进一步创新将可以使它们拥有比中心化数据库更高的性能。

(2) 通过 PoS 验证者实现模块化安全

PoS 共识机制创造了一个负责为系统提供安全性的无形对象,也即被质押在 PoS 网络上虚拟货币。这种使用区块链原生货币来验证区块链的方式,解耦了物理 (挖矿) 硬件与网络安全性之间的联系。

通过 PoS 机制,不再需要特定的计算机来负责网络安全,现在所有计算机都可以用于负责网络安全。由于 ETH 可以在任何联网的计算机上进行质押,这体现了为资产本身提供安全性的价值。

在 PoS 共识中,以前维护 PoW 网络的物理 (挖矿) 资金成本转变成了购买 PoS 代币的成本,从而提高了资产的资本效率。与物理挖矿硬件不同,PoS 资产不会随着时间的推移而退化,因此 PoS 验证者基本上不需要通过售出资产来支付运营成本。

就以太坊 PoS 信标链而言,将运行一个验证节点的经济成本降低至 32 ETH 和一台计算机,这增加了区块链验证者的潜在总数量。虽然 32 ETH 的成本依旧昂贵 (撰文时价值约 128,000 美元),但这已经比最小可行的 PoW 挖矿作业 (数千万美元) 低了一个数量级。此外,像 Lido 和 Rocketpool 这样的去中心化质押池允许用户将任意数量的 ETH 聚集起来进行质押,使得 32 ETH 的限制不再成为硬性限制。

PoS 网络消除了验证网络的硬件要求,使普通消费级设备也能够足够强大地参与区块链的验证。这就优化了区块链网络与硬件之间的联系。通过最小化硬件设备的作用,可以最大限度地提高区块链的可及性,并为最大数量的人参与区块链验证提供了可能性。PoS 将参与网络验证的资本要求降到了最低。

自以太坊 PoS 信标链上线以来,以太坊现在有了两个同质池,当新旧两条链合并时,这两个池就变成了一个模块化的网络安全池,也即所谓的「验证者池」,这将是以太坊获得其安全性的来源。

以太坊的开发者们表示希望看到有 1000 万枚 ETH 被质押进来才算「安全」:质押 1000 万枚 ETH,每名验证者质押 32 ETH,这就相当于网络中需要 312,500 名验证者。

将以太坊的安全性颗粒化为单个验证者实例,允许信标链将这些验证者实例导向任何需要这些资源的地方,从而给予了以太坊在如何分配其安全性资源方面最大的选择。

由于拥有一个可用的模块化安全资源池 (也即验证者池),这使得以太坊能够通过分片 (sharding) 来实现数据存储能力的模块化

(3) 数据可用性的最大化:分片

分片将使 L1 中可用的区块空间最大化。

所有区块链都有其可获取的安全性供应。比特币的安全性是全世界 (矿工) 可以生成的 SHA256 哈希值的供应;PoS 以太坊的安全性是验证者池中存在的以太坊验证者的供应。

PoS 以太坊有一个由所有验证者组成的「验证者池」,该池中的所有验证者会被随机选中来验证以太坊区块。当更多的验证者上线并向以太坊网络提供他们的安全性 (也即质押 32 ETH 并承诺遵守验证规则) 时,这将使以太坊网络更加安全。

当网络中添加分片链 (shards) 时,也能够让以太坊更具可扩展性。分片技术 (sharding) 允许在更多的分片链上进行「安全性再分配」,而不是将整个系统的安全性完全集中在一条链上。

让 30,000 名验证者 (每名验证者质押 32 ETH) 来保护一条单片式区块链,这是一种过剩的安全,也是一种低效的资源配置。而如果将这些验证者分配至多条分片链中 (最初将上线 64 条分片链),以太坊 L1 可以通过在每条分片链上分配约 4,500 名验证者,从而创造出 64 个以太坊的规模

这使得以太坊的可扩展性与其安全性呈正相关,当单片式区块链接近「区块链三难困境」的极限时,实施分片的区块链反转了规模与安全性之间的关系,将其限制因素转变成了增长因素。

以太坊将最初实现 64 条分片链,但其目标是增加至 1024 条分片链。随着摩尔定律的发展,以及所有的家用电脑变得越来越强大,分片链的数量和容量都会增加。

起初实现 64 条分片链并不意味着我们将以太坊的容量增加了 64 倍,而是我们拥有的「以太坊链」的数量增加了 64 倍,但每条链的大小 (容量) 将是现在的约 1/3,因此整体大小将增加约 18 倍,而不是 64 倍。

但是,如上所述,**随着物理硬件的改善以及以太坊验证者池的扩大,我们将能够增加分片的大小和数量,**将以太坊的可扩展性与摩尔定律联系起来。

信标链是系统资源的「调度员」。通过随机抽样,信标链将每名验证者分配至特定的分片链中,并在该分片链中负责验证工作。所有验证者会在每个 epoch (约 6.4 分钟) 重新被打乱。

04. 优化模块之间的协同作用

模块化设计的美妙之处在于,每个模块的优化都会放大其他模块的优化。有三个协同作用:

1. 随着更多的验证者上线,模块化的 PoS 安全性能够在更多的分片链上重新分配验证者,并能够安全地支持更多的数据。更好的去中心化→ 更大的规模。

2.L1 上更多的分片链会对 Rollups 的执行能力产生更大的影响。Rollups 可以将大量数据压缩并添加到 L1 分片链中,因此分片链提供的任何额外空间都会对 Rollups 上可用的空间产生巨大的影响。更大的规模 → 更快的执行。

** **

3.Rollups 上发生的净交易活动越多,购买 L1 区块空间时所支付的总费用就越多。为区块空间支付的总费用增加了 L1 验证者的收入。验证者的收入越多,就越有更大的动力吸引更多的验证者加入进来。在 L1 上增加更多的验证者也就为网络增加了更多的计算资源,这些计算资源可以用于创造更多的分片链。更多的分片链意味着什么?参考上面第 2 条。

更大的规模,更快的执行

通过将以太坊分片成 64 个不同的数据可用性层,我们为 Rollups 创造了更多的空间来部署成千上万的交易批次。对 L1 进行分片将会对 L2 上的 Rollups 的可扩展性产生了巨大的影响。由于 Rollups 将交易压缩成简洁的数据包,L1 上的任何数据增加都会在 L2 上创造多出好几个数量级的空间。

这正是以太坊能够实现微小交易成本的时候。实施分片的以太坊将为所有的 Rollups 打开闸门:可用的区块空间的增加,可以大幅降低分片之上的 Rollups 的费用。

经压缩的 Rollup 交易现在拥有了更多可用的区块空间供应。Rollups 将在其所有用户之间分摊 L1 交易成本。比如,如果在以太坊 L1 上部署一个大的交易包需要支付 1 ETH,那么这 1 ETH 的成本将分摊到这个交易包中的数千笔交易中。当我们拥有 64 条分片链可以用来部署交易时,每笔交易的成本应该会下降好几个数量级。

一旦这种情况实现了,Rollups 将能够自由地停止限制其可用的区块空间量 (正如目前的 Arbitrum One 网络那样),让 Rollups 的引擎真正运转起来。

分片与 Rollups 的结合将允许计算资源成为网络的资产,而不是负债。更多的计算机,不管其计算能力如何,都总是能够将其资源贡献给网络,并使这些资源得到有效利用,而不管该计算机能够提供多少资源。一台计算机可以是一名 Rollup 验证者,并帮助将 Rollup 的数据压缩和发送至 L1 上,或者也可以将其资源贡献给 L1 的验证者池,并帮助启动更多的分片链。

相比之下,将你的节点添加进单片式区块链中,这会对该网络造成另一个必须应对的瓶颈。要知道,单片式区块链无法处理比单个节点更多的交易量,由于单片式区块链的所有节点都需要处理所有交易,因此将你的计算机添加进单片式区块链中,只会在网络中增加另一台需要能够与整个网络保持同步的计算机。