区块链分片

分片(Sharding)是区块链扩容的链上解决方案之一,目前市场上的众多项目均采用了分片技术。

在这里插入图片描述

1. 分片原理

1.1 分片概念

分片概念源于数据库领域。分片指数据库中数据的水平分区(将表的不同行分到不同的分区),每个分片都保存在一个单独的数据库服务器实例上,以分散负载。

在这里插入图片描述

当前的区块链中,每个节点存储所有的状态,同时处理所有的事务,在保证了安全性的同时限制了可扩展性。区块链分片的基本思路是将区块链网络中的节点分成若干个相对独立的分片,单个分片处理规模较小的事务甚至只存储部分网络状态,多个分片并行处理事务,理论上整个网络的吞吐量将会提升。

在这里插入图片描述

1.2 分片层级

区块链分片的层级由下到上分别为:网络分片(Network Sharding)、交易分片(Transaction Sharding)和计算分片(Computational Sharding)以及状态分片(State Sharding)。

在这里插入图片描述

(1)网络分片

网络按照一定规则选取节点形成分片。实施分片的第一步就是创建分片,因此网络分片是交易分片、计算分片和状态分片的基础。

(2)交易分片

交易分片:将交易按某种规则分配到不同分片。其思路为,按一定规则将交易分配到同一个分片处理,则既能够达到并行处理的目的又能避免双花问题的出现。在不同的记账方式下,对交易分片的要求有所区别。

目前区块链网络中存在两类记账方式,分别为UTXO(Unspent Transaction Outputs,未使用交易输出)模型和账户/余额模型,典型代表分别如BTC和ETH。

UTXO模型:在BTC交易中,每笔交易都会有一个或多个输出,UTXO指尚未花费的区块链交易的输出,可以作为新交易的输入,而已花费的交易输出不可再花费,类似纸币交易情况下的支付和找零,顾客将一张或多张纸币支付给店家,店家则将一张或多张纸币找零给顾客。

账户/余额模型:系统记录每个账户的余额,在进行交易时,系统检查账户是否有足够余额用于支付,类似于银行转账时,银行会记录每个账户的余额,只有账户余额大于所需转账金额时,交易才能够进行。

UTXO模型下,交易分片需要跨分片通信。在账户/余额模型下,由于一笔交易只有一个输入,因此只要将交易按照发送者地址进行分片,就可以保证同一个账户的多笔交易在同一个分片中处理,有效防止双花。在UTXO模型下,一笔交易可能包括多个输入和多个输出,仅仅按照地址分片无法避免双花问题,分片之间不得不进行通信,如果限制跨分片交易将限制平台的可用性,而允许跨分片交易则不得不权衡跨分片通信的成本和性能提升带来的收益。

(3)计算分片

计算分片:只有网络的一个子集(如一个分片)执行计算,从而高效执行运算密集的任务。

(4)状态分片

状态分片:特定的分片只存储部分状态,而不是完整的区块链状态。状态分片能够减少状态储存冗余,状态分片是最为理想化的分片方式,但是面临着一系列挑战,如跨分片通信、数据有效性和数据可用性等。

区块链网络中验证节点的主要任务包括:

1)处理交易,随着处理交易量的不断增长,节点将需要更多的计算能力;

2)将已被验证的交易和已完成的区块中继给其他节点,随着需要中继的交易的数量不断增长,节点将需要更多的网络带宽;

3)存储整个网络的状态,随着状态的增多,节点将需要更多的存储空间,即便TPS不增加,节点的存储需求依然会不断增加。

这三项任务中的每一项都对验证节点提出了越来越高的要求,分片一方面能够降低验证节点的负载,网络分片、交易分片和计算分片可以很好地解决计算能力瓶颈,而状态分片则能够解决网络带宽和存储能力瓶颈,另一方面降低了需要验证事务的节点的数量。

2. 分片挑战

对于目前的区块链而言,分片是一个令人兴奋和充满希望的方向,但是分片在提升了效率的同时也带来了新的问题,主要包括分片内部的安全和效率问题,以及跨分片交易引发的跨分片安全和效率问题。

