跳到正文
← 使用教程

Supra MoveVM 排查已有交易历史:发送列表、收付列表与分页游标

链小知 · 进阶 · 核验 · 依官方文档整理

核对两类账户历史的不同覆盖范围与 start 语义,避免用一页发送记录推断完整收款历史。

开始前准备

  • 准备同一公开 MoveVM 账户已有脱敏 v3 历史记录:请求URL、响应头、JSON正文、采集时间及至少一组分页参数;不访问账户或生成新记录。
  • 明确要排查的是发送历史还是 Coin 收付历史;FA Fungible Store 历史不是本教程验证范围。

1. 固定网络、账户与 JSON 解析范围

把 host 与 Mainnet8/Testnet6、同一 path address 对应,并检查已有响应的 x-supra-chain-id。不要混合两个网络上格式相同的地址。

地址可带或不带0x前缀;这里是 Move account,FA 历史接口参数是 Fungible Store 地址,不能直接互换。v3 有二进制格式,本流程只分析记录中的 JSON。

检查结果:全部记录属于同网络同一 Move account 和同一可解析格式。

2. 区分发送历史与 Coin 收付历史

GET /rpc/v3/accounts/{address}/transactions 返回该账户发送的 finalized 交易;不能以此列表遗漏入账就认定没有收款。

GET /rpc/v3/accounts/{address}/coin_transactions 返回相关 finalized Coin withdraw/deposit,包含收与发。本产品另有 FA 历史接口,因此 Coin 列表也不保证覆盖所有资产形式或所有业务事件。

检查结果:所需历史范围和实际方法一致;没有把发送或 Coin 范围冒充全资产历史。

3. 核对数量与排序

两类方法 count 默认20,最多每次100。检查每页实际 count 与 ascending;默认false为倒序,true为正序。返回20条本身不是全部历史结束证明。

Coin 方法还可按 type=auto/user/meta/record 过滤;过滤器变化后应单独看覆盖期,不能把不同过滤页直接拼接并宣称无遗漏。

检查结果:分页数量、排序和筛选在同一组记录中一致,未拿单页数量推断全量。

4. 按发送方法核对 start 序列号

transactions 的 start 是起始 sequence number,且包含该序列号。它不是区块高度、日期或 Coin 游标。

对已有后续页核对包含边界是否导致同一交易重复;以已返回交易身份去重,并保留原页。不能按20条固定步长猜序列号或从空页直接判定无资产。

检查结果:发送历史用序列号语义处理,边界重复被识别且未丢弃未解释记录。

5. 按收付方法核对游标

coin_transactions 的 start 是排除边界的 cursor。规范说明下一页使用上一响应头 x-supra-cursor;游标不能由客户端手算。

核对已有下一页 start 与上一页响应头是否匹配,按文本/精确整数保留大数,避免浮点损坏。缺失响应头时记录分页链断点,不能用发送序列号补上。

检查结果:已有 Coin 分页链可逐页追溯;游标缺失或数值精度损坏明确标注。

6. 解释索引状态与历史范围

这些账户历史方法的503表示 archive 仍初始化、尚无 executed blocks 可用,不能当成功空列表。x-supra-oldest-block 说明节点历史边界;该头可能在 archive 尚未索引区块前缺失。

汇总网络、账户、方法、排序/过滤、首末页时间、游标/序列号连续性、异常及历史边界。仅结论为本组已有记录覆盖的范围,不能称为全部收款或余额核验。

检查结果:输出已核覆盖范围与明确缺口,区分读取失败、历史裁剪、分页断点和真正返回的数据。

怎样确认完成

  • 两种列表的范围、分页语义与已有数据连续性已分别核对;未覆盖的数据注明待核。
  • 只按官方文档和已有脱敏记录排查,未执行账户查询或其它 API。

常见错误与边界

  • 发送历史的 start inclusive序列号与Coin历史的 start exclusive游标混用。
  • 忽略x-supra-cursor,手算时间戳/区块索引或通过浮点保存大游标。
  • 把finalized列表等同每笔成功、完整资产账本或当前钱包余额。

本教程根据官方资料整理,尚未完成逐步操作验收。界面、支持范围及费用变化时,先核对官方说明。 纯文本版 · 提交纠错依据