Page 147 - 《软件学报》2026年第1期
P. 147

144                                                        软件学报  2026  年第  37  卷第  1  期


                 账户模型的状态实现方式中尤为突出, 主要原因是现实中少数热门账户往往会发起系统中大部分交易, 当热门账
                 户集中于同一分片时, 会导致分片的工作负载严重不均. 我们基于以太坊数据采用静态分配方法, 进行多轮次的交
                 易分配以评估分片的负载分布. 图          3  展示了在  8  分片下, 每轮注入    50 000  条以太坊交易的结果. 该方法会在分片之
                 间产生极度不均衡的交易分布.

                                                                           12 000
                                                 热分片
                                            8
                                                                           10 000
                                            7
                                            6                              8 000
                                           分片号  5 4

                                                                           6 000
                                            3
                                            2
                                                                           4 000
                                            1
                                                      注入交易轮次
                                                                           2 000
                                              图 3 哈希分配下分片工作负载分布

                    为解决上述问题, 大量研究提出了动态分配方法. 相较于静态分配方法, 该方法通过分析状态之间的关联性和
                 交易模式, 定期调整状态分配策略, 能够更加灵活地应对交易模式的变化, 有效降低系统的跨分片交易比例, 并且
                 优化分片负载均衡, 进一步提升系统的整体性能. 动态分配的具体实现包括基于图论的分配方法、基于机器学习
                 的分配方法以及交易级的状态调度方法. 表              1  对状态分配的各类方法的优缺点进行了总结. 此外, 动态分配过程中
                 涉及状态存储位置的调整, 需要状态管理机制来实现状态数据的高效管理与定位. 因此, 本节还将介绍动态分配环
                 境下的主流状态数据管理方法.

                                                 表 1 状态分配方法总结对比

                   分类    状态特征分析 动态适应性                    优点                            缺点
                 哈希分配        否         差            实现简单且分配高效                    分配固定, 缺乏灵活性
                  图分配        是        中等     基于历史数据识别状态特征, 实施图划分             周期性分配, 无法应对系统突然波动
                 状态调度        是         强       实时调度状态, 应对系统波动能力强               存在一定的调度决策计算开销
                 机器学习        是         强       可预测未来交易行为, 分配准确率高          训练成本高, 算法效果依赖输入数据的质量

                  2.1.1    基于图论的分配方法
                    一些研究    [15,40–45] 将状态分配转化为图模型上的子图划分问题          [46–48] . 在划分过程中, 通过减少不同子图之间的
                 边数量和平衡子图权重, 实现降低系统跨分片交易比例以及平衡分片工作负载的目的. 基于图论的分配方法通常
                 在分片配置时期执行, 系统将使用上一纪元的历史交易构建区块链状态关系图, 执行相应的子图划分算法, 从而为
                 下一纪元生成状态分配策略. 区块链状态关系图构建方法主要包括以下两种.
                    (1) 账户为节点    (如图  4  所示): 该构建方法适用于采用账户模型的区块链全分片系统. 具体来说, 系统利用收
                 集到的历史交易数据, 构建无向状态关系图              G(V, E). 在该图中, V  表示账户  (节点) 集合, E  表示交易   (边) 集合. 当
                 两个账户   v i  和  v j  之间存在交易时, 它们之间就会有一条对应的边        e ij . 边权重  w(e ij ) 表示两个账户之间的交易数量.
                 节点权重   w(v i ) 表示与该账户相关的交易总数. 基于状态关系图            G(V, E), 系统执行子图划分算法进行状态分配.
                              [15]      [45]       [46]
                    BrokerChain  和  X-Shard  采用  METIS  算法将图  G  划分为  K  个不重叠的子图, 每一个子图对应一个分片.
                 CLPA [42] 、TxAllo [43] 和  Estuary [44] 则使用了社区检测算法  [49,50] , 通过识别图  G  中联系密切的节点, 将其作为社区划
                 分子图. 这种方法确保了频繁交互的账户能够被聚集在同一分片中, 从而有效地减少跨分片交易. 此外, 图分配方
                 法在划分过程中通过限制各子图的节点权重                w(v i ) 之和, 以平衡分片间工作负载. 以     BrokerChain  为例, 在系统中
   142   143   144   145   146   147   148   149   150   151   152