Page 146 - 《软件学报》2026年第1期
P. 146
苏琳萱 等: 区块链状态分片技术综述 143
首先, 每个状态 d i 需要被分配到一个分片 s j , 即:
K ∑
f(d i , s j ) = 1, ∀d i ∈ D (1)
j=1
其次, 系统中所有分片的状态数据集合的并集必须覆盖整个状态数据集合 D, 即:
∪
K
{d i | f(d i , s j ) = 1} = D (2)
j=1
在上述约束条件下, 状态的分配包含以下两个优化目标.
● 降低跨分片交易比例: 当一笔交易的相关状态数据存储在不同的分片时, 该笔交易即为跨分片交易. 定义系
统的跨分片交易的数量为 c, 即:
∑
{ }
c = I f(d from , s i ) = 1∧ f(d to , s j ) = 1∧i , j (3)
t i ∈T
其中, I 为指示函数, 当条件为真时返回 1. 目标是尽可能降低系统中的跨分片交易比例 c/m.
● 平衡分片工作负载: 定义分片 s i 的工作负载 L i 为其处理的交易数量, ¯ L 为系统的负载均值. 使用方差来衡量
分片负载均衡程度, 即:
1 K ∑ 2
(L i − ¯ L) (4)
K
i=1
设计目标为尽可能平衡各分片负载, 降低系统的负载均衡方差.
综上所述, 状态分配方法的设计目标是在满足约束条件, 即公式 (1) 和公式 (2) 的前提下, 设计一种分配方案,
能够最小化跨分片交易数量, 同时平衡各分片的工作负载.
根据状态分配的执行频率, 可将其分为静态分配和动态分配两种类型. 静态分配仅执行一次, 后续不再进行状
态调整; 而动态分配则允许通过调整各分片中的维护的状态来优化分配策略, 以适应环境的变化. 静态分配通常采
用哈希函数实现, 只需对输入数据 (例如账户地址) 进行哈希运算即可生成唯一的分片标识符, 计算复杂度通常为
O(1). 然而, 由于该方法缺乏灵活性, 忽略了状态间的关联与交易特征, 在降低系统跨分片交易比例和实现分片负
载均衡这两个优化目标上表现不佳, 具体表现如下.
(1) 跨分片交易极高: 由于哈希函数的随机性, 静态分配方法可以视为均匀随机选择, 一笔交易跨分片的概率
[36,37] 表示交易的输入输出数量之和, v 表示需要参与验证该笔交易的分片
可以表示为 1− P(u,v,k), v = 1 . 其中, u
数量, k 为系统中的分片数量. 当 v=1 时,即表示该交易的所有输入输出均位于同一分片内,此时 1− P(u,1,k) 即可
计算出该交易是跨分片交易的概率. P(u,v,k) 的计算公式如下:
1, if u = v = 1
( ) u−1
1
, if v = 1
k
k −v
P(u,v,k) = (5)
· P(u−1,v−1,k), if u = v
k
k −v v
· P(u−1,v−1,k)+ · P(u−1,v,k), otherwise
k k
在基于账户模型的系统中, 交易跨分片概率为 P(k) = 1−(1/k) (即 u=2). 当 k = u = 2 时, 一笔交易跨分片的概率
为 75%. 当 k = 3 时, 交易跨分片的概率将迅速超过 95%. 随着分片数量的增加, 系统中几乎所有的交易均为跨分片
交易 [10,36–39] . 与普通的片内交易相比, 跨分片交易的处理复杂性显著增加. 片内交易仅需在单个分片内完成处理, 而
跨分片交易的处理需要多个相关分片间的协同处理, 这一过程不仅增加了分片间的通信频率, 还引入了额外的同步
机制, 从而显著增加了计算开销和通信开销. 因此, 高比例的跨分片交易将严重限制全分片系统性能的进一步扩展.
(2) 分片负载不均: 该问题是指各分片处理的交易数量存在显著差异, 从而导致部分少数分片面临交易量过度
集中的“热分片”现象 [15] . 热分片的出现不仅会增加系统平均交易确认延迟, 还会降低系统吞吐量. 这一问题在采用

