Page 151 - 《软件学报》2026年第1期
P. 151
148 软件学报 2026 年第 37 卷第 1 期
(1) 状态迁移的正确性: 状态迁移必须保证数据的一致性和完整性, 确保迁移后的状态能够正确反映原始分片
中的数据. 此外, 迁移机制需要具备防御恶意行为的能力 [60,62] , 以抵抗如交易操纵、静默攻击及重放攻击等可能影
响状态正确性的安全威胁.
(2) 状态迁移的高效性: 状态迁移过程应尽可能减少对系统吞吐量和运行效率的影响. 在迁移期间, 部分交易
的处理可能因状态数据的移动而受到暂停, 因此迁移机制需要优化执行效率, 减少迁移带来的额外开销.
根据状态迁移的执行时机, 现有的状态迁移机制可分为周期性迁移和动态迁移两类, 分别在系统的配置阶段
和共识阶段执行. 本节将对两类状态迁移机制进行介绍, 表 2 对比了两类迁移机制的特点.
表 2 状态迁移机制对比
分类 触发时机 实现原理 优点 缺点
生成状态块记录分配结果与状 不影响系统共识; 实现机制 动态适应性差; 无法根据系
周期性迁移 配置阶段执行一次
态信息, 实现状态迁移 简单 统波动调整状态
将迁移操作封装为交易, 通过 动态适应性强; 可应对系统 需要额外的锁定机制避免交
动态迁移 共识阶段动态执行多次
交易锁定机制实现动态迁移 波动 易中止
2.2.1 周期性迁移
周期性迁移机制以系统的纪元为单位, 在每个纪元的配置阶段周期性执行, 系统将根据最新的状态分配结果
完成状态迁移. 在 BrokerChain 中, 系统架构由一个分区分片 (P-Shard) 和多个工作分片 (M-Shard) 组成, 其中 P-Shard
负责基于图论方法执行全局状态分配, M-Shard 负责共识过程并生成包含交易的普通区块. 在配置阶段, P-Shard
依据最新的交易数据更新状态图, 对状态进行重划分, 并生成状态块 (state block, B t ) [36] , 记录最新的状态分配方案
及状态数据. 随后, P-Shard 将 B t 广播至所有 M-Shard, 各分片根据 B t 执行状态迁移, 确保各节点在后续的共识阶
段能够正确验证交易并更新状态数据. 为了确保迁移的正确性, BrokerChain 采用 PBFT 共识机制保证状态块 B t 的
唯一性. 此外, 系统引入 Cuckoo 规则, 定期轮换 P-Shard 和 M-Shard 的成员, 防止节点的恶意加入或退出. 相较于
传统的区块链状态同步机制 (节点需要下载并验证完整的交易历史), BrokerChain 通过状态块 B t 直接记录了系统
当前的最新状态, 使节点在同步时无需回溯所有历史交易, 仅需同步状态块中的数据即可获取当前状态, 显著减少
了数据同步的规模.
为了进一步减少状态数据同步的开销, tMPT [63] 基于状态块 B t 的内部存储结构, 提出了一种修剪后的默克尔
压缩前缀树 (trimmed Merkle patricia trie, tMPT), 提高配置阶段的状态数据同步效率. 在账户余额模型的区块链系
统中, 默克尔压缩前缀树 (MPT) 被广泛用于存储系统中的所有账户状态信息. 然而, 相关研究表明 [64] , 以太坊的历
史数据中仅 3% 的账户在一周内发生交易, 5% 的账户在一个月内发生交易, 这意味着大部分账户的状态数据在短
时间内几乎没有变化. 然而传统的状态块记录着所有状态数据, 造成不必要的传输开销. 因此, tMPT 通过裁剪不常
用的账户状态数据, 仅同步近期活跃账户的状态信息, 而非完整的账户状态数据, 进一步减少了配置阶段传输的数
据量, 提高了状态迁移的效率.
周期性迁移在系统的配置阶段执行, 不会影响正常的分片共识流程. 然而, 该方法存在一定的局限性, 即在共
识阶段遇到交易负载波动时, 系统无法实时调整状态分配, 可能导致分片负载失衡, 进而影响系统的整体吞吐量.
2.2.2 动态迁移
动态迁移机制在系统的共识阶段被动态触发, 可以满足状态动态调整的需求. 在查阅的相关文献中, LB-Chain [60]
和另一项研究 [65] 提出了基于锁的动态状态迁移机制. 其基本原理是在状态迁移阶段, 对状态数据及其相关的交易
进行锁定. 在此期间, 不允许对该状态数据的任何修改操作, 以避免因迁移过程中的数据不一致而导致的交易中
止. 我们首先对基于锁的状态迁移问题给出形式化定义, 并明确其中涉及的符号及意义.
s src , s dst ∈ S 分别表示迁移的源分片和目标分片, d i ∈ D 为被迁移的状态. d i 的相关交易集合记为 T i = T in ∪T out ,
其中, T i 和 n T ou 分别表示从该状态转入和转出资金的交易集合. 定义迁移过程 M : D×S ×S → D M(d i , s src , s dst ) 包
,
t
括以下操作.

