# 理解模块化区块链基础设施

> 像 Bitcoin、Ethereum 和 Solana 这样的第一代区块链，背负着在同一层上完成共识、结算、执行和数据可用性的任务，因此被称为单体区块链。从设计上讲，单体区块链无法高效地完成所有这些任务，这就导致了区块链不可能三角的出现。

作者 Shodipo Ayomide，发布于 2022年10月30日。网页版本：https://blog.shodipoayomide.com/zh/understanding-the-modular-blockchain-infrastructure

![区块链架构相关的概念图](https://blog.shodipoayomide.com/banners/Understanding-The-Modular-Blockchain-Infrastructure.png)

像 Bitcoin、Ethereum 和 Solana 这样的第一代区块链，背负着在同一层上完成共识、结算、执行和数据可用性的任务，因此被称为单体区块链。从设计上讲，单体区块链无法高效地完成所有这些任务，这就导致了区块链不可能三角的出现。
区块链的特性包括去中心化、可扩展性和安全性。对单体区块链来说，它们不得不有所妥协，因为它们最多只能做到其中两项，而不是全部三项。比如 Bitcoin 为了去中心化和安全性牺牲了可扩展性，Ethereum 也是如此。
随着模块化区块链的出现，区块链不可能三角有望得到解决。模块化区块链是一种把一项或多项主要区块链任务外包出去的区块链。它的思路是，把区块链的核心任务拆分到多个层上，我们就能在各个层上分别做出显著改进，从而让区块链更具可扩展性、更高效。你可以把它看作一种分工。

# 区块链不可能三角

区块链不可能三角指的是，一条区块链无法同时做到安全、可扩展和去中心化。构建自己区块链的开发者，总是要面对一个恼人的抉择：在三种可能的特性中选择两种。

![](https://i.ibb.co/sCSxK6Y/images.png)

*区块链不可能三角示意图*

## 去中心化

去中心化是区块链最主要的吸引力。这正是人们选择加密货币而不是法币的原因。一条区块链要做到去中心化，硬件要求就不能成为参与的门槛，验证网络所需的资源也应该很低。

## 可扩展性

这是指区块链在不增加验证所需资源的情况下，应对交易处理量增长的能力。
可扩展性问题一直阻碍着区块链和加密货币走向大规模采用。为了具备竞争力，区块链需要发展到能够快速处理数百笔交易的阶段。区块链可以通过增大区块大小来扩展，但这会导致硬件要求提高。这会影响去中心化。

## 安全性

这是指抵御恶意接管的能力。一条好的区块链应该具备稳健的安全性，让恶意的第三方无法利用网络的漏洞。
维持安全性需要大量的算力，这可能会影响去中心化和可扩展性。
尽管已经有侧链、rollup、状态通道等方案被构建出来解决这个问题，但在本文中，我们要看的是模块化区块链所采取的方法

## 区块链的核心功能

**共识** - 共识是某个区块链网络的节点用来确定哪些交易有效、哪些无效的过程。共识机制是参与者用来达成共识的方式，常见的例子有工作量证明（Proof-of-Work）、权益证明（Proof-of-Stake）等。共识还为交易提供排序和最终性。

**执行** - 执行指的是节点处理发送到网络中的交易的方式，这会导致区块链的状态发生变化。

**数据可用性** - 区块链用来存储验证区块链状态变化是否有效所需的数据。区块生产者必须发布每个区块的数据，供网络中的节点下载和存储，而且这些数据必须能按需获取。单体区块链在一层上处理所有这些功能，而模块化区块链只专注于其中一两项，其余的都外包出去。

## 什么是模块化区块链

前面提到过，一条试图独自完成 3 项核心功能的区块链，会限制自身的容量和吞吐量，而模块化链则把系统拆分成若干可能的部分，并分别独立地处理它们。
在模块化区块链架构中，执行层可以独立于共识层和数据可用性层，从而让节点可以只专注于单独处理交易，而不必为了确保有效性去执行所有交易。

## 模块化区块链架构

在模块化区块链的架构设计中，三个层彼此独立工作，并组合在一起构成模块化技术栈。

![](https://i.ibb.co/vPKT8dB/FZ0-Czjo-VUAAq-Rcc.png)

*模块化区块链架构*

一条模块化区块链可以被设计成专注于以下一层或两层：

**共识层** - 一条模块化区块链可以被设置成只专注于共识，从而提供一套用来验证和核实交易区块的规则与准则。这能确保网络中的节点/参与者达成一致，从而在整个技术栈中建立安全性和去中心化。

**执行层** - 只负责处理交易的模块化区块链，典型的例子就是 rollup。在执行层，区块链只专注于处理交易，结算和最终性则依赖另一条链。

**数据可用性层** - 数据可用性层专注于存储交易数据，按需提供这些数据，并公开给所有人查看。Polygon Avail 就是一个例子。

## 模块化原则

模块化原则，或者说模块化设计，会把一个系统细分成更小的部分，称为模块，这些模块可以被独立地创建、修改、替换，甚至可以与其他模块交换，或在不同系统之间交换。模块化依赖于专业化，也就是说，每个模块只能执行少数几项特定的任务，但必须把它们做好。这正是模块化区块链赖以成立的原则。

## 模块化区块链与单体区块链

![](https://i.ibb.co/1spb9Lj/monolithic-to-modular.webp)

*单体区块链与模块化区块链*

### 模块化区块链的优势

**可扩展性** - 当一条区块链试图在一层上完成所有活动时，就会出现可扩展性问题。区块链不可能三角指出，一条区块链在它可能具备的三种特性中只能拥有两种，但当任务被分散到多条模块化区块链上时，提升可扩展性就成为可能。

**创建新区块链** - 当开发者全神贯注于让一条区块链只执行某一项特定任务时，与被设计成包揽一切的单体区块链相比，推出这样一条区块链会相对更快。由于开发者可以专注于某一项特定功能，比如执行，其他负责安全性和数据可用性的模块化区块链就可以很容易地接入进来。

**灵活性** - 模块化区块链比单体区块链更灵活，因为模块化区块链可以借助另一条链的优势。比如，执行层可以受益于父链的安全性，而父链则享有执行层的可扩展性。这就是 rollup 与 Ethereum 之间的关系。

### 单体区块链的优势

**安全性** - 单体区块链可以自己保障自己的安全，因为节点会记录交易，并且必须在彼此之间达成共识才能验证这些交易。

**效用** - 由于单体区块链在承担其他职责的同时还负责执行，从长远来看，它的原生币或代币可能会升值。

### 模块化区块链的缺点

**安全性** - 与单体区块链不同，模块化区块链的安全性依赖于其他层，这让它们受制于这些链的运行效率。如果安全层，也就是负责共识和数据可用性的那条链被攻破，整个模块化技术栈都有失效的风险。

**代币效用** - 由于用例有限，一些模块化区块链可能无法推高其原生代币的价值，负责数据可用性的那一层就是一个例子。

**复杂性** - 模块化区块链的设计相当复杂，需要具备专业知识的开发者参与。

### 单体区块链的缺点

**僵化** - 与模块化区块链相比，单体区块链没那么灵活，因为即使网络正在经历宕机，它们也无法把功能外包出去。

**可扩展性** - 对于不具备可扩展性的单体区块链，它们可以尝试增大区块大小和出块时间，但这会提高网络节点所需的硬件要求，进而导致中心化。

**执行低效** - 为了确保交易的有效性，节点会重新执行交易，这会导致延迟。

## 模块化区块链平台示例

**Rollups** - Rollup 被设计成专注于执行的模块化区块链。无论是 optimistic rollup 还是零知识 rollup，现在都充当执行层，负责执行智能合约和交易。Ethereum 则充当结算层，交易数据会在这里发布和存储。

**Validiums** - Validium 的运作方式也和零知识 rollup 类似，自己执行交易，然后把结果连同有效性证明一起提交到父链，但它们不在父链上存储数据，而是使用数据可用性委员会，或者像 Polygon Avail 这样的数据可用性网络。

**Polygon Avail** - Rollup 和 Validium 充当执行层，而 Polygon Avail 是一条充当数据可用性层和共识层的模块化区块链。这里的节点负责对交易数据进行排序、存储，并按需发布。

![](https://i.ibb.co/vvhN9Gj/20220925-115619.jpg)

*模块化区块链平台*

## Ethereum 是模块化区块链还是单体区块链？

Ethereum 诞生之初是作为一条单体区块链运行的，独自完成执行、共识和数据可用性。后来引入了 rollup，现在 Ethereum 可以把部分执行任务外包给 L2 方案，同时自己负责共识和数据可用性。
尽管 Ethereum 仍然在执行交易，但它正在通过实现分片，逐步转型为一条模块化链。
分片是指一个系统拆分成多个部分分别工作的过程。通过在各组成部分之间分配工作负载，它可以提升效率和产出。在 Ethereum 的语境下，它会拆分成 64 条分片链（子链），这些链会并行工作，每条链处理网络活动中不同的份额。

---

## 结论

既然两者各有优缺点，你可能会想，什么时候该选择单体区块链，什么时候该选择模块化区块链。在两者之间做选择，需要对项目的需求有充分的理解。
如果在整体规划中安全性是重中之重，单体区块链听起来是更合适的选择，但如果速度最重要，模块化区块链会是更好的选择。
