【区块链 | 分片技术】分片技术概述——区块链公链TPS解决方案(2)
目录
一、什么是分片
二、网络分片、交易分片、状态分片
1.网络分片
2.交易分片
3.状态分片
三、采用分片技术的公有链:以太坊 vs Zilliqa
1.以太坊分片概述
2.Zilliqa分片概述
3.以太坊与Zilliqa分片技术对比
四、总结
前言
面对公有链目前存在的低吞吐量的性能瓶颈,许多公有链项目都提出了不同的扩容方案。从方向上来说,可以分为链上扩容和链下扩容两个方向,分片技术是属于链上扩容的一种方案。
分片技术(Sharding)作为以太坊未来扩容方案的一部分,引起了广泛的市场关注。同时也有多个主打分片技术的新公有链项目加入了竞争,比如Zilliqa, Rchain, Quarkchain等,使这项技术在行业中的热度越来越高。
这篇文章作为区块链分片技术研究的第一部分将会介绍分片技术的概念。
一、什么是分片
分片技术的核心理念起源较早,在传统数据库领域首次提出。这一理论主要用于优化大型商业数据库的性能。其基本思想在于将大量数据划分为多个分片(shard),并将其分散存储在不同的服务器上以减少单个服务器的负载压力,从而显著提升整体系统的运行效率。
简单来说,分而治之是分片技术的核心思想。
采用分片技术的思想就是将复杂的区块链网络系统划分为多个独立运行的子网络组。每一个子网络都负责管理一组特定的节点资源以及相关交易数据。这种设计使得整个系统能够更加高效地进行资源分配和数据处理工作。具体而言,在这种架构下不同区域的交易请求会被智能地分配至相应的分片中进行处理。这样一来不仅能够显著减少单个节点的工作负担还能通过多线程并行技术实现更高的事务吞吐量和整体系统响应速度提升
传统的老牌公有区块链大多采用单一链式结构模式,在各个参与挖矿的算力节点之间展开竞争性扩张新区块链。鉴于新区块生成的时间间隔固定(如比特币每10分钟产出一个新区块),当越来越多的专业化算力设备加入到挖矿行列后,在保证新区块按固定时间间隔产出的同时计算难度随之显著提升。然而这一改进措施并未带来系统吞吐量的明显提升效果:比特币网络采用图形化展示其完整的交易处理流程(如图所示)。
传统比特币交易处理示意图
在引入分片技术后,在整个网络计算能力呈现线性增长的趋势下(即节点数量持续增加),伴随节点数量的增加而产生的分片数量也随之上升。这一变化使得交易处理效率实现了显著提升的同时,在某种程度上也进一步强化了系统的吞吐量表现。这一特性被定义为可扩展性,并被同时视为水平方向上的扩容能力的一种体现。该分片网络的具体交易处理流程如图所示:首先通过算法将待处理事务划分为若干独立的部分;随后分别对各子任务展开并行执行;最后将各个子任务的结果整合汇总完成最终输出
注

分片网络处理交易过程示意图
分片技术给区块链网络带来了如下好处:
理论上而言, 分片机制能够提升交易处理效率与确认速度的并行能力, 并最终使整个网络的数据传输速率大幅增强。
吞吐量翻番后得到显著提升,从而有效缓解了交易拥堵问题,并有助于降低转账手续费.
整个网络的整体处理能力得到了显著提升, 进一步颠覆了人们对加密货币交易效率不足的传统认知. 这一进步将为dApp的发展奠定坚实基础, 使得越来越多的应用能够充分利用分片技术实现分布式计算. 尽管单笔交易的费用有所下降, 但总体而言会提高参与者的盈利能力.
传统的以太坊共识链的状态数据均存于区块链系统中;每个节点都将维护所有相关状态的信息;从而造成了巨大的存储空间成本。然而,在分布式计算领域中存在一种称为状态分片的技术方案;这一方案展现出卓越的分布式存储能力;其具体实施将显著地缓解这一关键的技术挑战。
二、网络分片、交易分片、状态分片
基于不同的分片机制,该技术可划分为以下三种类型:网络架构(network sharding)、交易处理(transaction shard
ing)以及状态管理(state management)。这种分类有助于更好地理解其应用场景和工作原理。
1.网络分片
在区块链技术中,网络分片属于一种基础架构设计模式,在实际运行中表现为将整体的分布式系统划分为若干独立的子网单元体(即单个分片),其本质是将整个区块链系统划分为多个互不干扰却又协同运转的小型化服务单元体的结构组织形式。这种架构模式能够有效提升系统的扩展性与容错能力,在实际应用场景中实现了对各类交易请求的高度并发处理能力。
这里主要涉及到的问题是哪些节点应该被分配到哪些分片当中。

