Page 179 - 《软件学报》2026年第6期
P. 179
2498 软件学报 2026 年第 37 卷第 6 期
if SBlockcont Xi?=N?
then SBlockPMN'=SBlockPMN
∧ SBlockcont'=SBlockcont
∧ fishmanPMN'=fishmanPMN⊕{(Xi?→SBlockPMN Xi?)}
else SBlockPMN'=SBlockPMN⊕{(Xi?→SBlockcont Xi?+PMi)}
∧ SBlockcont'=SBlockcont⊕{(Xi?→SBlockcont Xi?+l)}
∧ fishmanPMN'=fishmanPMN
(b) 消息轮询模式 (PollingMessage)
在 PollingMessage 模式中, 消息轮询流程如图 9 所示, 平行链 D 处理从平行链 S 发来的 Mi 时执行以下步骤.
平行链S 将其加入到Parachain D 平行链D
的入口队列ingressQueue
中, 如果接收方消息计数器
入口队列 DBlockcont达到N, 则生成 入口队列
② 发送Mi 接收方总承诺DBlockPMN
出口队列 通道 Collator D 出口队列
T
③ 在接收到Mi时
区块头 (1) Mi是候选区块的第1个消息,则记
④ 丢弃与Mi同
录其到达时间arrivetime为T 0 一区块的消息,
(2) Mi不是候选区块的第1个消息,则
① 中继链根据区块头中 并扣除相应的
记录的waittime,挑选出 判断Mi的arrivetime与T 0 的差是否小 DOT
中继链 等待时间最长的平行链 于有效期ddl Mi在ddl内 F
(假设为Parachain S)
图 9 消息轮询流程图
① 首先, 确认 Mi 的目标平行链为平行链 D, 并确保平行链 S 与平行链 D 之间已建立通道. 此外, Mi 为所有消
息中等待时间最长的消息, 即 maxwaittime Mi=1.
② 判断候选区块 Mi.X 是否在 DBlockcont 的记录中. 如果 Mi.X 不在记录中, 即 Mi.X < dom DBlockcont, 平行
链 D 将此时该消息的到达时间 arrivetime?及块标识 Mi.X 更新到 T 0 映射中. 若 Mi.X 已在记录中, 则保持 T 0
不变.
③ Collator D 接收到候选区块 Mi.X 的消息时, 如果消息 Mi 在有效期内, 即该消息的到达时间 arrivetime?与第
1 个消息到达时间之间的差值小于有效期 ddl, 它会将消息 Mi 放入平行链 D 的入口队列中等待打包. 如果消息超
出了有效期, 则丢弃与超时消息相同区块的所有消息 (DeleteMessage Mi.X=1), 并扣除相应的 DOT 代币 (deductDot
(S, D)=1).
④ 在处理消息时, 如果候选区块 Mi.X 的消息数量 DBlockcont 达到预期的总数 Mi.N, 则保持 DBlockPMN 和
DBlockcont 不变. 否则, 将消息的承诺值 MessagePM Mi 添加到 DBlockPMN 中, 并更新 DBlockcont 记录. 具体见代
码 18.
代码 18. PollingMessage.
states, states': Parachain↔ParachainState
S, D: Parachain
DBlockPMN, DBlockPMN': string→ N
N
DBlockcont, DBlockcont': string→
ΞRelaychainState
Mi: Message