分片的第一步即网络分片,将网络中的节点按照某种规则分配到不同的分片,这里的问题是,单个分片的算力以及单个分片内的验证节点数量远低于分片之前的整个区块链网络,从而导致对采用PoW共识的单个分片发起51%攻击,或者对采用非PoW共识的分片发动女巫攻击(Sybil Attacks)的成本也极大地降低了。因此,采用何种共识机制、如何划分分片大小以及如何为分片分配节点以防止恶意节点控制分片变得至关重要。现有的分片设计主要通过某种随机性分配验证节点,降低作恶者控制单个分片的概率,针对恶意分叉问题可以通过将部分分片链上的区块连接到信标链(信标链负责协调系统的参与者,如随机分配验证节点到分片及从分片接收状态更新等),并将分叉选择规则设定为首选交叉连接到信标链的链。对女巫攻击问题的解决方案包括要求节点提供抵押物或执行PoW等,以提升作恶成本。

在这里插入图片描述
接下来是交易分片,如前文所述,在UTXO模型下,一笔交易可能包括多个输入和多个输出,进行跨分片通信需要权衡通信导致的成本和性能提升带来的收益。另外跨分片交易往往不可避免,极端情况下,系统内的交易全部是跨分片交易,此时系统的性能将低于分片之前。对跨分片交易问题的解决方案包括同步和异步两种方式,同步方式下,当跨分片交易发生时,各个分片的验证节点协作执行跨分片交易;异步方式下,跨分片交易在各个分片中异步执行,即在有足够证据表明发送方所在的分片已执行其负责的任务后,接收方所在的分片处理其负责的任务,这种方式相对简单且容易协调,因此目前更为普遍。

通过分片理论上能够提升整个网络层面的性能,但是对于单个分片仍然可能存在单点过热问题,即单个分片内部仍然存在交易量过大导致拥堵的可能。

以上仅仅是进行网络分片和交易分片/计算分片面临的问题,没有实施状态分片的情况下,每个验证节点都存储有整个区块链网络的状态,可以自由地从区块链中读取任何数据,但一旦实施状态分片,分片内的验证节点只存储区块链网络的部分状态,从而引发了数据有效性和数据可用性等问题。

数据有效性。数据有效性问题是关于如何识别无效区块,比如作恶者在分片1上创建无效区块B(导致甲的账户上凭空产生1000个通证),并且随后创建有效的区块C,继而发起跨片交易,将凭空产生的通证转移到乙的账户。这种情况下,分片2的节点验证该笔交易之前的一个区块或N个区块都是徒劳的,因为作恶者总是可以在无效区块后创建N+1个有效块。通过单个分片验证相邻的多个分片能够解决单个分片创造无效区块的问题,但是当多个分片合谋时,这种方式将不再有效。目前这一问题的解决方案包括渔夫(Fisherman)和SNARKs(Succinct Non-interactive Arguments of Knowledge,简洁的非交互知识论证)。渔夫方案的思路是在链间传递区块头信息时设置质疑期,期间任何诚实节点都可以提供区块无效证明,该方案的第一个问题在于质疑期需要足够长,从而诚实节点能够下载区块、验证区块以及准备发起质疑;第二个问题是质疑的存在为攻击者提供了新的攻击媒介,要求质疑者提供抵押一定程度上是有效的,但是攻击者提出无效质疑仍然可能是有利可图的,比如出于某种认定阻止诚实节点提出的质疑通过。第二种解决方案是通过使用某种加密结构证明某个计算是正确执行的,其问题在于创建证明本身需要一定时间、系统设计更为复杂、可能出现无效证明以及无法用于图灵完备智能合约语言的协议。

在这里插入图片描述
数据可用性。数据可用性包括两个方面,一是特定分片由于某些原因脱机(如受到攻击),依赖于脱机分片的事务无法继续执行,这一问题可以通过备份网络状态解决,但是备份节点将不得不存储系统的整个状态并可能因此产生中心化的风险。第二个方面是由于节点恶意删除历史数据等原因导致区块变得不再可用,针对这一问题目前有监护证明(Proof of Custody)、纠删码(Erasure Codes)以及SNARKs或STARKs(Scalable Transparent Arguments of Knowledge,可扩展知识论证)等解决方案。监护证明的思路是让公证人在分片之间轮换,下载一个区块证明其可用性,为避免公证人始终选择证明能够下载区块,公证人需要提供相应证明或者抵押资产。利用纠删码技术即使区块只有部分可用仍然能够恢复整个区块,因此轻节点收到区块时可以下载区块的部分内容,从而节点能够确认区块是可用的。

在这里插入图片描述

最后分片并不是静态的,由于遭遇攻击或新节点加入等原因,分片需要进行动态调整。但在状态分片下,动态调整必须考虑可能导致的状态同步失败及系统中断等问题。