网络节点应该如何分片
⑴通过VFR来生成随机性
在网络分片的特性中,并行处理多个事务可以显著提升系统吞吐量。然而这一做法也带来了挑战:每个事务库之间可能缺乏冗余或者仅有有限程度的冗余。这意味着单个事务库内的事务执行结果往往会对整个系统的运行产生关键性影响。因此,在某些情况下,并非所有节点都应由单一掌控者所支配;相反地,在某些情况下,并非所有节点都应由单一掌控者所支配,则可能导致该区域事务处理权在少数人手中集中控制从而威胁到整体系统安全
因此,在网络安全领域中, 开发者需要引入一个有效的分类机制来对网络节点进行分区管理. 这将帮助他们准确判断哪些节点应当保留在各自的分片中, 并有效防止那些拥有控制多个特定分片能力的人发起的攻击.
而为了在区块链领域中最有效地防止少数人控制大量特定区块或分片等关键区域的资源分配问题,则应当构建一种基于概率的方法来实现资源的均衡分配。具体而言,在区块链技术中构建可验证随机性主要依赖于可验证随机函数(VFR, Verifiable Random Function)这一机制。这种机制属于一种非对称加密算法中的哈希函数类型,并且可以通过其特性赋予系统运行所需的不可预测性和公正性保障特性。通过这种方式进行的抽样能够有效抑制恶意节点对单一区块的过度占据,并确保网络的安全性和稳定性运行效率等关键性能指标得到充分满足。

某分片被人控制的后果
⑵ 可通过传统共识算法在分片中达成共识
然而,在仅通过随机分配机制将节点划分至片中这一做法尚显不足的情况下,则必须确保同一片内不同成员达成了意见的一致性——即如何实现共识目标。可采用的方式包括POW、POS、pBFT等共识机制。以维持系统的去中心化特性为前提下,则需努力提升每个片中的节点数量。

一个特定分片内节点达成共识示意图
2.交易分片
由于网络层切分为其他所有切分的基础架构,即交易切分必须首先完成网络层切分。在实际操作中,我们需要解决的核心问题是:哪些类型的具体交易应当按照何种属性分配至相应的数据块(碎片)中。
⑴ 基于UTXO的账本系统
在基于UTXO的记账系统中一单交易很可能包含多笔输入和多笔输出。我们难以根据地址划分一单交易以有效规避双重花费问题。最直观的方式是依据其hash值尾部数字来进行划分。
假设我们有4个分片,那么我们就按照交易hash值的最后两位比特进行分片。例如,一笔交易的hash值最后两位是10,则我们将该交易分配到第3个分片中进行处理(两位比特的值00,01,10,11分别对应于第1、2、3、4分片区)。
在这种情况中,当一个交易发起者同时启动了另一笔交易时,在与上一笔类似的情况下(即它们有相同的输入),但输出结果却存在差异。特别地,如果某笔交易的哈希值的最后两位数值为00,则该笔交易将被分配到第一个分片中进行处理。
若未采取相应措施,则这两笔交易将同步完成跨区域处理与验证流程,并可能导致形成跨区域的双重计价。

基于UTXO系统的交易分片示意图
为了避免双重转售(双花交易),分片1与分片3无法避免地需要进行沟通(即实现信息交流的过程)。然而,在实际操作中,“该笔交易被赋予了一个随机化的哈希值”,因此系统必须确保各个片段之间持续地交换必要的信息内容(即保证各片段间的信息交互)。有趣的是,“这样的沟通可能会对原有设计目标产生不利影响”。
⑵基于账户系统
针对基于账户系统的应用场景,在处理某类交易异常情况时表现出较高的效率。具体而言,在这种情况下每笔交易仅有一个唯一的输入端点,并且该输入地址会被记录在其对应的账户系统中。值得注意的是该系统设计使得在各个交易分片模块内实现信息共享与协作。因此,在按照发送者地址进行交易分片时能够确保同一账户产生的多笔交易被集中处理至同一数据分片内。这样一来,在单个数据分片内部即可实现对双花交易行为的有效监控与检测。
3.状态分片
相较于其他分片方式而言,在处理复杂性和管理难度上具有显著优势的状态分片机制。其核心在于实现对整个存储空间的有效划分,并通过分配特定区域的存储资源来实现数据分区。避免承担完整区块链状态的数据量这一设计理念使得每个节点仅需托管自己的数据片段即可完成整体网络功能的支撑。这种设计不仅降低了单个节点的负载压力,并且显著提升了系统在扩展性方面的性能表现。
⑴ 跨分片信息通信不可避免
在账户型系统中采用基于账户地址实现的状态分片策略,并且可以观察到这种架构下每个特定的分片仅存储系统的一部分状态信息。这与交易型分片不同,在后者中每个节点都会完整地保存整个网络的状态数据。
假设A发起了一笔交易,将支付给B一笔资金。该笔交易将由第一个分片负责处理,在该笔交易得到成功验证后,则必须向B所在的分片传输关于其新余额的信息。如果两个相关账户分别由不同的分片处理,则这将导致频繁的跨分片通信以及状态信息的频繁交换。这种跨分片通信可能会对状态分片的性能造成影响。

