Page 172 - 《软件学报》2026年第6期
P. 172
吕永阳 等: XCMP 协议的形式化验证与改进: 提升跨链交互安全性 2491
PMN'.
(3) 钓鱼者: 接收并记录收集者发送的 PMN. 消息超时或不可用时, 对平行链进行判决和处罚. 验证每一个区
块发送前后的总承诺 PMN 是否相等. 总承诺不相等时, 调取平行链验证者中记录的消息标识 IDi、承诺 PMi 等信
息并进行对比验证, 作出处罚.
5.2 协议工作流
本节介绍 E-XCMP 协议的工作流程, 详细步骤可对应图 6, 其中红色标记的流程为扩展部分.
(1) 触发请求: 平行链 S 中的用户调用智能合约, 触发跨链数据发送给平行链 S 的 Collator S .
(2) 消息形成和承诺发送: Collator S 在收到跨链数据后, 形成以平行链 D 为目的地的跨链消息、消息标识和承
诺, 放入出口队列, 并计算出总承诺发送给钓鱼者 C.
(3) 轮询检验: 平行链 D 的 Collator D 通过轮询机制选择以自己为目的地的消息, 并接收智能合约的检验, 检验
通过后, 该消息经由单向通道开始向平行链 D 传递.
(4) 消息接收和承诺发送: 平行链 D 收到跨链消息后, 将其放入平行链 D 的入口队列中, 同时 Collator D 计算
出总承诺发送给钓鱼者 C.
(5) 消息验证和承诺检验: 平行链 D 的 Validator D 对接收到的跨链消息进行验证, 随后钓鱼者 C 对比发送前后
的总承诺进行检验.
(6) 打包区块: 验证通过后, Collator D 将队列中的跨链消息打包成区块, 并执行智能合约, 完成资产转移.
(7) 区块验证和区块添加: Collator D 将新生成的区块提交给 Validator D 验证, 验证通过后, 该区块被添加到中
继链尾部.
5.3 安全方案描述
针对每个 XCMP 协议不满足的 3 个安全目标, 本节将重点解释 E-XCMP 协议中的解决方法和相应机制.
(1) 目标 3 完整接收消息: 一个平行链要么接收另一个平行链发送的同一个平行链块中的所有消息, 要么都不
接收. 然而, 违反安全目标 3 表明, 由于缺乏完备的异常消息检测和处理机制, 将导致跨链操作的失败或结果不一
致, 严重影响系统的整体功能和用户信任.
为解决上述问题, 本文在方案中引用一种 Pedersen 承诺 [28] 机制. 该机制在收集者整合交易数据形成候选区块
M 时, 为每一条跨链消息 Mi 生成一个承诺 PMi. 当出口队列中每当发出一条消息时, 收集者将同一区块的消息的
承诺 PMi 进行合并, 待发送的消息达到总数 N, 形成总承诺 PMN. 随后, 总承诺 PMN 被发送给钓鱼者 C 等待验证
(该步骤对应第 5.4 节 (2) 消息发送准备). 待到区块 M 中的所有跨链消息 Mi 到达平行链 D 的入口队列, 平行链 D
的收集者将跨链消息 Mi 的所有承诺 PMi 以相同的方式进行合并得到 PMN'. PMN'发送给钓鱼者 C 验证二者是否
相等, 若相等则可以认为在消息发送和接收过程中没有发生篡改和丢失等恶意操作, 若不相等则表明区块 M 的跨
链消息 Mi 不再完整或完全, 钓鱼者 C 则从平行链 S 和平行链 D 中检索并对比每条消息的 IDi 和 PMi 等信息, 并
没收失败方部分 DOT 代币作为惩罚 (该步骤对应第 5.4 节 (5) 承诺验证).
Pedersen 承诺机制在跨链消息传递中起到了确保消息完整性和防止篡改的作用. 通过为每条跨链消息生成承
诺 PMi, 并将所有消息的承诺合并形成总承诺 PMN, 该机制使得消息发送方与接收方之间的通信可以被验证. 当
承诺不匹配时, 说明消息不完整或遭遇篡改, 钓鱼者 C 将介入并进行验证, 最终通过没收失败方的部分 DOT 代币
作为惩罚, 保障了跨链操作的安全性和一致性, 提升了系统的可信度.
(2) 目标 7 公平消息接收: 为防止发送平行链无限期地等待消息响应, 接收平行链需要在各个发送平行链之间
公平地接收消息. 然而, 初始协议缺乏严密的检测机制以保证平行链遵循轮询机制, 如果消息接收存在不公平现
象, 这将导致攻击者有可能实施拒绝服务攻击, 不仅破坏了系统的公平性和可靠性, 还削弱了用户之间的信任. 为
优化跨链消息传递的公平性, 本协议提出一种轮询机制和相应的轮询检测机制.
轮询机制如下, 当存在多个平行链有意向平行链 D 发送跨链消息时, 跨链消息被加入各个平行链的出口队列,
同时消息进入队列的确切时间 ti 被精确记录, 并作为重要信息嵌入平行链的区块头中 (该步骤对应第 5.4 节 (2) 消

