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

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



                     ′
                 T 0 ,   T : string→  N
                    0
                 arrivetime?:  N
                 Mi.Add=D
                 maxwaittime Mi=1
                 mkChannel(S, D)  ∈ openChannels

                 ⇒ (if Mi.X  < dom DBlockcont
                  then  T = T 0  ⊕{(Mi.X  7→ arrivetime?)}
                        ′
                        0
                  else  T = T 0 )
                       ′
                       0
                            T  Mi.X≤ddl
                             ′
                 if arrivetime?–   0
                 then states'
                  =states
                  ⊕{(D
                     7→ mkParachainState (((states D).ingressQueue  ∧ 〈Mi〉),
                    (states D).egressQueue))}
                   ∧(if DBlockcont Mi.X=Mi.N

                   then (DBlockPMN'=DBlockPMN  ∧ DBlockcont'=DBlockcont)
                   else (DBlockPMN'
                    = DBlockPMN⊕{(Mi.X  7→ DBlockPMN Mi.X+MessagePM Mi)}
                      ∧ DBlockcont'

                    =DBlockcont⊕{(Mi.X  7→ DBlockcont Mi.X+1)}))
                 else DeleteMessage Mi.X=1  ∧ deductDot(S, D)=1

                    (c) 承诺验证模式    (PromiseValidate)
                    在  PromiseValidate 模式中, 承诺验证的流程如图      10  所示, 详细代码如代码     19  所示. 进行跨链消息承诺的验
                 证时, 主要步骤如下.


                                                                             ③  丢弃与Miॶѓ
                                  PMN                                        ്相同的所有消
                                                                           F  息, 并扣除失败方
                                                                             的部分DOT代币
                                          ② 将DBlockPMN与钓鱼者C记录
                                           的fishmanPMN进行对比验证
                                 钓鱼者                                DBlockPMN=fishmanPMN
                                    ① 发送DBlockPMN到
                                         钓鱼者C                               ③  Collator D 将队列的N
                                                                            个消息Mi打包进区块,
                                 Validator D   平行链D           Collator D   T 同时消息Mi会执行平
                                                                            行链D上相应的智能合
                                                                            约, 完成资产转移操作
                                                   图 10 承诺验证流程图

                    ① 首先检查平行链       D  的  DBlockcont 中标识为  Xi?的区块的消息数量是否等于预期总数           N?. 确保接收到的消
                 息数量与预期一致.
                    ② 确认块标识     Xi?存在于   fishmanPMN  中, 并且  DBlockPMN  中对应  Xi?的承诺值与  fishmanPMN  中存储的值
                 相匹配.
                    ③ 如果上述验证通过, 则根据块标识           Xi?生成新块    newBlock, 并确认该块通过    AssetTransfer 函数验证为有效
   175   176   177   178   179   180   181   182   183   184   185