3. 分片技术的关键理论与方法概述

随着数据库的逐渐扩容,为了简化各个节点的存 储空间,数据库开始采用分片技术来提高数据的存储 效 率。 区 块 链 和 数 据 库 本 身 存 在 一 些 不 同 因 素 ,区 块链分片技术不仅要保持对各分片中存储账本的维护, 更要有利于区块链上动态交易的验证。因此,将分片 技术引入到区块链中,不仅需要将区块链上的各种属 性(网络、交易、状态)进行分片,同时也要考虑区块链 本 身 复 杂 的 数 据 结 构 和 存 储 形 式

3.1 分片配置

在 区 块 链 分 片 技 术 中 ,首 先 要 实 现 网 络 分 片 ,网 络 分 片 通 常 要 考 虑 分 片 规 模 、分 片 安 全 性 、分 片 方 式 等 因 素 ,分 片 过 程 通 常 使 用 随 机 函 数 来 实 现 。

(1)Elastico

Elastico使用 epochRandomness 函数进行计算, 每 个 节 点 都 有 自 己 的 IP、PK(公 钥),结 合 随 机 数 epochRandomness 计算出满足下式条件的 nonce:

O = H(epochRandomness||IP||PK||nonce) ≤ 2γ - D 其 中 :D 为 预 定 义 的 网 络 节 点 解 决 PoW 问 题 的 工 作 量大小参数;γ 为预定义的 H 函数的输出位数。

每 个 节 点 根 据 自 己 的 O 值 确 定 分 片 位 置 ,分 片 中 的 各 个 节 点 为 了 确 认 彼 此 ,需 要 进 行 广 播 。

(2)RapidChain

RapidChain的 分 片 配 置 只 进 行 一 次(即 原 文 中 的 Bootstrap 环节),之后不断地进行共识和重配置。在 分片配置环节,整个网络持续地从低一层的节点中构 造 sampler graph 以形成一个随机二分图,在所有节 点完成计算后,将每个 group 内哈希值最小的节点选为 subgroup 成员,再由 subgroup 中的成员随机组合成更 高一层的 group,被选中节点发送消息告知全部节点, 重复上述过程直到选出 root group。root group 负责选 择参考委员会(Reference Committee)成员,参考委员 会完成所有节点的随机划分分片。

通 过 以 上 2 种 分 配 方 式 可 以 看 出 ,在 协 议 的 开 始 阶 段 对 节 点 进 行 分 片 的 过 程 ,需 要 各 个 节 点 进 行 自身分片位置计算以及在同一分片节点之间进行广 播 ,最 终 完 成 分 片 内 节 点 信 息 的 交 流 。 分 片 函 数 的 设 计 往 往 以 节 点 身 份(IP 、P K 、H ash)作 为 参 数 。

3.2 分片重配置

为了保证各个分片的安全性并防止节点之间作恶 行为发生,在一个分片纪元之后,从原有分片中取出一 部分节点并与其他分片中的节点进行交换,当有新节 点加入时,需要对新加入节点进行分配。上述过程通 常称为分片重配置(Reconfiguration),分片重配置的 方式分为全随机分片和部分随机分片 2种。

(1)二次全随机分片

对所有节点进行重新分配,既能彻底防止节点之 间进行作恶[39],同时也能将新节点加入分片中。新加 入的节点需要解决 PoW 问题,在解决 PoW 问题后,节 点会得到一个相对应的值(即上文 epochRandomness 函 数中的 O),供分片时计算分片位置使用。如果节点错 过当前纪元的分片环节,则等待下一个纪元再确定分 片位置。解决 PoW 问题提高了节点加入分片的成本,但可以有效防止女巫攻击(Sybil Attack).

Elastico 在每个分片纪元结束后使用 Randomness 函数对整个网络的节点进行重新配置。在每轮的最后, 由最终委员会(Final Committee)计算出 Randomness 以 供下一轮随机分片使用,随机数被广播至全网,整个网 络的节点通过随机数重新计算自己所在的分片位置。

