Across 过期但退款未到:核对退款模式、接收方与结算阶段
链小知 · 进阶 · 核验 · 依官方文档整理
把普通intent的过期结算与PDA自动退款分开,用已有原配置、状态和退款交易定位未完成阶段。
开始前准备
- 已有转移身份、原退款配置、状态时间及去敏退款回执;缺项标待核,不重复跨链。
- 只整理原记录,不调用退款、创建地址、签名或重试业务请求。
1. 先确定退款来自哪种流程
普通intent按originChainId和depositId或原交易标识定位;PDA另保留depositAddress/funding。不要把PDA的auto-refund-pending套成fillDeadline已到期。
原状态保留接口与时间;/deposits的unfilled枚举和/status的pending措辞不能未经记录映射成同一个状态码。
检查结果:流程类型、接口与身份明确,未知状态原样保留。
2. 检查过期是否只是退款资格
普通intent退款说明要求期限已过且未被填单、没有部分填单。expired是进入退款阶段,refunded才是服务标记已退款;只看期限不能判断款已返还。
服务状态有索引延迟;即使已经取得退款交易标识,也继续核对实际链上成功和收款方。
检查结果:资格、服务状态、退款交易及到账证据四层分开。
3. 核对原接收方和退款网络
普通Swap文档refundAddress默认depositor;refundOnOrigin默认true,也描述false时目标链退款。保存当时传入值,不凭当前钱包地址替换接收方。
PDA使用refundAddresses数组,不能沿用单一字段默认值;缺配置时官方方法说明可能需要更慢的人工恢复并联系Across支持,不承诺自动回到发送地址。
检查结果:能说明原配置对应哪条链和哪个地址,默认规则只用于其适用模式。
4. 把结算等待与失败区别开
普通intent过期退款经Dataworker结算bundle、挑战期和规范桥传根后执行;文档约1.5小时提议间隔是机制说明,不是本次完成时间。
PDA的refund-failed或manual-refund-required需要保留原失败证据;未知原因不能仅凭等待较久归成流动性故障。
检查结果:等待阶段和已有错误有各自依据,没有给出保证到账日期。
5. 检查真实退款交易与数量
从原depositRefundTxnRef或对应旧depositRefundTxHash定位退款交易,核对退款链、接收方、资产地址与原整数数量;null只是未取得线索。
金额差异先保留原转移和退款字段、单位及费用记录;本篇没有当前报价或完整扣费依据,不承诺全额退款,也不猜余额差就是协议收费。
检查结果:已退款结论绑定成功交易、正确地址与金额;缺证据时仍标未确认。
6. 输出有限范围结论和待补证项
按“尚未过期、已过期待结算、已标退款但链上未核、已核成功退款、原错误待处理”写阶段;filled时另核对目标交付,不同时宣布未填单退款。
文档退款轮询示例采用60秒和有限尝试,它不是完成SLA。此次只整理已有记录,缺权限、链上证据或原配置时向原集成方补证。
检查结果:结论有身份、时间、退款模式和缺口,示例等待时长没有成为到账承诺。
怎样确认完成
- 原退款配置、状态和实际退款回执逐项对应。
- 明确尚未证明的金额、接收方、权限或阶段;没有执行任何恢复请求。
常见错误与边界
- expired写成已到账退款。
- 将单refundAddress默认套到PDA数组,或不看refundOnOrigin。
- 将结算间隔、示例重试时间当完成保证,或凭null猜资产归零。