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
                 括以下操作.
   146   147   148   149   150   151   152   153   154   155   156