虽然二次全随机分片能够最大程度地保证分片 后 区 块 链 网 络 的 安 全 性 ,但 是 在 重 配 置 的 过 程 中 ,整 个 网 络 对 于 交 易 的 验 证 停 滞 ,全 网 都 要 在 重 配 置 前 后 进 行 新 旧 账 本 交 接 ,在 每 次 的 二 次 全 随 机 分 片 期 间 ,整 个 网 络 都 要 为 分 片 重 新 进 行 计 算 和 广 播 ,无 论 在 开 销 还 是 时 间 上 ,都 大 幅 降 低 了 整 个 区 块 链 的 性 能。因此,提出 MVCom 方案,其对 Elastico 协 议 的 分 片 重 配 置 设 计 进 行 优 化 ,通 过 设 计 分 布 式 算 法,为 每 一 轮 若 干 个 区 块 链 分 片 选 取 出 最 有 价 值 的 部 分 委 员 会 ,同 时 支 持 处 理 分 片 委 员 会 的 动 态 加 入 和 离 开 ,该 机 制 可 以 在 分 片 区 块 链 的 交 易 吞 吐 量与分片内交易等待时延之间找到一种平衡。

(2)部分重分配

在保证整个区块链系统网络安全的前提下,将部 分分片节点随机进行重分配,既能保证区块链系统的 安全性,又可以降低开销,减少重配置过程的等待时间。

研究人员在 RapidChain 中设计有限布谷鸟原则 (Bounded Cuckoo rule)[43],在 每 个 epoch 中 都 通 过 参 考 委 员 会 将 其 他 委 员 会 分 为 2 类 ,分 别 是 活 跃 成 员 占大多数的活跃委员会和不活跃成员占大多数的消 极 委 员 会 。 当 有 新 节 点 加 入 时 ,参 考 委 员 会 会 将 新 节 点 随 机 加 到 某 个 活 跃 委 员 会 中 ,并 把 该 委 员 会 中 的固定数量节点随机加入到不同的消极委员会中, 既 实 现 了 对 新 节 点 的 分 片 处 理 ,又 调 控 了 消 极 委 员 会 和 积 极 委 员 会 之 间 的 活 跃 节 点 数 量 ,间 接 提 高 了 整个区块链的分片活跃度。

在 进 行 重 配 置 的 过 程 中 ,除 了 需 要 进 行 迁 移 的 节 点 外 ,分 片 内 的 其 他 节 点 仍 然 正 常 进 行 交 易 验 证 , 从而大幅降低了重配置过程对区块链性能的影响。

(3)自由选择重分配

SSChain在分片重配置上充分考虑用户需求 , 当 有 新 节 点 加 入 时 ,新 节 点 可 以 根 据 增 益 函 数 GPH (BR=BlockReward,HP=HashPower,BI=BlockInterval) 选 择 目 前 收 益 最 高 的 分 片 加 入 ,而 在 当 前 分 片 的 收 益较低时可以退出并加入到收益高的其他分片。 GPH 函 数 综 合 考 量 分 片 出 块 收 益 、出 块 间 隔 以 及 当 前 哈 希 算 力 ,而 哈 希 算 力 的 分 配 又 综 合 了 对 主 链 算 力 和 分 片 算 力 的 分 配 ,既 体 现 了 对 链 安 全 性 的 考 虑 (即 对 于 算 力 的 宏 观 分 配),又 充 分 考 虑 到 用 户 的 个 人意愿。CPH 函数计算如下:

在这里插入图片描述

相 较 前 2 种 重 分 配 方 式 ,自 由 选 择 重 配 置 方 案 能够通过人为操作使得整个区块链网络达到收益最 大 化 的 动 态 平 衡 ,但 是 其 对 于 恶 意 行 为 的 抵 御 能 力 低于区块链系统调控下的重配置方案。

3.3 片内共识协议

在完成分片配置后,区块链需要进行交易共识,共 识分为片内共识和跨片共识。片内共识要求同一分片 内各个节点按照所在分片的协议进行共识和广播,最 终得出整个分片的共识结果,片内共识协议主要分为 基于 PoW 的片内共识协议和基于 BFT 的片内共识协议。

(1)基于 PoW 的片内共识协议

虽然 PoW 共识庞大而复杂的计算过程消耗了大 量算力,但是其结合一定节点特征的数字运算优势在 部分场景中受到人们的青睐。基于 PoW 的片内共识 协议通常在计算过程中以节点身份或所在分片编号为 参数进行运算,节点身份标号或所在分片标号具有唯 一 性 ,因 此 ,它 们 可 以 作 为 打 包 块 的 标 识 符 。

