Ankr 余额对不上:核对 API 入口、区块标签与 wei
链小知 · 进阶 · 核验 · 依官方文档整理
从既有 eth_getBalance 记录定位原生 ETH 余额差异,排除索引型接口、pending 状态和十六进制单位误读。
开始前准备
- 准备预期 Ethereum 网络、完整公开账户地址、已有脱敏 endpoint、请求、响应和采样时间。
- 准备对照余额的来源及其区块号或状态;未知对照口径时先记为不可比较。
1. 确认使用 Chain RPC
检查 endpoint 路径:标准 Ethereum 方法使用 rpc.ankr.com/eth/<API_KEY> 一类链入口,multichain/<API_KEY> 是 Advanced API。两者共用主机和 key,但任务与方法不同;不要把索引型多链代币列表当 eth_getBalance 的原始结果。记录主机及链路径,隐藏 key。
检查结果:记录中 method 为 eth_getBalance,入口是对应 Ethereum Chain RPC。
2. 核对账户和区块输入
eth_getBalance 的 params 依次是完整 20 字节地址和区块号/标签。固定历史块用十六进制区块号;最新状态用 latest,候选状态用 pending,更严格的确认口径按 safe/finalized 分别记录。对照两个不同状态的余额时先解释口径差异,不直接判节点错误。
检查结果:地址完全一致,双方区块号或标签可对应,网络和采样时间已保存。
3. 将十六进制 wei 转成 ETH
先看 JSON-RPC error,再取 result;它是十六进制数量、单位 wei。用大整数解析后以 10^18 为比例显示 ETH,避免先转浮点数丢精度。例如示意值 0xde0b6b3a7640000 等于 10^18 wei,即 1 ETH;该示意不代表你的查询余额。eth_getBalance 查的是原生币,ERC-20 余额不能据此判零。
检查结果:原始 result、十进制 wei 和显示 ETH 三者留存,单位明确且无浮点截断。
4. 区分状态差异与读取失败
latest 可随链头重组变化,pending 取决于节点候选状态,因此两个标签不同的读数不必相等。失败响应、未知网络或缺失 result 记为读取失败,不改成余额 0。无论是否成功都保存响应口径,必要的后续核查只针对同一账户与状态。
检查结果:余额差异已有明确口径或保留待查;失败与零值分别呈现。
5. 按套餐整理用量边界
核对当前是 Public、Freemium 还是 Premium;Advanced API 权限和限流不能照搬普通 RPC。Premium 按 API credits 收费,节点返回错误不一定代表不收费;service plans 对不可解析请求与 429 等另列规则,应按真实请求分类复核。给排查报告附套餐与调用类型,别把 credits 直接写成请求次数。
检查结果:输出网络、账户、区块口径、原始单位、差异原因及服务用量口径。
怎样确认完成
- 可以复核同账户同状态的原生余额,或明确指出网络、区块、单位和错误造成的不可比。
- 仅完成官方文档核验;示意转换不是 Ankr API 实测回执。
常见错误与边界
- ETH 原生余额与 ERC-20 同名或其他链资产属于不同查询。
- pending 不代表已最终确认的账户余额。
- URL 路径含个人 key,分享排查记录前需遮盖。