Subscan 交易失败怎么看?核对 finalized、success 与子调用
链小知 · 入门 · 核验 · 依官方文档整理
按链定位extrinsic,保存模块错误、事件和子调用结果,防止把区块收录当成功转账。
开始前准备
- 准备具体Substrate链名、交易hash或extrinsic_index、预期资产与收款地址;不把EVM交易字段自动套用。
- 适用当前Subscan Extrinsic API(2026-07-21文档);各链运行时与API部署分别核对。
- 公开网页只读;API访问权限、密钥方案和计费查当前套餐,不发送extrinsic或签名。
1. 先选具体链再定位索引
在Subscan对应链页面搜索原交易hash或extrinsic_index,记录链名与页面URL。不同平行链可以有相同格式的地址和区块索引,不能跨链用一串index确认同一交易。
如果使用API,当前文档展示Altair服务https://altair.api.subscan.io,路径为/api/scan/extrinsic;查其他链必须选其实际部署,不把Altair入口当通用全链API。
检查结果:链名、hash或index、查询部署一一对应。
2. 取得详情并保存读取条件
API读取使用POST JSON,传实际hash或extrinsic_index。要看事件不要照抄示例的hide_events:true;明确记录hide_events与events_limit设置,防止主动隐藏后误判没有事件。
HTTP成功仍要检查业务code、message和data。读取失败或无data先检查部署与输入,不能按样例中的success:true填真实结果。
检查结果:保留请求筛选项、业务结果及实际extrinsic_hash/index。
3. 分开最终性与执行结果
读取pending、finalized和success。进入区块或finalized表明状态已进入相应链确认阶段,success才是执行结果字段,两者不互相替代。
失败时记录error.module、name、doc及可见batch_index;保存原文字段,避免把链运行时特有错误翻成一个未经核实的“余额不足”。
检查结果:形成pending/finalized/success及错误原文记录。
4. 展开子调用和事件
若有sub_calls或multisig,读取子调用exec_status、exec_result和相关参数。顶层调用完成不自动证明批量内每项、或多签流程中最终目标动作已完成。
查看event条目与event_count;事件被筛选、限制或隐藏时先标不完整。核对与该extrinsic关联的事件及最终资产记录,不能从一个事件标题推断所有资产变化。
检查结果:子调用及事件的覆盖范围明确;缺失项留待补读。
5. 核对收款记录与实际费用
若返回transfer对象,对照from、to、asset_symbol、amount与transfer.success;没有transfer对象时按实际调用和事件解释,不把空对象当零金额。
费用字段包括fee/fee_used,使用其他资产付费时还可能有asset_fee与decimal、symbol。数字与单位要一起保存;无法确认精度就不算成人类金额。最终交付记录支持排查,但不能证明交易所已入账。
检查结果:保存实际收款记录、费用单位及仍需核对的运行时信息。
怎样确认完成
- 得到完整定位、最终性、执行错误与资产/费用证据。
- 依据官方文档整理,尚未完成真实账户查询或交易行为验收。
常见错误与边界
- 文档样例字段true只是数据结构示例。
- 批量/多签/跨链消息的顶层完成不能替代内部资产变化。