GoldRush 余额和估值对不上:检查 decimals、quote 与索引时间
链小知 · 入门 · 核验 · 依官方文档整理
用已有 Token Balances 响应核对最小单位、原生币标志和数据时间,避免把报价缺失当余额为零。
开始前准备
- 准备已脱敏的 balances_v2 请求和 JSON 响应,包含 chainName、walletAddress 与请求时间。
- 实时 Foundational API 需 GoldRush API key,余额端点每次 1 credit;可直接分析既有响应,无需钱包或发起新的付费请求。
1. 固定端点与响应范围
检查记录是 /v1/{chainName}/address/{walletAddress}/balances_v2/,官方 Ethereum 示例用 eth-mainnet。先判断响应 error,再读 data;错误响应或认证/限流失败不能当空资产列表。该端点用于原生币与可替代 Token,NFT 不应按同一列表推断。
检查结果:端点、链名、地址和成功/失败状态完整,资产范围明确。
2. 按合约身份选中一条余额
从 items 找到目标 contract_address,同时核对 contract_ticker_symbol、is_native_token 和 contract_decimals。同名 Token 可以是不同合约;原生币也有独立标志。保存这一条的 balance 原始字符串,不先从 quote 排名挑选币种。
检查结果:网络、合约地址、原生币标志、精度与 balance 可逐项回查。
3. 按 decimals 做整数缩放
人类数量为 balance ÷ 10^contract_decimals。例如纯算术样例 balance="1234500"、decimals=6,应得到 1.2345;这不代表所有稳定币都有 6 位。用大整数/十进制定点运算,避免 JavaScript Number 直接吞掉大额整数尾数。
检查结果:换算可回算为原始 balance,显示位数没有被另一币种的精度覆盖。
4. 区分余额、报价和时间
把 quote、quote_rate、quote_currency 与余额分开记录;报价缺失不能推出 Token 数量为零。再核对 updated_at、chain_tip_height、chain_tip_signed_at 以及条目的 block_height;两个数据源不同区块或报价时刻,估值自然可能不一致。
检查结果:数量、价格、计价币、索引时间和链高度分别有值或明确缺失标记。
5. 检查过滤与特殊 Token 范围
若未找到资产,检查 no-spam 查询选项及 is_spam;它们是疑似垃圾资产过滤,不能据此认定合约安全或余额不存在。rebasing 支持限定于 Foundational Chains,不从其他链数据推断。整理缺失字段、过滤参数和网络后再申请进一步查询,别靠反复收费重试猜原因。
检查结果:缺失归因为错误响应、过滤、网络/端点范围或待核,而非直接记为零。
怎样确认完成
- 输出含端点/链/地址、目标资产身份、原始余额与换算、估值和索引时间。
- 核验为官方文档及接口字段检查;未调用实时或付费接口。
常见错误与边界
- quote 为零或空和 balance 为零不是同一事实。
- 同一 ticker 不足以定位合约,必须带网络和 contract_address。
- 索引余额、钱包即时状态和可转出额度是不同问题;spam 标志不是安全审计。