# CCIP源交易成功但目标未完成：核消息状态与手工执行前提

整理：链小知（AI 辅助）
资料核对日期：2026-10-14
引用地址：https://lianxiaozhi.com/tools/guides/chainlink-ccip2-stuck-message-execution-check
难度：进阶
核验方式：官方文档整理，未执行真实账户操作

从已有CCIP 2.0消息回执定位验证、索引或执行阶段，区分外层交易成功与消息SUCCESS。

## 使用工具
- [Chainlink](https://lianxiaozhi.com/tools/chainlink) · [官方入口](https://docs.chain.link/)

## 前置条件
- 准备已有脱敏配置、错误或回执记录，保留网络、对象身份、版本及时间；缺项标待核。
- 仅阅读公开文档和已有记录，不登录、安装、调用RPC/API、获取报价、签名、部署、转账或重试业务。

## 1. 把源链发送与目标交付分开

CCIP 2.0依次发送、验证、索引和目标执行。原CCIPMessageSent与源交易成功仅证明发送阶段，不能据此把目标Token到账或接收回调记为完成。

源交易可能包含多个消息，需保留原日志所对应messageId、目标链及OffRamp，避免拿同一交易hash下另一条消息的状态对账。

核对结果：有具体messageId对应的源事件和目标状态记录。
依据：[CCIP：消息生命周期与执行状态](https://docs.chain.link/ccip/concepts/message-lifecycle.md)
依据：[CCIP：手工执行前提、证明和费用](https://docs.chain.link/ccip/concepts/manual-execution.md)

## 2. 区分未执行与已失败

UNTOUCHED表示目标链尚未执行，可来自未选执行器、Indexer缺数据或服务重试窗口结束等；FAILURE表示执行尝试在OffRamp保护路径内失败，原因需要读错误。

手工执行在2.0不要求原发送者/接收者身份，但仍须正确encodedMessage、所有必需证明及目标链Gas。本教程只核前提，不提交手工执行。

核对结果：未执行/已尝试失败/成功分列，未把UNTOUCHED当资产丢失。
依据：[CCIP：手工执行前提、证明和费用](https://docs.chain.link/ccip/concepts/manual-execution.md)

## 3. 按错误定位验证、Token处理或回调

RequiredCCVMissing或版本解析失败属证明/配置层；TokenHandlingError可能是Token Pool、代币条件或rate limit，不能靠提高回调Gas修复。

ReceiverError空数据可能是回调Gas不足，非空数据常指接收逻辑错误，仍需原trace证实。NotEnoughGasForCall等可能需要外层交易Gas；gasLimitOverride只改变ccipReceive预算，不等于整笔交易预算。

核对结果：错误层级与已有trace对应，未把所有失败归为Gas不足。
依据：[CCIP：手工执行前提、证明和费用](https://docs.chain.link/ccip/concepts/manual-execution.md)
依据：[CCIP：消息生命周期与执行状态](https://docs.chain.link/ccip/concepts/message-lifecycle.md)

## 4. 拆开已付服务费与再次执行Gas

CCIP费用可包含执行器、CCV、Token Pool和网络费；源链收费可能有在feeToken上追加与从转移代币中扣除两种方式，不能仅看净到账相差就认定少币。

原用户指定回调gasLimit按预算收费，未用Gas不退；手工执行目标链Gas由提交账户支付，文档明确不由Chainlink Labs报销。没有当次费记录时不填固定费用或退款金额。

核对结果：服务费组成、附加/扣减方式和目标手工Gas付款方分列。
依据：[CCIP：服务费、执行预算与付款方](https://docs.chain.link/ccip/concepts/fees-and-billing.md)
依据：[CCIP：手工执行前提、证明和费用](https://docs.chain.link/ccip/concepts/manual-execution.md)

## 5. 以消息执行状态及目标效果核完成

外层交易receipt status=1仍可能在OffRamp记录FAILURE；要对照已有getExecutionState/ExecutionStateChanged记录。SUCCESS后消息不能再执行；再次失败可能以NoStateProgressMade外层回滚，原消息仍为FAILURE。

将消息成功、目标Token余额变化和接收合约业务完成各列证据；只完成其中一层时不推广为全部业务完成，也不为补证重新广播。

核对结果：外层回执、消息状态和最终业务效果分开，重复执行风险可识别。
依据：[CCIP：手工执行前提、证明和费用](https://docs.chain.link/ccip/concepts/manual-execution.md)
依据：[CCIP：消息生命周期与执行状态](https://docs.chain.link/ccip/concepts/message-lifecycle.md)

## 常见错误
- 本教程仅覆盖CCIP 2.0的EVM目标OffRamp路径，不套用其他目标链或旧版手工证明。
- SUCCESS不可重执行；外层交易成功不代表消息成功。

## 完成检查
- 形成条件、费用、执行阶段与未证实项的核对记录。
- 本教程仅documentation；未验收实际配置、服务可用性或资金交付。

## 相关知识
- [区块确认与最终性是什么？交易成功和充值到账为何不同步](https://lianxiaozhi.com/learn/confirmations-and-finality)
- [Gas 怎么计算？交易失败为什么仍可能扣费](https://lianxiaozhi.com/learn/gas-and-failed-transactions)

## 官方依据
- [CCIP：消息生命周期与执行状态](https://docs.chain.link/ccip/concepts/message-lifecycle.md)
- [CCIP：手工执行前提、证明和费用](https://docs.chain.link/ccip/concepts/manual-execution.md)
- [CCIP：服务费、执行预算与付款方](https://docs.chain.link/ccip/concepts/fees-and-billing.md)
