Перейти к основному содержанию
POST
getHistoricalTokenAccountsByOwner
getHistoricalTokenAccountsByOwner находится на стадии бета-тестирования. Параметры, цены, форматы ответов и охват данных могут измениться.

Обзор

getHistoricalTokenAccountsByOwner возвращает счета SPL Token и Token-2022, которыми кошелёк владел в прошлом слоте или сразу после определённой транзакции в этом слоте. Этот метод RPC доступен исключительно в Helius. Стандартный метод getTokenAccountsByOwner возвращает только текущее состояние. При кодировке jsonParsed суммы токенов используют количество десятичных знаков каждого минта в запрошенной позиции, поэтому балансы отражают средства кошелька на тот момент. История доступна начиная со слота 444 959 999 (7 сентября 2026 года), соответствующего состоянию в начале эпохи 1030. getHistoricalTokenAccountsByOwner доступен в основной сети для тарифных планов Business и выше. В период бета-тестирования каждый вызов стоит 0 кредитов. Цены могут измениться.

Отличия от getTokenAccountsByOwner

  • Фильтр по минту или программе необязателен. Без фильтра вы получите все токен-счета, которыми владел кошелёк. Чтобы сузить результаты, укажите либо mint, либо programId в объекте конфигурации (третьем параметре), но не оба одновременно.
  • Второй параметр — объект запроса, который выбирает позицию в истории, а не фильтр по минту или программе.
  • result.value — это объект с accounts и paginationKey, а не массив.

Выбор позиции в истории

Второй параметр — это объект запроса:
  • Не указан или {}: последний проиндексированный слот с учётом запрошенного уровня подтверждения.
  • { "slot": 445000000 }: конец слота 445 000 000.
  • { "slot": 445000000, "transactionIndex": 10 }: сразу после выполнения транзакции с индексом 10 в этом слоте.
Подробнее о работе позиций см. в руководстве по историческим счетам.

Пример запроса

Этот запрос возвращает токен-счета USDC кошелька на конец слота 445 000 000:

Получение всех токен-счетов с пагинацией

Результаты упорядочены сначала по минту, затем по адресу токен-счёта. Каждый ответ возвращает value.accounts и value.paginationKey — курсор в формате <mint>:<tokenAccount>. Передавайте его в следующем запросе, пока он не станет равен null.
Страница может содержать мало записей или быть пустой, но при этом включать paginationKey. Только значение null для paginationKey означает, что вы достигли конца.
При пагинации всегда явно передавайте slot. Если его не указать, каждая страница будет считывать последний проиндексированный слот, поэтому страницы могут относиться к разным моментам времени.

Чтение ответа

Каждая запись в value.accounts содержит pubkey токен-счёта и объект account. Объект счёта содержит те же поля, что и getAccountInfo, а также lastUpdatedAt:
  • lastUpdatedAt.slot и lastUpdatedAt.transactionIndex определяют запись, которая создала это состояние.
  • Значение lastUpdatedAt.slot, равное 444 959 999, при null в transactionIndex означает, что токен-счёт не изменялся с начала охвата истории.
  • context.slot — это последний слот, проиндексированный Helius на момент обработки запроса, а не запрошенный вами слот.

Ошибки

Связанные методы

Historical Accounts Guide

Узнайте, как работают позиции, охват и lastUpdatedAt для методов исторических счетов

getHistoricalAccountInfo

Получите данные одного счёта в прошлом слоте

getTransactionsForAddress

Найдите slot и transactionIndex транзакций, которые хотите проверить

getTokenAccountsByOwnerV2

Получите текущие токен-счета кошелька с пагинацией

Параметры запроса

string
обязательно
Адрес кошелька в кодировке Base58, который владел токен-счетами. Передайте кошелёк владельца, а не токен-счёт.
number
Слот, для которого нужно прочитать состояние. Возвращает состояние счёта на конец этого слота. Самый ранний поддерживаемый слот — 444959999, соответствующий состоянию в начале эпохи 1030. Если параметр не указан, считывается последний проиндексированный слот с учётом запрошенного уровня подтверждения.
number
Позиция транзакции в слоте. Возвращает состояние счёта сразу после выполнения этой транзакции, а не в конце слота. Требуется указать slot.
string
Возвращает только токен-счета этого минта. Нельзя использовать вместе с programId.
string
Возвращает только токен-счета, принадлежащие этой токен-программе. Нельзя использовать вместе с mint.
  • TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
  • TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb
string
по умолчанию:"base64"
Формат кодирования данных счёта. При использовании jsonParsed суммы токенов учитывают количество десятичных знаков минта в запрошенной позиции. base58 и binary не поддерживаются.
  • base64
  • base64+zstd
  • jsonParsed
object
Возвращает только часть данных каждого счёта. Применяется к кодировкам base64 и base64+zstd.
number
обязательно
Смещение в байтах, с которого нужно начать чтение.
number
обязательно
Количество возвращаемых байтов.
number
по умолчанию:"5000"
Максимальное количество возвращаемых токен-счетов (1–5 000).
string
Курсор из paginationKey предыдущего ответа в формате &lt;mint&gt;:&lt;tokenAccount&gt;. Если вы также указали mint, минт курсора должен ему соответствовать.
string
по умолчанию:"finalized"
Уровень подтверждения. processed не поддерживается.
  • finalized
  • confirmed
number
Минимальный слот, в котором может быть обработан запрос.

Авторизации

api-key
string
query
обязательно

Ваш ключ API Helius. Его можно получить бесплатно в панели управления.

Тело

application/json
jsonrpc
enum<string>
по умолчанию:2.0
обязательно

Версия протокола JSON-RPC.

Доступные опции:
2.0
Пример:

"2.0"

id
string
по умолчанию:1
обязательно

Уникальный идентификатор запроса.

Пример:

"1"

method
enum<string>
по умолчанию:getHistoricalTokenAccountsByOwner
обязательно

Название вызываемого метода RPC.

Доступные опции:
getHistoricalTokenAccountsByOwner
Пример:

"getHistoricalTokenAccountsByOwner"

params
(string | Запрос · object | Конфигурация · object)[]
обязательно

Массив, содержащий адрес кошелька владельца, необязательный объект запроса для выбора позиции в истории и необязательный объект конфигурации.

Required array length: 1 - 3 elements

Адрес кошелька, которому принадлежали аккаунты токенов, в кодировке Base58. Передайте кошелёк владельца, а не аккаунт токена.

Пример:

"86xCnPeV69n6t3DnyGvkKobf9FdN2H9oiVDdaMpo2MMY"

Ответ

Страница исторических аккаунтов токенов успешно получена.

jsonrpc
enum<string>

Версия протокола JSON-RPC.

Доступные опции:
2.0
Пример:

"2.0"

id
string

Идентификатор, соответствующий запросу.

Пример:

"1"

result
object