Sharding
分片(Sharding)是一个术语,用于描述将区块链拆分为更小的、分区化的区块链(称为分片)的过程,以便于数据段管理、提高可扩展性并增加交易速度。[1][2][3]\
概述
分片是区块链中源自传统数据库的一种技术,其目的是为了实现可扩展性,使网络能够每秒处理更多交易。分片起源于一种称为数据库分区(也称为水平分区)的技术。该过程涉及将大型数据库划分为较小的单元,称为“分片”。这种划分有助于提高数据库信息的访问效率。[2]
每个分片由其自身的数据组成,使其与其他分片相比具有独特性和独立性。数据库分片(或简称分片)是数据库或搜索引擎中数据的水平分区。每个分片都保存在单独的数据库服务器实例上,以分散负载。数据库中的某些数据存在于所有分片中,但某些数据仅出现在单个分片中。每个分片充当该数据子集的唯一来源。
分片可以帮助减少网络的延迟或缓慢,因为它将区块链网络拆分为独立的分片。然而,分片也存在一些安全隐患,即分片可能会受到攻击。[7]
分片减轻了处理区块链网络上所有交互和交易的单一链的压力。每个分片都有自己的账本,可以处理自己的交易,并持有一组独特的智能合约。[1][3]
优点
- 可扩展性:分片非常适合大型分布式企业应用。它允许快速执行命令或查询。存储细分是分片模式的一个关键特征,它使物理基础设施能够以受控的方式进行扩展。[8]
- 去中心化:除了对区块链可扩展性的积极影响外,分片对去中心化也具有重要意义。分片促进了更多节点参与网络并处理交易。因此,这增强了网络内的去中心化程度和权力的公平分配。这种安排可能会增强安全性,因为在广泛的去中心化网络中不存在单一的中央漏洞点,有助于提高安全水平。[5]
- 性能:通过将数据分布在多台机器上,分片数据库可以处理比单台机器更多的请求。分片是一种称为水平扩展或向外扩展的扩展形式,因为引入了额外的节点来分担负载。[8]
缺点
虽然分片似乎是区块链可扩展性问题的潜在解决方案,但其实现也面临一些挑战。与区块链分片相关的两个主要缺点是:复杂性和安全性。
- 复杂性:由于网络分区的复杂过程和必要的状态重新分配,在现有的区块链网络中引入分片是一项艰巨的任务。分片大大增加了软件开发项目的复杂性。需要额外的逻辑来对数据库进行分片,并将查询正确引导至正确的分片。这增加了开发时间和成本。[3][4]
- 安全隐患:围绕分片的安全性担忧包括黑客攻击或分片接管,即一个分片攻击另一个分片,导致信息丢失。实施不当可能导致双重支出风险,严重影响网络的整体安全性。此外,分段的区块链可能变得容易受到攻击,因为黑客可能会发现更容易控制单个分片,因为操纵单个分片所需的哈希算力降低了。如果一个分段被攻破,恶意交易可能会传播到更广泛的网络,从而对整个系统造成干扰。[3][6][7]
- 基础设施成本:通常需要更复杂的网络网格,这会导致实验室和基础设施成本的增加。[9]
- 专业知识要求:分片模式要求数据库管理员(DBA)既具备特定的领域专业知识,又具备所涉及数据库技术的最佳实践经验,以便有效地管理分片细分。[8]
- 网络流量:分布在大量地理位置的分片可能会因为过多的网络流量而导致性能下降。[8]
以太坊分片
以太坊最初由 Vitalik Buterin 开发(当时为 以太坊经典),作为一个统一的区块链系统运行。尽管它能够容纳越来越多的去中心化应用和用户,但所有交易都必须通过有限的一组矿工。因此,这种集中处理可能导致网络拥堵。[2]
2018年,Vitalik 在一份关于以太坊区块链分片更新概念验证的出版物中添加了一条评论:[17]
“一个尚未完全解决的挑战是确定如何激励以及何时允许跨链连接(cross-links)。”
以太坊分片是一种增加以太坊网络可处理交易数量的方法。该概念涉及将整个以太坊网络拆分为多个部分,称为“分片”。每个分片包含其独立的内部状态,这意味着拥有一组独特的账户余额和智能合约。[14]
在2021年的一篇帖子中,Vitalik 强调了分片的重要性:[15]
“分片是以太坊可扩展性的未来,它将是帮助生态系统支持每秒数千笔交易、并允许世界上大部分地区以可负担的成本定期使用该平台的关键。”
此外,在2018年12月,Buterin 发推文称:[16]
“未来带有分片的权益证明(Proof-of-stake)区块链效率将提高‘数千倍’。”
Danksharding
Danksharding 是一种增加以太坊网络可处理交易数量的方法。它是以太坊成为真正可扩展区块链的途径。Danksharding 将为以太坊带来海量空间,供 Rollups 存放其压缩后的交易数据。
该概念涉及将整个以太坊网络拆分为多个部分,称为“分片”。每个分片包含其独立的内部状态,这意味着拥有一组独特的账户余额和智能合约。
以太坊的路线图包括一个名为 Danksharding 的协议升级。此升级旨在使二层网络(Layer 2)上的交易对用户而言尽可能便宜,并应将以太坊扩展到每秒超过 100,000 笔交易。Proto-Danksharding(也称为 EIP-4844)是这一过程中的中间步骤。
Proto-Danksharding 引入了可以发送并附加到区块的“数据对象”(data blobs)。这些 blob 中的数据无法被 EVM 访问,并在固定时间段(1-3个月)后自动删除。这意味着 Rollups 可以更便宜地发送其数据,并将节省的成本以更便宜的交易形式传递给终端用户。
由 Rollup 提交的数据 blob 必须经过验证,以确保 Rollup 没有违规行为。这涉及证明者重新执行 blob 中的交易,以检查承诺是否有效。这在概念上与执行客户端使用 Merkle 证明在第一层(layer 1)检查以太坊交易有效性的方式相同。[13]
Zilliqa 分片
Zilliqa 是一个高性能、高安全性的区块链平台,它使用分片进行扩展。Zilliqa 中的分片有多种形式:网络分片、交易分片和计算分片。
- 网络分片:这是一种允许将 Zilliqa 网络划分为较小的节点组(每个组称为一个分片)的机制。例如,假设一个拥有 1,000 个节点的网络,那么可以将其划分为 10 个分片,每个分片由 100 个节点组成。这些分片可以并行处理交易。如果每个分片每秒能处理 10 笔交易,那么所有分片加起来每秒就能处理 100 笔交易。
- 交易分片:每当一笔交易到达网络时,它都会被分配给一个特定的分片。分配由交易发送地址的前几位决定。然而,这种分配策略仅适用于支付交易。为了妥善处理支付和智能合约交易,采用了不同的解决方案,即对交易进行分类,以便为每个类别制定单独的分配策略。
- 计算分片:Zilliqa 在计算分片方面选择的方法是,每个节点都将拥有一份当前状态的副本,但交易历史将被拆分成碎片,这样并非每个人都必须拥有完整的副本。




