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

2486                                                       软件学报  2026  年第  37  卷第  6  期


                    states 映射定义了平行链到其状态        ParachainState 的双射关系, 用于管理每个平行链的当前状态信息.

                                               states : Parachain ↔ ParachainState
                    (3) 中继链状态模式
                    中继链状态通过      RelaychainState 模式进行建模, 描述了中继链中关键的数据结构, 具体见代码               4.
                    ● metadatas: seq Metadata  记录了所有已收集的消息元数据, 为跨链消息的验证提供依据.
                    ● validatedBlocks: seq Block 该序列存储了已被中继链验证的区块, 以确保区块链的一致性和安全性.

                 代码  4. RelaychainState.
                 metadatas: seq Metadata
                 validatedBlocks: seq Block
                    (4) 通道模式
                    通道管理部分定义了平行链之间消息传递所需的通道结构, 通过                      Channel 模式  (见代码  5) 进行描述. 通道的
                 关键属性为源平行链和目标平行链, 用以明确通道的起点和终点.

                 代码  5. Channel.
                 S: Parachain
                 D: Parachain

                  4.1.2    操作模式
                    (1) 打开通道模式    (OpenChannel)
                    在  OpenChannel 操作  (代码  6) 模式中, 处理了平行链间通道的开启. 该操作首先检查发送者和接收者平行链
                 是否不同, 并且都属于已定义的平行链集合              (Parachains), 同时通过  mkChannel 函数确认通道尚未开启. 满足这些
                 条件后, 操作会将新的通道添加到开放通道集合中, 并在通道存款映射中记录相应的存款金额.

                 代码  6. OpenChannel.
                 openChannels, openChannels':  P Channel
                 channelDeposits, channelDeposits': Channel↔DOT
                 S, D: Parachain
                 deposit: DOT
                 S   , D   ∧ {S, D}⊆Parachains  ∧ ¬mkChannel(S, D) ∈ openChannels
                 ⇒openChannels'=openChannels  ∪ {mkChannel(S, D)}
                   ∧ channelDeposits'=channelDeposits⊕{(mkChannel(S, D) 7→ deposit)}

                    (2) 消息收集模式    (CollectingMessage)
                    在消息收集模式中, 平行链         S  中的用户调用智能合约后, 平行链         S  的收集者接收到跨链数据        (ccdata). 收集者
                 将发送方平行链      S、接收方平行链      D、时间戳、消息大小及元数据打包生成跨链消息                  M, 并将该消息放入平行链
                 S  的出口队列. 随后, 收集者将消息的元数据插入中继链的元数据序列                    metadatas 中, 以便后续验证跨链消息的真
                 实性. 具体见代码     7.

                 代码  7. CollectingMessage.
                 ccdata?: string
                 S?, D?: Parachain
   162   163   164   165   166   167   168   169   170   171   172