SSChain 和 Monoxide 均采用 PoW 作为片内共识 协议。在 Monoxide 中,分片在解决一个 PoW 问题的时 间内出不多于剩余其他分片数量的块,然后将多个块 交由其他分片进行验证并再次出块,通过 2 层共识结 构确保交易的合理性。如图所示,Monoxide 采用连 弩挖矿(Chu-ko-nu Mining),将每个共识组的防御能力 提升到 51%,每次出块时 Hash 函数覆盖多个刚要出块 的块头进行计算,同时这些块头共用一个 nonce,编号 b 的当前共识组将这 m 个块头按序排列,构造 Merkle 树, 然后通过哈希计算覆盖<MerkleRoot,b,m,nonce>数据 结 构 ,在 出 块 时 ,相 关 信 息 会 被 广 播 到 特 定 的 共 识 组 i (b ≤ i<b + m),确保其他每个分片只出一个块,因此,即 使个别共识组有延迟也不影响其他块的出块。

在这里插入图片描述

(2)基于 BFT 的片内共识协议

很多协议的片内共识常会选择使用 BFT 类型的算 法,如 Elastico 采用拜占庭共识协议,OmniLedger 采用基于 ByzCoin的改进 ByzCoinX,RapidChain 采用 gossip,Sharper 采用 PBFT。基于 BFT 的共识协议 通过分片内多个节点验证共识来保证交易的安全性和 有效性。

Zilliqa在各个分片内以较高频率运行 PBFT 共 识,PBFT 共识具有最终交易性、能耗低等优点。传统 PBFT 共 识 中 的 主 要 环 节 包 括 pre-prepare、prepare、 commit 这 3 个阶段,prepare 与 commit 这 2 个阶段的通 信复杂度为 O(n2)。Zilliqa 采用两轮的 EC-SChnorr 多 重签名来代替传统 PBFT 共识中的 prepare 和 commit 阶段,从而将 PBFT 共识的通信复杂度降为 O(n),其共 识流程如图所示。

在这里插入图片描述

3.4 跨片共识协议

在 片 内 共 识 时 ,片 内 各 个 节 点 经 过 彼 此 间 的 广 播 可 直 接 进 行 交 流 。 在 跨 片 共 识 时 ,由 于 所 存 储 的 信 息 不 相 交 ,不 同 分 片 之 间 各 个 节 点 在 交 易 验 证 过 程 中 需 要 交 流 账 本 状 态 ,因 此 跨 片 交 流 的 基 本 单 位 是 各 个 分 片 ,不 同 分 片 执 行 共 同 的 跨 片 协 议 以 实 现 共 识 。 跨 片 共 识 的 主 要 方 式 包 括 交 易 原 子 化 、交 易 集中化和采用类路由协议。

(1)交易原子化

交 易 原 子 化 是 一 种 跨 片 交 易 处 理 方 式 ,将 原 交 易 分 解 成 最 小 的 子 交 易 ,在 不 同 分 片 之 间 传 递 子 交 易。子交易一般为对某个分片的输入交易或对某个 分 片 的 输 出 交 易 。 通 过 交 易 原 子 化 处 理 ,一 笔 跨 分 片交易可以视作若干笔客户端参与下的片内交易。

OmniLedger 提出 Atomix 协议对跨片交易进行处 理,当客户端发起一笔跨片交易时,分解后的子交易经 过不同的分片进行验证,当得到交易接受通知时,客户 端再发起一笔附上接受凭证的资金解锁请求到需要输 出交易的分片,从而完成交易;如果有交易在分片中验 证失败,则客户端向其他验证成功的分片发送丢弃交 易请求并将锁住的资金退还。OmniLedger 的做法虽 然在理论上可以实现由不同分片验证交易和不同分片 输出交易的目标,但是当客户端不发送资金解锁请求 或交易废弃请求时,就会存在资金锁住的情况,当有恶 意节点进行大量低额度的交易提交时,也会在各分片 间 造 成 极 大 压 力.

(2)交易集中化

交易集中化是指将跨片交易集中到指定链上或 指 定 节 点 进 行 统 一 处 理 ,指 定 链 上 或 节 点 上 存 储 了 跨 片 交 易 所 需 的 全 部 账 本 数 据 ,既 能 对 跨 片 交 易 进 行 验 证 ,又 能 降 低 跨 片 交 易 传 播 的 难 度 。

