Skip to main content
Метод RPC getVoteAccounts возвращает информацию обо всех аккаунтах голосования (валидаторах) в текущем банке. Он разделяет валидаторов на current (активных) и delinquent, а также предоставляет сведения об их стейке, активности голосования и идентификаторе.

Распространенные сценарии использования

  • Мониторинг валидаторов: Отслеживание состояния, стейка и производительности валидаторов в сети.
  • Панели управления стейкингом: Отображение информации о доступных валидаторах для пользователей, которые хотят делегировать свои SOL.
  • Анализ состояния сети: Оценка общего состояния и децентрализации сети посредством анализа распределения стейка и активности валидаторов.
  • Выявление неактивных валидаторов: Поиск валидаторов, которые не участвуют активно в достижении консенсуса.

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

Этот метод принимает необязательный объект конфигурации со следующими полями:
  1. commitment (строка, необязательно): Задает уровень подтверждения для запроса (например, "finalized", "confirmed", "processed"). Если параметр не указан, используется уровень подтверждения узла по умолчанию.
  2. votePubkey (строка, необязательно): Если параметр указан, результаты будут отфильтрованы и будут содержать только заданный адрес аккаунта голосования валидатора (в кодировке base-58).
  3. keepUnstakedDelinquents (логическое значение, необязательно): По умолчанию имеет значение false. Если установить значение true, список delinquent будет включать валидаторов без активированного стейка. В противном случае они будут исключены.
  4. delinquentSlotDistance (u64, необязательно): Задает количество слотов, на которое валидатор должен отставать от вершины реестра, чтобы считаться неактивным. Если параметр не указан, узел использует значение по умолчанию.

Структура ответа

Поле result в ответе JSON-RPC представляет собой объект, содержащий два массива:
  • current: Массив объектов, каждый из которых представляет активный аккаунт голосования со следующими полями:
    • votePubkey (строка): Адрес аккаунта голосования (в кодировке base-58).
    • nodePubkey (строка): Открытый ключ идентификатора узла валидатора (в кодировке base-58).
    • activatedStake (u64): Объем стейка в лампортах, делегированный этому аккаунту голосования и активный в текущей эпохе.
    • epochVoteAccount (логическое значение): true, если аккаунт голосования был активен хотя бы один раз в течение текущей эпохи.
    • commission (число): Размер комиссии в процентах (0–100), взимаемой валидатором.
    • lastVote (u64): Номер последнего слота, за который проголосовал этот валидатор.
    • rootSlot (u64): Последний слот, который узел считал корневым (полностью подтвержденным блоком, который не будет отменен).
    • epochCredits (массив): Массив массивов, каждый внутренний массив которого содержит [epoch, credits_earned_in_epoch, previous_total_credits].
  • delinquent: Массив объектов с той же структурой, что и current, представляющих валидаторов, которых узел считает неактивными.
Пример фрагмента ответа:

Примеры кода

Рекомендации разработчикам

  • Большой объем ответа: Этот метод может возвращать большой объем данных, особенно в сетях с большим количеством валидаторов, таких как Mainnet Beta. Учитывайте размер ответа и время его обработки.
  • Определение неактивности: Определение понятия «неактивный» может зависеть от delinquentSlotDistance и представления узла. Валидатор может считаться неактивным на одном узле, но не на другом, если узлы по-разному определяют вершину реестра.
  • Активация стейка: activatedStake отражает стейк, активный в текущей эпохе. Активация и деактивация стейка требуют времени.
  • Кредиты эпохи: epochCredits содержит историю эффективности валидатора при получении кредитов за голосование.
В этом руководстве рассматривается метод RPC getVoteAccounts, с помощью которого вы можете запрашивать и анализировать информацию о валидаторах в сети Solana.