空闲的发送链条永远不会重试失败的跨链交付
作者: ma2bd创建于 2026年8月28日更新于 2026年8月28日
为什么外箱不保存它?持久外箱仍然保存该条目,并且 ChainWorkerState::create_network_actions 从它中重新派生所有待处理的跨链请求,而不是仅仅是新的请求 - 因此对它的任何调用都会重新发送丢失的交付。但是每个调用点都是发送链的 请求处理器:
| 点 | 处理器 |
|---|---|
state.rs:810 |
process_timeout |
state.rs:934 |
process_validated_block |
state.rs:978 |
process_confirmed_block (已处理的跳过路径) |
state.rs:1080 |
preprocess_certified_block |
state.rs:1377 |
execute_contiguous_block |
state.rs:2495, :2675 |
handle_block_proposal, try_handle_block_proposal |
没有定时器,没有后台扫描,也没有定期调整。值得注意的是,handle_chain_info_query 不在其中,因此纯读操作不会触发重新交付。因此,消息只在发送链生成另一个区块或有人重新提交其证书时才会重新发送 - 并且已处理的路径在 :978 中意味着重新提交已知的证书就足够了。如果发送链处于空闲状态,并且没有人操作它,则束包会留在外箱中。
内容来源: linera-io/linera-protocol