# DFlow路由金额不符：核执行模式、成交记录与返还资产

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

用已有订单和结果对应mint、执行阶段、fills和reverts，区分预期净额、最低保护与真实收款。

## 使用工具
- [DFlow](https://lianxiaozhi.com/tools/dflow) · [官方入口](https://dflow.net/)

## 前置条件
- 准备已有脱敏请求/报价、提交签名、后续结果与收款记录，保留服务地址、时间、mint及原始单位；缺少材料的步骤记为待核。

## 1. 固定服务、mint和执行模式

先对应原服务是开发还是生产、inputMint/outputMint、amount和钱包对象。amount是按该mint精度缩放的整数，规范示例1 SOL=1000000000，不能将1直接当1 SOL或给所有代币套同一精度。executionMode按原响应的sync/async核；allowSyncExec/allowAsyncExec是请求许可，不替代实际模式。routePlan在同步订单应有、异步仅在开单时路线已知才有，缺它不直接写无路由。

核对结果：服务、资产、原始量与实际模式对应；未知路线未补成失败。
依据：[DFlow：当前订单金额、净额、执行模式和返还资产](https://pond.dflow.net/resources/trading-api/order/order.md)
依据：[DFlow：订单、报价与交易对象](https://pond.dflow.net/spot/trading/trade-api-data-model.md)
依据：[DFlow：测试和生产服务权限](https://pond.dflow.net/get-started/endpoints.md)

## 2. 把预期净额与最低保护分开

outAmount是扣费后预期输出，otherAmountThreshold是扣费后最低输出，minOutAmount为后者别名；预期量不等实收量，也不要再扣同一platformFee。platformFee.amount在输出资产模式下是预计费用，实际随成交变化；异步预测交易会忽略请求的platformFeeMode而以稳定币收费。predictionMarketSlippageBps作用于预测订单最低结果，不用于选路；priceImpactPct示例0.01表示1%，不是滑点bps。

核对结果：预期净额、最低量、实际费用及百分比单位分列，未重复扣费。
依据：[DFlow：当前订单金额、净额、执行模式和返还资产](https://pond.dflow.net/resources/trading-api/order/order.md)
依据：[DFlow：订单、报价与交易对象](https://pond.dflow.net/spot/trading/trade-api-data-model.md)

## 3. 核交易构建、提交与有效高度

原请求含userPublicKey时才会附待签名的Base64 transaction；这是交易内容，不是order-status的签名参数，也不证明已经提交。用已有提交结果对应实际交易signature。contextSlot为评估报价的slot，lastValidBlockHeight是该交易blockhash最后有效的区块高度，不能当Unix时间或把两者直接作时差。缺提交签名或高度时保留未知。

核对结果：报价对象、交易内容、提交签名和有效高度各有对应材料或缺项。
依据：[DFlow：当前订单金额、净额、执行模式和返还资产](https://pond.dflow.net/resources/trading-api/order/order.md)
依据：[DFlow：预测市场订单状态、fills与reverts](https://pond.dflow.net/resources/trading-api/order/order-status.md)
依据：[DFlow：订单、报价与交易对象](https://pond.dflow.net/spot/trading/trade-api-data-model.md)

## 4. 只对支持的订单解释状态

数据模型示意async查询状态，但当前order-status reference明确仅支持预测市场订单的提交签名。对适用记录保留pending、expired、failed、open、pendingClose、closed原状态，不能把open/pendingClose当完成，也不能只看closed就补全额成交。400 invalid_signature和404 not_found是业务失败/未找到记录，不能写零成交或已退全款；普通现货签名不要套用这个状态接口。

核对结果：记录适用范围、原状态及错误码，未从单一枚举推全额成功。
依据：[DFlow：预测市场订单状态、fills与reverts](https://pond.dflow.net/resources/trading-api/order/order-status.md)
依据：[DFlow：订单、报价与交易对象](https://pond.dflow.net/spot/trading/trade-api-data-model.md)

## 5. 按成交mint与逐笔签名核实际数量

OrderStatusResponse.inAmount/outAmount是累计已成交的缩放整数，与报价里的最大输入/预计输出不同。fills仅在至少有一笔成交时出现；逐笔都有signature、inputMint/outputMint和inAmount/outAmount，字段说明为including fees，与报价after all fees不能直接当同一毛净口径。按同一mint、精度及原费用/链账记录核对，避免把逐笔量与累计量重复相加，也不在毛净关系未知时自行加减费用；缺fills不自行补一笔零额成交。若收款目标不是原钱包，也需对应原目标记录。

核对结果：累计成交与逐笔记录对应，mint/精度/签名和实际收款可核或明确待核。
依据：[DFlow：预测市场订单状态、fills与reverts](https://pond.dflow.net/resources/trading-api/order/order-status.md)
依据：[DFlow：当前订单金额、净额、执行模式和返还资产](https://pond.dflow.net/resources/trading-api/order/order.md)

## 6. 对返还资产独立收尾

订单响应revertMint表示异步开单后若回退将返给用户的资产，restrictRevertMint默认false，因此不保证就是inputMint。reverts仅在至少一笔回退时出现，记录signature、mint和amount；用实际返还mint的精度解释数量，不把不同代币原始值相加平账。isNativePredictionMarketOutput只说明输出类型，不是事件裁决或赎回凭证。最终将成交、返还、费用与钱包实收分列，缺证不补全额退款。

核对结果：成交与返还的资产、数量和结果各有依据；未由订单关闭推事件派奖。
依据：[DFlow：当前订单金额、净额、执行模式和返还资产](https://pond.dflow.net/resources/trading-api/order/order.md)
依据：[DFlow：预测市场订单状态、fills与reverts](https://pond.dflow.net/resources/trading-api/order/order-status.md)

## 常见错误
- 报价净额、最低保护、累计成交和实际钱包收款是不同对象。
- async许可、实际执行模式、支持状态查询的订单范围不能混为一项。
- 返还mint可能不同于入金，按各自精度及结果核。

## 完成检查
- 形成原订单、净额保护、执行阶段、逐笔成交与返还对照，缺项单列；方法按当前静态规范整理，未验证个人成交或资金结果。

## 相关知识

## 官方依据
- [DFlow：当前订单金额、净额、执行模式和返还资产](https://pond.dflow.net/resources/trading-api/order/order.md)
- [DFlow：预测市场订单状态、fills与reverts](https://pond.dflow.net/resources/trading-api/order/order-status.md)
- [DFlow：订单、报价与交易对象](https://pond.dflow.net/spot/trading/trade-api-data-model.md)
- [DFlow：测试和生产服务权限](https://pond.dflow.net/get-started/endpoints.md)
