Page 249 - 《软件学报》2026年第1期
P. 249
246 软件学报 2026 年第 37 卷第 1 期
3.1 跨分片提交协议
现有区块链系统主要依赖于两阶段提交协议 (2PC) 保证跨分片的原子性. 在第 3.1.1 节将介绍不同类型 2PC
的运行流程与对应系统, 并分析 2PC 在跨域部署时产生的网络开销. 为了减少网络开销, 第 3.1.2 节将介绍其他跨
分片提交协议, 例如 Meepo [131] 按 epoch 同步的策略执行跨分片交易, Monoxide [127] 的原子提交协议, Pyramid [132] 分
层架构下的提交协议, BrokerChain [133] 利用 Broker 账户执行跨分片交易等提交协议.
3.1.1 两阶段提交协议
GeoChain [29] 、ByShard [44] 、AHL [41] 、RapidChain [40] 、OmniLedger [62] 等系统使用两阶段提交协议保证跨分片
交易的原子性. 参考 ByShard [44] 和 Qanaat [134] 对 2PC 协议的分类, 本文将 2PC 协议分为中心化 2PC 和分布式 2PC.
其中, 中心化 2PC 存在一个中心化实体 (可以为客户端 [62] 、某个分片 [40] 或独立的协调分片 [41] ) 负责分片间的协调
工作. 相比而言, 在分布式 2PC 中, 分片间直接交换执行结果, 而无需中心化实体判断是否提交. 换言之, 集中式
2PC 需要分片将决策发往中心化实体判断是否能提交, 需要更多网络往返. 而分布式 2PC 需要更少的网络往返即
可达成共识, 但由于分片间以广播的方式传输决策, 其通信开销较高.
中心化 2PC 的典型系统为 AHL [41] 、RapidChain [40] 、OmniLedger [62] . 如图 11 所示, 中心化 2PC 在执行跨分片
交易时, 用户将交易 T 1 发往协调者 Shard A. 当按照分片策略将 T 1 划分为子交易后, 将包含相应子交易的 Prepare
消息发送到对应分片 Shard A 和 Shard B. 值得注意的是, 为了避免协调者的拜占庭行为, 需要使用分片内共识或
超时机制 (协调者为用户, 如 OmniLedger) 来消除节点的拜占庭行为.
T 1
L 1,1
F 1,2
Shard A Consensus Consensus
F 1,3
F 1,4
L 2,1
F 2,2
Shard B Consensus
F 2,3
F 2,4
图 11 中心化两阶段提交协议
当分片 Shard B 收到对应的 Prepare 消息时, 分片的主节点判断对应子交易是否能在当前分片完成提交, 并返
回同意或拒绝投票到协调者. 为了避免拜占庭节点左右决策, 分片 Shard B 内同样需要共识决策.
当且仅当所有分片的回复均为同意时, 协调者才能发起提交流程. 和 Prepare 类似, 协调者生成 Commit 消息
并发送到所有参与分片, 参与分片在收到 Commit 消息后提交分片对应的子交易并更新分片负责的账本. 反之, 若
某些分片 (如 Shard B) 无法执行交易并回复拒绝时, 协调者广播 Abort 请求到所有分片以终止该交易.
AHL [41] 使用可信执行环境 (TEE) 进行分片内共识, 减少了分片内共识的通信开销, 并提高了分片内容错. 其通
过在 TEE 中维护共识消息日志使得恶意节点无法向不同节点发送拜占庭消息, 从而让拜占庭容错模型降为仅崩
溃容错模型. 也就是说, 分片内只需要有 2 f +1 的节点数就可以保证系统的活性与安全性.
OmniLedger [62] 提出了使用客户端驱动的 2PC 协议 Atomix, 将分片间的协调转化为分片和客户端间的协调.
由于需要客户端实时监控各分片的执行结果, OmniLedger 需要高性能的客户端来驱动分片间的信息交换, 且客户
端必须向整个网络广播, 通信开销较大.
[135]
Chainspace 是首个支持智能合约的分片区块链, 同时保护了用户的隐私性, 对 2PC 进行了改进提出了 S-BAC.
类似于 OmniLedger 的 Atomix 协议, 但不是简单的客户端驱动, 必须有 BFT 共识过程.
RapidChain [40] 利用了 UTXO 交易的性质, 将跨分片交易拆分为数个分片内的子交易, 交易可通过分片间的路
由协议被送往指定分片, 减少网络通信开销. 同时, RapidChain 在分片内采用同步网络模型, 其采用的同步 BFT 共
识可达到 2f +1 拜占庭容错. 其还采用流水线技术进一步提升了共识的吞吐率.
GeoChain [29] 提出了一种改进的客户端驱动 2PC 协议 (inputs to output cross-shard commit, IOCC) 处理跨分片

