getVoteAccounts возвращает информацию обо всех аккаунтах голосования (валидаторах) в текущем банке. Он разделяет валидаторов на current (активных) и delinquent, а также предоставляет сведения об их стейке, активности голосования и идентификаторе.
Распространенные сценарии использования
- Мониторинг валидаторов: Отслеживание состояния, стейка и производительности валидаторов в сети.
- Панели управления стейкингом: Отображение информации о доступных валидаторах для пользователей, которые хотят делегировать свои SOL.
- Анализ состояния сети: Оценка общего состояния и децентрализации сети посредством анализа распределения стейка и активности валидаторов.
- Выявление неактивных валидаторов: Поиск валидаторов, которые не участвуют активно в достижении консенсуса.
Параметры запроса
Этот метод принимает необязательный объект конфигурации со следующими полями:commitment(строка, необязательно): Задает уровень подтверждения для запроса (например,"finalized","confirmed","processed"). Если параметр не указан, используется уровень подтверждения узла по умолчанию.votePubkey(строка, необязательно): Если параметр указан, результаты будут отфильтрованы и будут содержать только заданный адрес аккаунта голосования валидатора (в кодировке base-58).keepUnstakedDelinquents(логическое значение, необязательно): По умолчанию имеет значениеfalse. Если установить значениеtrue, списокdelinquentбудет включать валидаторов без активированного стейка. В противном случае они будут исключены.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содержит историю эффективности валидатора при получении кредитов за голосование.
getVoteAccounts, с помощью которого вы можете запрашивать и анализировать информацию о валидаторах в сети Solana.