Page 168 - 《软件学报》2026年第6期
P. 168

吕永阳 等: XCMP   协议的形式化验证与改进: 提升跨链交互安全性                                            2487



                 timestamp?:  Z
                 size?:  Z
                 metadata?: Metadata
                 M: Message
                 states, states': Parachain↔ParachainState
                 ΔRelaychainState

                 M.S=S?
                 M.D=D?
                 M.CCdata=ccdata?
                 M.timestamp=timestamp?
                 M.size=size?
                 M.metadata=metadata?
                 states'
                  =states
                   ⊕{(S?
                      7→ mkParachainState((states S?).ingressQueue,
                     ((states S?).egressQueue  ∧ 〈M〉)))}
                                 ∧ 〈M.metadata&
                 metadatas'=metadatas
                    (3) 消息接收模式    (ReceiveMessage)
                    在消息接收模式中, 平行链         D  的收集者节点在向所有其他收集节点发送请求时, 发现平行链                   S  的出口队列中
                 有以平行链    D  为目的地的跨链消息, 并且消息         M  在  D  的出口队列的队头. 收集者随后检查平行链            D  与平行链  S
                 之间是否已经建立了单向通道. 如果通道存在, 将消息                M  添加到平行链    D  的入口队列. 具体见代码      8.

                 代码  8. ReceiveMessage.
                 states, states': Parachain↔ParachainState
                 S, D: Parachain
                 M?: Message
                 M?.D=D
                 M?=head(states S).egressQueue
                 mkChannel(S, D) ∈ openChannels
                 ⇒states'
                  =states
                   ⊕{(D
                      7→ mkParachainState(((states D).ingressQueue  ∧ 〈M?〉),
                     (states D).egressQueue))}

                    (4) 消息验证模式    (ValidateMessage)
                    在消息验证模式中       (见代码   9), 平行链  D  的验证者接收到跨链消息进入入口队列的消息后, 需在中继链的元
                 数据序列   metadatas 中查找是否存在满足以下条件的元数据.
                    ● 元数据中的发送者与跨链消息           M  的发送链  S  一致.
                    ● 元数据中的接收者与跨链消息           M  的接收链  D  一致.
   163   164   165   166   167   168   169   170   171   172   173