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

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


                 此, Monoxide [127] 提出了原子提交协议, 将跨分片事务划分为数个分片内的子事务, 并由发送方将这些子事务转发
                 到目标分片执行. 接收方在收到子事务后即可立即执行, 而不必和发送方做进一步协调, 将数次跨域跨分片的通信
                 减少为一次, 极大地降低了事务的执行时间. 但是, 原子提交协议是最终一致而非强一致的, 不适用于复杂的智能
                 合约事务   [47] . 换言之, 其仅支持所有接收方的子事务均一定能提交的跨分片事务, 例如从发送方发起的转账事务.
                 此外, Monoxide 还提出了诸葛连弩挖矿 (Chu-ko-nu mining), 即允许一个节点同时参加多个分片的共识协议, 来提
                 升分片抵抗拜占庭节点的能力. 然而, 由于共识协议本身是不可扩展的, 诸葛连弩挖矿通过增加分片内的参与节点
                 数, 从而也会增加了区块共识完成的时间.
                    Meepo [131] 使用  Cross-epoch  和  Cross-call 来处理复杂的跨分片智能合约事务, 事务无论涉及多少个分片均可
                 在一轮共识中提交. 其中, Cross-epoch      代表执行一个区块需要的跨分片通信次数, 而                Cross-call 则代表在每个
                 Cross-epoch  期间, 发起分片会将跨分片的数据包 (包括分片           ID、智能合约地址、参数等信息) 发送给其他分片.
                 在最后一次    Cross-epoch  结束后, 分片收集全部的数据包执行并提交交易. 在跨域部署时, 由于分片内节点会分散
                 在多个数据中心, 每次       Cross-epoch  都会产生一次跨域往返通信. 因此, 对于复杂智能合约, 使用               Cross-epoch  和
                 Cross-call 可能会带来比  2PC  更高的跨域协调开销. 除此之外, 若区块内某个事务在执行时被终止, Meepo                   需要回
                 滚整个区块重做所有事务, 这也会产生额外的跨域通信, 影响系统性能.
                    在跨域环境下, 跨分片提交协议          (如  2PC) 需要多次的跨域协调工作. Pyramid      [132] 针对跨分片事务进行分层设
                 计, 由在多个分片内重叠的        b-Shard  来对所涉及的跨分片交易进行共识, 由于          b-Shard  存有所有涉及分片的账本信
                 息, 因此可以本地对事务有效性进行验证, 对于非法事务提前判断不进行两阶段提交从而减少了跨域通信次数. 不
                 同于每个节点只属于一个分片的传统结构, Pyramid             额外选择一些节点充当         b-Shard  同时保存  A  和  B  两个分片的
                 交易. 在跨域异构的网络环境下, Pyramid        的分层结构可以在设计节点分配算法时将计算、存储, 通信能力较高的
                 节点分配至分层分片系统的较高层, 以更高效地完成分层共识, 提高跨域共识效率.
                    CoChain [124] 允许一些分片被拜占庭节点攻占. 通过建立分片间共识组              (consensus on consensus), 保证当每个分
                 片内拜占庭节点数量少于         2/3  且共识组内失效的分组数量少于          1/3  时, 提供安全性和活性. 因此, 与传统分片区块
                 链相比, CoChain  可以提供更高的安全性. 详细来说, CoChain         共识组内共识分为       Pre-prepare、Prepare、Commit
                 这  3  个共识阶段, 在  Pre-prepare 阶段分片接收来自同一共识组受监控分片的共识结果, 就结果是否有效达成分片
                 内共识; 在  Prepare 阶段使用正确分片替换拜占庭分片与每一轮共识间重新分配节点所属分片等手段保证共识协
                 议的正确性. 在跨域部署时, CoChain      相比于传统系统因为分片数量的提升拥有更高的吞吐率. 但由于共识组内节
                 点的规模更大, 并且跨多个数据中心, 共识组内共识的网络开销大于分片内的开销, 因此                          CoChain  交易提交的延迟
                 也会相应提高     [124] .
                    Prophet [123] 在分片架构下提出了一种确定性并发控制算法 (见第            2.3  节) 来减少传统  2PC/OCC+2PC  的性能损
                 失. 在跨域部署时, Prophet 通过在执行前对事务进行确定性排序来解决事务间的冲突, 避免了使用传统                           2PC  执行
                 跨分片事务, 并减少了跨分片事务在执行时所需的跨域协调和通信开销. Prophet 由各个分片中的节点自由组合产
                 生侦查联盟, 并通过激励机制使得诚实节点更倾向于留在诚实的侦查联盟中, 以减少失败概率; 由各个分片中节点
                 组成的拥有完整合约状态的侦查联盟来进行预执行, 由序列分片根据预执行结果对事务进行确定性排序. 执行阶
                 段在片内根据排序结果进行确定性执行, 并验证读写集与预执行结果是否一致, 如不一致则将该事务标记为无效
                 事务, 随后在校正阶段分片间共享验证结果以提交或中断事务, 并将无效事务的节点标记为恶意节点, 以供侦查联
                 盟中其他节点参考. Prophet 也采用了文献        [104] 的技术, 排序阶段可以与执行并发, 在排序时使用更加细粒度的排
                 序, 并对读写依赖的交易进行重排序.
                  3.2   账本数据结构
                    分片区块链的账本结构可以被分为两类, 一类为多子链的存储结构, 另一类为有向无环图 (DAG) 的存储结构.
                 多子链的存储结构被广泛应用在大多数分片区块链中, 如                  Elastico、Monoxide、Saguaro  等. 这些系统中, 每个分片
                 维护一条子链, 子链内的区块使用哈希指针相连接, 而子链间没有做显式的连接 (如哈希指针等). 对于跨分片交易
   246   247   248   249   250   251   252   253   254   255   256