在 Ethereum 2.0的结构设计中,信标链(Beacon Chain)作 为 该 架 构 的 核 心 ,负 责 连 接 主 链 以 及 管 理 各 个 分 片 。 信 标 链 是 Ethereum 原 链 的 一 条 侧 链 ,运 行 Casper FFG 共 识 。 信 标 链 可 以 验 证 Ethereum 2.0 中 的 跨 分 片 交 易 是 否 发 生 双 花 ,并 且 给 各 个 分 片 提 供最终确定性。当系统中跨分片交易数量过多时, 信标链本身的局限性可能会成为跨分片交易的性能 瓶颈。当前 Ethereum 2.0 仍未到达部署分片的阶段, 因 此 ,信 标 链 结 合 分 片 链 来 处 理 跨 片 交 易 的 方 式 存 在广阔的发展空间。

(3)交易类路由协议

RapidChain 提 出 的 委 员 会 间 路 由 协 议(Intercommittee Routing Protocol)以及 Sharper、AHL,都考 虑到将跨片交易直接在不同分片之间进行路由处理 的 相 似 设 计 ,本 文 将 此 类 跨 片 协 议 称 为“ 类 路 由 协 议 ”。 类 路 由 协 议 指 将 交 易 在 不 同 分 片 之 间 进 行 路 由 传 播 ,而 非 直 接 对 交 易 进 行 分 解 。

RapidChain 对 需 要 进 行 跨 片 处 理 的 交 易 ,由 分 片 中 的 任 意 节 点 根 据 路 由 表 进 行 路 由 ,路 由 表 中 存 储 loga n 个 最 近 委 员 会 中 loga loga n 的 节 点 数 据[54],路 由 通道只要建立后就可以多次使用,例如,需要将交易 从分片 A 路由到分片 C,而 A 到 B、B 到 C 之间存在通道, 则可以通过 A→B→C 的路由通道将交易 a路由成分片 C 的交易 a′,从而将跨片交易转化为片内交易。

3.5 状态存储

状 态 分 片 将 整 个 网 络 的 账 本 状 态 分 片 存 储 ,各 个 分 片 维 护 一 部 分 账 本 数 据 ,能 够 有 效 减 少 区 块 链 网 络 节 点 的 存 储 负 担 。 然 而 ,各 个 分 片 的 数 据 不 相 交 不 仅 会 导 致 跨 片 交 易 的 验 证 极 为 困 难 ,节 点 在 不 同分片之间进行重配置时需要进行大量的数据交 接 ,也 会 降 低 账 本 数 据 的 安 全 性 。 因 此 ,有 研 究 人 员 提 出 对 账 本 存 储 进 行 部 分 分 片 的 方 案 ,相 较 比 特 币 设 计 ,该 方 案 能 降 低 数 据 冗 余 ,较 好 地 处 理 跨 分 片 交 易 ,具 有 更 高 的 灵 活 性 和 实 用 性 。

(1)全分片存储

在 全 分 片 存 储 模 型 中 ,整 个 区 块 链 账 本 被 分 成 若 干 份 互 不 相 交 的 账 本 存 储 在 分 片 节 点 中 ,各 个 分 片 维 护 自 己 的 账 本 ,整 个 区 块 链 网 络 的 各 个 分 片 合 起来拥有完整的账本。

OmniLedger 是 典 型 的 全 分 片 协 作 式 账 本 ,各 个 分 片 存 储 完 全 不 同 的 数 据 ,这 样 就 将 交 易 验 证 过 程中 数 据 的 交 流 交 给 跨 片 共 识 协 议 完 成 ,同 时 在 重 配 置过程中节点也需要对不同分片间的数据进行交 接。当选择在每一个 epoch 后进行分片内节点更新 的 方 案 时 ,必 然 会 有 新 加 入 分 片 的 节 点 ,而 节 点 的 账 本 更 新 会 造 成 数 据 迁 移 。 有 些 协 议 通 过 设 置 state block 的 方 式 来 简 化 数 据 迁 移 过 程 ,当 每 一 个 epoch 结束后,设置一个 state block 对之前的块进行总结并 且 由 整 个 分 片 进 行 验 算 以 确 认 该 块 正 确 无 误 ,新 加 入 节 点 可 以 从 state block 开 始 直 接 对 新 交 易 进 行 验证。

