Skip to main content
POST
getProgramAccountsV2

Обзор

getProgramAccountsV2 — это расширенная версия стандартного метода getProgramAccounts, предназначенная для приложений, которым необходимо эффективно запрашивать большие наборы учетных записей, принадлежащих определенным программам Solana. Этот метод поддерживает пагинацию на основе курсора и инкрементальные обновления.
Новые возможности V2:
  • Пагинация на основе курсора: задайте лимит от 1 до 10 000 учетных записей на запрос
  • Инкрементальные обновления: используйте changedSinceSlot, чтобы получать только недавно измененные учетные записи
  • Повышенная производительность: предотвращает тайм-ауты и сокращает использование памяти при работе с большими наборами данных
  • Обратная совместимость: поддерживает все существующие параметры getProgramAccounts
  • Необязательный withContext: значение true добавляет slot и apiVersion в result.context; если параметр не указан или равен false, эти поля не включаются

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

Scalable Queries

Эффективно обрабатывайте программы с миллионами учетных записей, разбивая результаты на страницы

Real-time Sync

Используйте changedSinceSlot для инкрементальных обновлений и синхронизации данных в реальном времени

Prevent Timeouts

Благодаря пагинации большие запросы, которые раньше завершались по тайм-ауту, теперь выполняются надежно

Memory Efficient

Обрабатывайте данные частями вместо одновременной загрузки всего набора в память

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

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

Базовая схема пагинации

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

Советы по производительности

Оптимальный размер лимита: в большинстве случаев лимит от 1 000 до 5 000 учетных записей на запрос обеспечивает оптимальный баланс производительности и надежности.
  • Начните с меньших лимитов (1000) и увеличивайте их с учетом производительности вашей сети
  • Используйте подходящую кодировку: jsonParsed для удобства, base64 для производительности
  • Применяйте фильтры, чтобы уменьшить размер набора данных перед пагинацией
  • Сохраняйте paginationKey, чтобы возобновить запросы после прерывания
  • Отслеживайте время ответа и соответствующим образом корректируйте лимиты

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

Логическое значение в объекте конфигурации программы (params[1]). Изменяется только структура result, а не фильтры, лимиты или пагинация.

Миграция с getProgramAccounts

Перейти с исходного метода просто: замените имя метода и добавьте параметры пагинации.

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

getProgramAccounts

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

getTokenAccountsByOwnerV2

Метод V2 для запросов учетных записей токенов

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

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

Авторизации

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

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

Тело

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

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

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

"2.0"

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

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

Пример:

"1"

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

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

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

"getProgramAccountsV2"

params
(string | object)[]
обязательно

Параметры расширенного метода с пагинацией.

Открытый ключ (адрес) программы Solana, для которой запрашиваются аккаунты, в виде строки, закодированной в base-58.

Пример:

"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"

Ответ

Программные аккаунты с пагинацией успешно получены.

jsonrpc
enum<string>

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

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

"2.0"

id
string

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

Пример:

"1"

result
без withContext · object

Программные аккаунты с пагинацией. Если withContext имеет значение false или не указан, эти поля находятся непосредственно в result; если withContext имеет значение true — в result.value.