Page 177 - 《软件学报》2026年第6期
P. 177
2496 软件学报 2026 年第 37 卷第 6 期
egressQueue: seq Message
dot: DOT
∀ m: Message | m ∈ ran ingressQueue ∨ m ∈ ran egressQueue
· m.size≤maxMessageSize
(d) 中继链状态模式
● validatedBlock: seq Block 表示已验证的区块序列. 这个序列记录了中继链上所有经过验证的区块, 确保系统
的一致性和完整性.
● validatedXi: P string 表示已验证的区块的标识符序列.
● BlockHeader 表示区块头的状态, 用于管理消息的时效性.
● maxwaittime : Message → N 该映射用于判断当前时刻某个消息的等待时间是否为最大. 如果消息的等待时
间是当前所有消息中最长的, 那么该消息对应的 maxwaittime 值为 1; 否则, 为 0. 此机制帮助中继链在消息轮询过
程中优先处理等待时间最长的消息, 从而优化消息传递的时效性. 具体见代码 14.
代码 14. RelaychainState.
validatedBlock: seq Block
validatedXi: P string
BlockHeader
N
maxwaittime: Message→
在区块头模式 BlockHeader 的定义中, waittime : Message → N 记录了每条消息 Message 的等待时间. 这一等
待时间用于跟踪和管理消息从生成到被处理的延迟. 具体见代码 15.
代码 15. BlockHeader.
waittime: Message→ N
在平行链 D 进行轮询时, 中继链利用 BlockHeader 中记录的等待时间信息来协调平行链之间的消息传递. 具
体来说, 中继链会根据与平行链 D 相连的其他平行链的区块头记录, 来确定各平行链的消息等待时间. 中继链会
优先处理那些等待时间最长的平行链, 以保证消息在系统中的公平和及时传递. 这种机制有助于防止消息在某些
平行链中被无限期地延迟, 从而提高整个系统的消息处理效率和响应速度.
(e) 钓鱼者状态模式
● fishmanPMN : string ↔ N 通过将块标识符 X 映射到其对应的 PMN (区块内消息的 PMi 的总和), 储存每个需
要发送的区块的 PMN 值. 这种映射使得钓鱼者能够在后续的验证或处理过程中快速检索和使用这些信息. 具体见
代码 16.
代码 16. Fishman.
fishmanPMN: string↔ N
(2) 操作定义
(a) 消息收集模式 (CollectingMessage)
在 CollectingMessage 操作中, 消息收集时的流程如图 8 所示, 代码详见代码 17. 主要步骤如下.
① 使用 mkMessage 函数生成跨链消息 Mi, 通过 mkPromise 函数计算消息的承诺值 PMi.
② 将消息 Mi 的标识符 IDi 和承诺值 PMi 更新到 MessageID 和 MessagePM 映射中, 形成新的 MessageID'和
MessagePM'. 随后将消息 Mi 添加到平行链 S 的出口队列中, 然后更新平行链 S 的状态, 最终形成新的 states'.