⑵数据的可用性是必须考虑的问题
在状态分片中存在两个主要问题其中之一的是数据可用性问题。我们需要考虑到一种特别的情况:当某些特定的状态分片因某种原因遭受攻击而暂时失效时(即发生脱机情况)。因为这些状态分片并未完全复制系统的所有信息(即未能实现全系统复制),所以整个网络无法对依赖这些失效分片进行交易验证。
该问题的解决方案包括定期备份数据节点或采取其他形式的节点备份措施。这些做法不仅有助于恢复因故障而不可用的数据资源,并且能够有效提升系统的容灾能力。然而这样做会导致部分节点必须完整保存系统的状态信息。同时这可能带来集中化管理的潜在风险。
⑶网络节点调整需要逐步进行
在设计网络分片机制时需注意的一个关键点是其弹性能力,在面对攻击与故障时必须具备应对能力。具体而言,在接收新节点加入的同时必须能够动态地将其分配到各个子网络中。简单来说,在一定时间段内完成资源的重新配置就显得尤为重要。
在状态分片的情况下进行节点重新分配具有挑战性。因为每个分片仅存储了部分状态信息,在对网络进行一次全面重构时必须采取相应的防护措施以避免可能出现的整体系统失效问题。为了避免系统出现断层的情况,在完成网络重构后需逐步推进各项优化工作,并保证每个分片在所有节点断开之前仍拥有足够的未重置节点数量。
在完成该分片的状态信息同步后才能正式加入并开始提供计算能力
值得注意的是,在区块链领域中存在一种特殊的架构模式——公链架构。这条架构模式能够灵活地整合多种特性模块,在实际应用中展现出强大的扩展性和兼容性。就其核心设计而言,“模块化”是这条架构模式最为显著的特点之一。“模块化”不仅体现在各个特性模块之间具有相对独立性以及互操作性较高的特点上;更重要的是,“模块化”这一理念还要求各个特性模块能够在不同应用场景下灵活切换和自由组合在一起。“模块化”这一理念贯穿于整个架构的设计过程之中。
三、采用分片技术的公有链:以太坊 vs Zilliqa
1.以太坊分片概述
为了提升系统的可扩展性能力, 以太坊2.0通过引入分片机制并采用链上状态分区(on-chain state partition)技术,成功实现了更高的吞吐量目标。在架构设计上, 该系统将整个以太网络划分为两层架构:其中顶层仍沿用现有主链设计,基本保持原有功能布局;而底层则由多个独立的分片链组成,主要负责特定范围内的计算任务。各层级之间的功能划分也有所不同:顶层负责高层面事务处理,底层则由多个独立的分片链组成,主要负责特定范围内的计算任务。
从这个角度看,在分片中产生的所有交易都会被包含于"校对快"(collation)中。如同侧链一样,在校对器(collator)的作用下,只有少量数据会被整合到主链上。
在碎片化链条上开展的交易活动被局限在特定的片段空间内;每个 shard validator 仅负责在其对应的 shard 区域内进行验证任务。
分片链借助 POS 机制与主链建立联系,并在这一过程中实现更高阶段的社会共识
整个流程主要包括以下几个关键环节:每个分片内部包含多个节点,在线作为分片验证人;采用POS机制进行交易验证工作;随后会生成一个校对区块;其中的具体内容是其头部字段信息被注入到主链中;需要注意的是,在此过程中具体发生的交易记录不在主链上存储。
在某种程度上来说,在某种程度上而言
2.Zilliqa分片概述
Zilliqa 采用 Pow 算法实现网络节点划分:确定 1 个 Boss 分片以及多个工作分片,并确保每个分片均包含至少 600 个节点。其设计灵感源自谷歌 Map-reduce 编程模型的概念。该系统将整个网络节点划分为两个阶段:
Map:每一次交易活动都会基于发起方的IP地址被分配至特定的工作片区域,在这些区域中应用pBFT共识机制对交易进行验证确认,并最终生成该工作片内的子区块段。
子区块通过工作分片发送至Boss分片后,在该块中进行整合与处理; Boss分片会对收集到的多个子区块进行验证和打包处理,并整合成一个完整的最终区块; 最终整合形成的完整区块会被存储于各个节点位置。
Zilliqa的分片技术涵盖网络分片与交易分片领域。该技术中各网络节点运行在同一空间中。其中各节点均运行于同一主链上,并且每个节点均保存完整的历史记录。综上所述,在提升系统处理速度方面效果显著。然而每个节点仍需完整保存所有历史数据,并未有效解决存储扩展性问题。
3.以太坊与Zilliqa分片技术对比
四、总结
在本文中阐述了分片技术概念的起源及其在区块链网络中的运用,并对分片技术的主要形式进行了概述:包括网络层面的分片、交易层面的分片以及状态层面的分片。最后对比分析了以太坊与Zilliqa所采用的不同类型的分片技术。在 blockchain 分片技术研究的第一部分我们将深入分析和探讨那些实际应用了该技术的一些区块链项目。
参考文献:
1
