Skip to main content
POST
getTokenAccountsByOwnerV2

Обзор

getTokenAccountsByOwnerV2 — это улучшенная версия стандартного метода getTokenAccountsByOwner, специально разработанная для эффективного запроса портфелей токенов и обработки кошельков с большим количеством токенов. Этот метод поддерживает курсорную пагинацию и инкрементальные обновления.
Новые возможности V2:
  • Курсорная пагинация: настройте лимит от 1 до 10 000 токеновых счетов на запрос
  • Инкрементальные обновления: используйте changedSinceSlot, чтобы получать только недавно изменённые токеновые счета
  • Масштабирование портфеля: эффективно обрабатывайте кошельки с тысячами токеновых счетов
  • Обратная совместимость: поддерживаются все существующие параметры и фильтры getTokenAccountsByOwner
  • Необязательный withContext: значение true добавляет slot и apiVersion в result.context; если параметр не указан или равен false, эти поля не включаются
Требование к фильтру: в запросе необходимо указать либо mint (конкретный токен), либо programId (программа SPL Token или Token-2022). Запрос всех типов токенов владельца без фильтра не поддерживается.

Основные преимущества

Large Portfolios

Обрабатывайте кошельки с тысячами токеновых счетов без тайм-аутов и проблем с памятью

Real-time Tracking

Отслеживайте изменения портфеля в реальном времени с помощью changedSinceSlot для инкрементальных обновлений

withContext (необязательно)

Логическое значение в объекте конфигурации (params[2]). Изменяется только структура result, но не фильтры, лимиты или пагинация. Если параметр не указан или равен false: result.value представляет собой массив токеновых счетов. Если указано true: result.context и result.value представлены в виде объекта (accounts, paginationKey). Если вы обрабатываете оба варианта, выполняйте ветвление по Array.isArray(result.value).

Рекомендации по пагинации

Важное поведение пагинации: на завершение пагинации указывает только отсутствие возвращённых токеновых счетов. Из-за фильтрации API может вернуть меньше счетов, чем задано лимитом. Всегда продолжайте пагинацию, пока paginationKey не станет равен null.

Базовый запрос портфеля

Инкрементальные обновления портфеля

Поддержка токеновых программ

Поддержка Token-2022: укажите TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb в качестве programId, чтобы запрашивать счета Token-2022 с такими расширениями, как комиссии за переводы, процентные токены и другие.

Переход с getTokenAccountsByOwner

Для перехода достаточно добавить параметры пагинации в существующие запросы:

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

getTokenAccountsByOwner

Исходный метод без пагинации

getProgramAccountsV2

Метод V2 для запросов счетов программы

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

string
обязательно
Адрес кошелька Solana (публичный ключ) владельца счёта, токены которого требуется запросить, в виде строки с кодировкой base-58.
string
Адрес выпуска конкретного токена Solana, позволяющий получить только счета определённого токена или NFT.
string
Идентификатор конкретной токеновой программы Solana (обычно программы SPL Token), которая создала токеновые счета.
string
Уровень подтверждения для запроса.
  • confirmed
  • finalized
  • processed
number
Минимальный слот, на котором может быть обработан запрос.
boolean
Если указано true, возвращается result.context (метаданные снимка: slot, apiVersion), а accounts и paginationKey вкладываются в result.value как объект. Если указано false или параметр не задан, result.value представляет собой массив токеновых счетов для этой страницы, а paginationKey находится в result. Применяются те же фильтры и лимиты.
object
Запросить часть данных счёта.
number
Количество возвращаемых байтов.
number
Смещение в байтах, с которого начинается чтение.
string
Формат кодирования данных счёта.
  • base58
  • base64
  • base64+zstd
  • jsonParsed
number
Максимальное количество токеновых счетов, возвращаемых за один запрос (1–10 000).
string
Курсор пагинации в кодировке base-58 для получения последующих страниц. Используйте paginationKey из предыдущего ответа.
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>
по умолчанию:getTokenAccountsByOwnerV2

Имя вызываемого метода RPC.

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

"getTokenAccountsByOwnerV2"

params
string · object · object[]

Параметры запроса токен-аккаунтов с пагинацией, принадлежащих определенному публичному ключу.

Адрес кошелька Solana (публичный ключ) владельца аккаунта, токеновые активы которого нужно запросить, в виде строки, закодированной в base58.

Пример:

"A1TMhSGzQxMr1TboBKtgixKz1sS6REASMxPo1qsyTSJd"

Ответ

Токен-аккаунты владельца с пагинацией успешно получены.

jsonrpc
enum<string>

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

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

"2.0"

id
string

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

Пример:

"1"

result
без withContext · object

Токен-аккаунты с пагинацией, когда withContext имеет значение false или не указано. Соответствует привычной структуре, в которой список аккаунтов находится в result.value в виде массива, а не вложен в accounts.