NFTScan 大Token ID与元数据空值:保留精度、URI和毫秒时间
链小知 · 进阶 · 核验 · 依官方文档整理
按链+合约+字符串Token ID定位已有NFT记录,核对十六/十进制、metadata_json、显示属性及ERC1155空值,避免精度损失和字段类型误判。
开始前准备
- 已有脱敏单NFT结果或官方Asset字段模型,以及chain、contract_address和原token ID。
- 保留原JSON文本与SDK版本;不要先经Number转换后再保存Token ID。
- 固定源码核对不等于读取真实NFT、运行SDK、获取元数据URL内容或验证当前链上所有权。
1. 锁定三元身份和方法参数
从已有记录取chain、contract_address、原token ID,名称/图片另列。固定getAssetsByContractAndTokenId(contractAddress,tokenId,showAttribute)要求contract与tokenId非空字符串,组成/v2/assets/{contract}/{tokenId};它不是以nftscan_id替代Token ID的路径。
核对实际chain/baseURL是否在该固定版本配置内。不能用付款FAQ的Ethereum/BNBChain/Polygon或未来链计划来确定数据接口支持,也不将该EVM路径套到Solana mint。
检查结果:同名NFT仍按链、合约和Token ID区别;错误方法或网络先解决,缺结果不当销毁。
2. 用字符串和精确整数核对Token ID
Asset.token_id声明string、注释数值形式,contract_token_id注释Hex。保存原值;需要比较时以十进制字符串和带0x十六进制字符串用BigInt精确换算后比较,先验证格式,异常不能落成0。
本地算术例子:十进制"9007199254740993"与Hex"0x20000000000001"表示同一整数。BigInt(hex).toString(10)可得到精确十进制;Number已可能丢精度,不能用parseInt/Number后再toString补救。将比较结果输出字符串,BigInt不直接作为JSON数值写出。该例只是单位/精度检查,不是真实NFT查询。
检查结果:原token ID没有浮点化;十进制与十六进制的精确对应可复核,非法/缺失值保持错误或未知。
3. 分开元数据原文、展示URI与代理URI
metadata_json在固定模型中是string,先保存原字符串;已有值可在本地JSON.parse并捕获格式错误,不能假定它已是object。token_uri是token URI,content_uri/image_uri是展示内容,nftscan_uri/small_nftscan_uri是NFTScan保存的图片地址,分别记录。
代理URI或图片相同不证明原metadata相同、版权授权或永久存储。nftscan_uri注释未存储时可null,类型却是string;空值保留,不能自动回填另一URI让来源混淆。只有字段,没有实际内容读取证据时标“URI已记录,内容未核实”。
检查结果:原元数据、解析状态与各URI角色分列;错误JSON/null没有被转为空对象或合并成一个来源URL。
4. 核对属性开关和ERC1155的null冲突
show_attribute默认false。单NFT方法第三参数showAttribute为true时才组装show_attribute:true;已有记录没开启属性时,缺attributes不能直接判断NFT没有traits。即使开启也要保留实际返回状态,源码不保证当前后台完整属性。
ERC1155 owner、own_timestamp和mint_price注释可null,而声明为string/number,遇到null应保留合法未知分支,不能强制断言或填空地址/0时间。ERC1155可能多持有人,不能根据这份单一owner字段断言无人持有;amount仍按原字符串数量检查。
检查结果:能说明属性是否请求、返回是否取得,以及空值属于未取得/可能不适用/版本矛盾哪一类。
5. 按毫秒显示时间并隔离成交价格
mint_timestamp、own_timestamp、latest_trade_timestamp注释均为毫秒,先判数值是否存在与有效,再按毫秒转换,例如有效值可用new Date(value).toISOString()显示UTC。不要乘1000把毫秒当秒,也不要让null变成1970年记录。
latest_trade_price需与latest_trade_symbol、latest_trade_token、latest_trade_timestamp一起保存;模型没有保证所有值均用wei或当前可成交价,不能从number类型套固定缩放。最后按同一身份输出时间/URI/属性/owner/价格的已知与未知,成交记录不代替当前账户到账或最新所有权验证。
检查结果:时间单位、UTC显示与原值均可复查;价格单位/时刻未取得时不作估值或到账断言。
怎样确认完成
- 形成链/合约/精确Token ID一致的核对记录,保存原值及十六/十进制对应。
- 逐字段记录解析状态、URI角色、属性开关、null/缺失、毫秒时间与未知币种口径;注明固定源码范围与未实测服务。
常见错误与边界
- 先把大Token ID转Number,造成静默精度丢失;token_id注释Number不改变TS string声明。
- 将metadata_json字符串、图片代理地址和链上token_uri视为同一内容证据。
- 按非nullable类型强制解析ERC1155的null,或把未请求attributes解释为无属性。
- 将毫秒乘1000、null映射1970时间,或把latest_trade_price自动当ETH/wei/实时估值。