跳到正文
← 使用教程

NFTScan 持仓数量不对:核对游标、ERC1155 amount与截断

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

按照固定官方SDK1.15.0复核已有EVM资产记录,逐页保存next/cursor,把资产条目数和持有份数分开,排除铸造列表及多链截断造成的误计。

开始前准备

  • 已有脱敏SDK配置、getAssetsByAccount参数及逐页结果;没有记录时只制作字段检查表。
  • 明确链、accountAddress、contract_address或erc_type,保留请求时间和使用的SDK版本/commit。
  • 源码核对范围为5ab7fe77baf804ebde1cd938e7bd74d3bc2f7e51的nftscan-api1.15.0;不需要运行SDK、注册或提供API key。

1. 确认链配置和当前持有方法

将已有配置的chain/baseUrl、accountAddress与方法名写入表。固定路由getAssetsByAccount是/v2/account/own/,getAccountMinted是/v2/account/mint/,getAllAssets是/v2/account/own/all/;曾铸造不等于现在持有,按合集分组也不等于分页content。

固定配置chain优先查BASE_URL,chain非法不会自动用baseUrl补救。README的EvmChain.ARBITRUM例子与实际enum/BASE_URL缺少arbitrum冲突;遇到该错误保留版本差异。Solana用独立对象和/sol路径,不能套本页EVM参数。

检查结果:核对表确认为同链、同账户、EVM当前持有分页方法;错误网络与方法不进入数量统计。

2. 对齐ERC类型、过滤与方法上限

getAssetsByAccount在contract_address与erc_type同时为空时拒绝。按原记录写erc_type=erc721或erc1155,或指定contract_address;保留show_attribute、sort_field与sort_direction,比较页时不换条件。

固定SDK账户分页只对limit>1000报错;通用参数注释默认20。铸造/合约分页limit>100拒绝,与账户方法不同。这些是客户端校验,不能据此保证当前后台接受1000、任意负数/小数或免费额度。

检查结果:参数满足对应固定方法的校验,并记录真实limit与排序;所有客户端/服务端错误保留原值。

3. 按响应next接续cursor并保留每一页

固定分页使用cursor,下一页cursor来自上一页next,不使用page=2或自行加数字。将原请求cursor、返回next、total、content.length、采集时间逐页配对,复核已有记录是否漏页、重复游标或换了过滤。

源码只定义next为string并注释续页,没有明确终页哨兵规则;不要未经响应证据把空字符串、null或缺字段一律视为完成。空页但仍有未解释next、重复next或total变化时停止全量结论,保留待核。

检查结果:每页都能接回上一页的next;断链或终页规则未知时标部分记录而非完整持仓。

4. 先分清HTTP外壳再计算份数

原HTTP响应可能是code/msg/data,固定SDK拦截器在HTTP200且外层code=200时返回data,所以SDK返回对象直接读content/next/total;不要给SDK结果再套data导致空列表。HTTP错误、外层业务code错误或空响应单列,不能填资产0。

按chain、contract_address、token_id核对重复项;同一身份在不同页重复时先留原记录及采集时间,不直接叠加。分别统计content行数、唯一Token ID数和合法amount的精确整数总和;amount是string,ERC721注释默认1,ERC1155同一ID可有多份,不能用行数替代份数。

检查结果:报告明确使用哪种数量口径,金额/份数不经过浮点Number;total仅标原方法匹配结果总量而非自动解释为份数。

5. 核对多链截断与计费权限边界

若来源实际是getMultiChainAssets,读取各chain的collection_assets与exceed_max_items。源码注释账户超2000NFT时可能返回少于2000,建议逐链getAssetsByAccount分页;该上限不属于所有方法的统一分页额度。

CollectionAssets中的owns_total与items_total分别表示账户持有与合集项数,保留字段原定义,不从这些类型推ERC1155份数等价关系。公开平台按CU收费,定制QPS最高200不等于当前账户权限;免费额度和每方法CU未核实,记录不足不为凑全量再次调用。

检查结果:结果标明逐链/分页范围、截断状态、份数口径与未知权限;未覆盖页或截断不会被写成0资产。

怎样确认完成

  • 输出按链与合约分列的行数、唯一ID数、精确份数和所覆盖游标链。
  • 错误、截断、缺页及未知数量单独记录;版本限定、CU/资格与服务响应未核实项明确。

常见错误与边界

  • 把minted铸造列表、getAllAssets分组列表、账户分页content混用。
  • 把limit1000客户端校验当当前服务承诺,或把定制QPS200当默认免费速率。
  • 将重复页相加,或将ERC1155行数、unique token数、amount和total混成一个总数。
  • 把多链exceed_max_items忽略;当前服务终页哨兵及实时全链范围未实测。

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