状态分片中账户状态划分策略不合理将导致各 个分片的交易负载不均衡以及跨分片交易比例过高 的 问 题 ,为 此 ,BrokerChain提 出 一 种 新 的 分 片 架 构 ,以 实 现 对 分 片 状 态 的 动 态 划 分 和 调 整 。 该 分 片 协议根据一定时间内的历史交易信息构建一个账户 交 易 状 态 图 ,并 对 其 进 行 划 分,从 而 对 存 储 在 各 分 片的账户状态实现动态调整与重新配置。账户状态 动态调整策略可以在减少跨分片交易比例的同时实 现分片间的负载均衡。

考虑到基于分片机制的区块链可能存在交易分片 不均衡的情况,为此,研究分片联盟链的云 端资源分配对区块链吞吐量的影响,其基于随机优化 理论框架,设计针对分片联盟链的资源分配算法,该算 法可在一定程度上缓解区块链交易分布不均衡的问题。

(2)半分片存储

Sharper 是 许 可 区 块 链 下 的 分 片 协 议 ,其 将 整 个 账 本 存 储 成 DAG 分 布 式 账 本 ,当 存 在 跨 片 交 易 时 , 由 不 同 分 片 共 同 创 建 状 态 账 本 并 存 储 ,因 此 ,同 一 份跨 片 交 易 在 不 同 的 分 片 中 都 需 要 进 行 存 储 ,跨 片 交 易在所有参与的相关分片中都存在数据冗余。

洪 梓 聪 等提 出 一 种 层 级 分 片 的 区 块 链 系 统 Pyramid,该 系 统 允 许 某 些 分 片(称 为 桥 接 分 片)存 储 多 个 其 他 分 片 的 区 块 ,充 当 分 片 间 桥 梁 的 作 用 ,桥 接 分片可以对跨片交易直接验证并进行 CoSi共识,将 其打包为包含跨片账本数据的跨分片区块,从而提升 区 块 链 系 统 的 事 务 吞 吐 量 ,降 低 事 务 确 认 延 迟 。 BrokerChain基 于 动 态 状 态 划 分 策 略 提 出 一 种 新 的 跨 分 片 协 议 ,以 提 高 跨 分 片 交 易 处 理 的 效 率 ,在 进 行 状态划分的过程中,系统允许一部分普通用户通过自 愿 抵 押 一 定 资 产 来 充 当“ 中 间 人 账 户 ”,中 间 人 账 户 的 状态会被系统分割成 2 个或多个部分,分别存储在 2 个 或多个分片中,从而参与到若干个跨分片交易的协调 中 ,该 文 提 出 的 跨 分 片 协 议 可 以 减 少 跨 片 交 易 延 迟 , 提高跨片交易执行效率。

4. 分片方案的优劣势

相比于其他链上扩容方案,分片方案的主要优势在于通过并行处理事务提升效率,同时减少计算或存储的冗余,一定程度上保证了非中心化,理论上能够无限扩展。相比于链下扩容方案,分片方案保证了交易链上进行,一定程度上兼顾了非中心化,但是由于分片将网络进行了切分,导致作恶成本相对降低,因此分片方案的安全性问题需要关注。

总体而言,分片方案的主要问题在于安全风险较高,实施周期较长,目前仍存在一系列技术难题有待解决。

在这里插入图片描述

5. 分片技术的现有方案分析

近 年 来 ,分 片 技 术 不 断 更 新 迭 代 ,在 吞 吐 量 、时 延 、共 识 协 议 的 方 式 等 方 面 都 得 到 优 化 ,提 升 了 分 片 技 术 的 鲁 棒 性 和 可 实 践 性 。 从 下表可 以 看 出 :无 许 可 区 块 链 仍 然 是 分 片 技 术 的 主 流 方 式 ,以 比 特 币 为 基 础 的 分 片 技 术 更 加 成 熟 ;许 可 区 块 链 的 应 用 场 景 较 少 ,但 是 近 年 来 相 关 的 分 片 技 术 仍 然 有 所 发 展, 许 可 区 块 链 将 节 点 可 信 度 交 付 给 TEE 硬 件实 现 , 可以给予系统更优的拜占庭容错率以及更加灵活的 分片和共识方式。

在这里插入图片描述
此外,从表 1 也可以明显看出,近年来分片技术的 吞吐量取得大幅提升。不同技术在验证时所使用的实 验设备和方式不尽相同,将吞吐量、时延等数据作为协议性能衡量指标具有可行性,但是不能一味地为了实 现高吞吐量、低时延等目标而忽略了分片技术的完整 性 、安 全 性 和 简 洁 性 。

猜你喜欢

转载自blog.csdn.net/qq_40713201/article/details/126064004