钱包API处于测试阶段。端点和响应格式可能会发生变化。
概览
历史余额端点回答:在过去某个特定时间点,此钱包的特定代币(或原生SOL)的余额是多少? 虽然余额端点报告当前持有情况,balance-at报告在任何时间戳、日期时间或槽位的持有情况。
它会找到在指定时间点或之前涉及钱包和代币的单个最近交易,然后读取该交易的交易后余额。交易的交易后余额是从该交易到下一个交易所持有的余额,因此“时间T的余额”是最后一个相关交易在T时间点(或槽位)或之前的区块时间的交易后余额。对于典型钱包而言,这是一个准确的值,而不是估计。
- 代币(SPL / Token-2022):从交易的代币余额后读取,汇总钱包的代币账户中的此铸造代币。
- 原生SOL:从交易的lamport后余额中读取。用伪铸币
So11111111111111111111111111111111111111111表示原生SOL。
使用时机
使用历史余额API的情境:- 损益计算:确定某时期的起始和结束持有情况。
- 成本基础和税务批次:重建收购或处置事件时的余额。
- 争议解决:证明某钱包在特定时刻持有的内容。
- 快照验证:检查钱包在空投或治理快照时的余额。
- 会计和审计:在时期边界重建钱包状态。
快速开始
查询特定时间的代币余额
获取钱包在某个Unix时间戳的USDC余额:- JavaScript
- Python
- cURL
查询特定日期时间的代币余额
传递可读日期时间而不是时间戳。记得将空格URL编码为%20:
特定插槽的原生SOL余额
对于原生SOL,使用伪造的So11111111111111111111111111111111111111111。基于插槽的查询是精确且确定性的:
查询参数
time, datetime, 或 slot 中必须提供一个。提供零个或多个则返回400错误。
日期时间格式
接受的格式:- 只有日期:
2025-01-10→ UTC午夜 - 日期+时间:
2025-01-10 19:20:00或2025-01-10T19:20:00(秒可选)→ UTC - 带明确时区:
2025-01-10T19:20:00Z,2025-01-10T19:20:00+02:00,2025-01-10T19:20:00-05:00→ 按给定时区处理
01/10/2025, 2025-13-10, 2025-02-30)返回400错误。
响应格式
字段说明
wallet: 查询的钱包地址的回显。mint: 查询的铸币(当为本地时为 SOL 伪铸币)的回显。isNative: 当结果是本地 SOL 时为true。balance: 以十进制字符串形式表示的人类可读金额——字符串而不是数字,因此大额余额不会失去精度。尾随的零被去除("1.5",而不是"1.500000")。balanceRaw: 以最小单位(SOL 的 lamports)表示的确切金额,作为字符串。decimals: 代币小数位(SOL 为 9)。requested: 查询的回显。当使用datetime时,time也会填充为已解析的纪元秒数,使得 UTC 解释可以看到。asOf: 读取余额的交易(slot,blockTime,signature)。
asOf: null 表示为零,而不是错误。当钱包在请求时间点或之前没有匹配的交易时,端点返回 200,带有 balance: "0" 和 asOf: null——钱包当时没有持有该代币。
用例
一段时间内的余额变化
比较两个时间点的持有量:快照资格检查
验证钱包在快照槽中持有代币:最佳实践
- 使用
slot获取确定性结果。time和datetime通过验证器报告的区块时间解析,可能会漂移几秒。当精确的可重复性很重要时(快照、审计),通过slot查询。 - 将余额解析为字符串。
balance和balanceRaw是字符串以保持精度。使用BigInt(balanceRaw)(或您的语言的任意精度整数)进行算术运算——不要强制转换为浮点数。 - 将
asOf: null视为零。nullasOf是一个成功的响应,表示钱包在请求点之前对该代币没有活动。不要将其处理为错误。 - 缓存历史结果。 在过去某一点的余额从不改变。永久缓存结果以避免重复的 API 调用。
常见错误
限制
- 多代币账户钱包可能会少计。 余额从最近的匹配交易中读取。常见情况是每个mint一个关联代币账户是准确的。一个钱包持有多个代币账户的相同mint,其中最新交易只涉及其中一些账户,可能会少计。
- 非常大余额的本机SOL精度。 对于超过约9,007,199 SOL (2⁵³ lamports)的SOL余额,精度可能在上游丢失。代币金额不受影响。
time/datetime精度取决于验证器报告的区块时间,可能会有几秒钟的漂移。使用slot获得精确、确定的结果。- 每次请求单个代币。 没有多mint或“在时间T的所有余额”批量形式。
下一步
钱包余额
获取钱包当前的代币和NFT持有量及其美元价值。
钱包API概览
所有钱包API端点和共享约定。
API参考
历史余额的请求和响应模式。