Moralis 代币价格对不上:核对链、计价单位与缺价原因
链小知 · 进阶 · 核验 · 依官方文档整理
从已有响应分清USD价格和原生币整数尺度,再按单币与批量接口的过滤行为定位缺价。
开始前准备
- 已有脱敏请求参数/响应,或本页官方文档示例;不需要API key、钱包或账户。
- 保留请求时间、chain、token合约和方法版本。没有真实响应时只完成示例核对,不能标记当前价格已查到。
1. 先固定链与代币合约
单币方法是GET /api/v2.2/erc20/{address}/price;address是代币合约,chain默认eth。先把已有请求中的chain和address写成一对,避免同地址在不同链或同symbol资产混用。
例如bsc对应BNB Chain、optimism对应OP Mainnet;显示网络名称可以规范化,请求参数保持官方原值。chain enum列测试网不代表有价格:生成规则正文明确token prices只支持主网。
检查结果:已有记录包含chain+合约+api/v2.2;不按symbol或测试网enum认定报价存在。
2. 分别解码 USD 和 nativePrice
usdPrice是代币的美元价格;nativePrice.value是带nativePrice.decimals尺度的原生币数量,不使用tokenDecimals去缩放它。原生币的name/symbol也一起保留,避免把BNB或其他链原币当ETH。
只做单位示例:若nativePrice.value为1000000000000000、decimals为18,则为0.001个原生币;这不是本轮实时价格。tokenDecimals用于代币数量的尺度,美元price本身不再除10的tokenDecimals次方。
检查结果:三种数分别标明代币数量、美元单价、原生币单价;整数值未先转低精度浮点而丢位。
3. 核对价格来自哪个市场和时间点
保存响应tokenAddress、exchangeName/exchangeAddress、pairAddress和toBlock。exchange筛选参数是factory名称或地址,不是保证任意池地址都可填入同一参数。
生成规则按DEX swap得价,不是全交易所成交均价;同块取最后swap。自动选池的当前与历史逻辑不同,因此两个时期价格差异可能包含选池变化,不能只归因于资产涨跌。
检查结果:报告能追溯链、token、factory/pair与区块,且没有把DEX末笔价称为全市场VWAP。
4. 按具体接口解释被过滤的价格
核对min_pair_side_liquidity_usd与max_token_inactivity。官方默认EVM每侧50USD,两边独立达标;pairTotalLiquidityUsd的总量不能证明每边都过线。自定义阈值会改变候选池,流动性不均衡也可能排除池。
同样的流动性过滤,单币Price返回404,batch省略该token,带价格的余额接口可能给price null。按原始错误/数组缺项记为缺价,不能改填0,更不能用缺价证明token没余额或已归零。
检查结果:单币错误与batch省略分开;每侧阈值和实际筛选值保存,未知价格保持未知。
5. 批量结果按身份核对并保留类型冲突
batch使用POST /api/v2.2/erc20/prices,外层chain统一,JSON tokens各项带token_address及可选to_block/exchange。它是数据查询,不是链上交易;返回数组可能缺项,按tokenAddress等身份匹配,不按输入索引强行配价。
同页简介说最多100、Body schema写最多30;准备小批量并标明文档冲突,未取得当前服务验证前不承诺100条一定成功。possibleSpam例子为字符串false而schema为boolean,解析时保留实际类型;JavaScript的Boolean("false")会变true,不能用这种转换纠错。
检查结果:批量输入与返回按chain+token及时间/市场对应;缺项、批量上限和spam字段类型都有明确处理。
6. 把请求成本和限流从价格结论中分开
数据请求需要X-API-Key;文档的默认test占位不能当读者可用匿名凭据。当前EVM表单价50CU、batch100CU,套餐吞吐按滚动4秒请求数评价;429是吞吐限制,不能解释为资产无价格。
已有响应缺失或错误时,把权限、吞吐和价格过滤分别记录;查文档本身没有消费这些数据API的CU。不要把同名Solana方法成本或历史3CU资料套到本EVM接口,也不因公开套餐页无免费条款就推断用户实际资格。
检查结果:结果含明确单位/身份/缺价类别,并注明没有密钥请求、当前报价或CU实测。
怎样确认完成
- 对已有记录完成链、单位、选池、过滤和批量身份核对。
- 验证范围为官方文档与示例;没有实时价格、数据调用或账户验收。
常见错误与边界
- verifiedContract或possibleSpam标记不构成代币安全保证;低流动性过滤也不保证成交公平。
- 不能把批量POST读取误称为链上写入,也不能把GET读取误称为无需认证和费用。