Skip to main content
Метод RPC getInflationReward позволяет запрашивать инфляционные вознаграждения (обычно называемые вознаграждениями за стейкинг), начисленные на один или несколько адресов за определённую эпоху. Это полезно для проверки вознаграждений, полученных стейк-аккаунтами или любыми другими аккаунтами, на которые могли быть начислены инфляционные вознаграждения.
Не объединяйте запросы в пакеты для повышения производительностиПакетная обработка архивных методов значительно увеличивает задержку. Пакеты из более чем 10 запросов не допускаются.

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

  • Проверка вознаграждений за стейкинг: Проверьте, получил ли стейк-аккаунт ожидаемые вознаграждения за прошедшую эпоху.
  • Отслеживание истории вознаграждений: Запрашивайте вознаграждения за несколько эпох, чтобы сформировать историю для адреса.
  • Аудит выплат валидатора: Валидаторы могут использовать этот метод для проверки распределения вознаграждений (хотя вознаграждения выплачиваются стейк-аккаунтам, а не напрямую идентификаторам валидаторов).

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

Метод принимает два основных параметра:
  1. addresses (массив строк): список публичных ключей аккаунтов в кодировке base-58, которые необходимо запросить. Максимально допустимое количество адресов может зависеть от поставщика RPC (например, Helius позволяет передавать до 1005 адресов на платных тарифах).
  2. config (объект, необязательно): объект конфигурации со следующими необязательными полями:
    • commitment (строка, необязательно): задаёт уровень подтверждения. Если значение не указано, по умолчанию используется finalized.
    • epoch (целое число, необязательно): номер эпохи, за которую необходимо получить вознаграждения. Если параметр опущен, узел RPC обычно использует последнюю завершённую эпоху, за которую уже были распределены вознаграждения.
    • minContextSlot (целое число, необязательно): минимальный слот, в котором можно обработать запрос. Это гарантирует, что запрос выполняется к состоянию реестра, обработавшему данные как минимум до этого слота.

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

Поле result ответа JSON-RPC представляет собой массив, соответствующий входному массиву addresses. Каждый элемент массива результатов будет содержать одно из следующих значений:
  • Объект со сведениями об инфляционном вознаграждении, если адрес получил вознаграждение за указанную эпоху.
  • null, если адрес не получил инфляционное вознаграждение за эту эпоху или аккаунт не существовал.
Объект вознаграждения содержит следующие поля:
  • epoch (u64): эпоха, за которую было начислено вознаграждение.
  • effectiveSlot (u64): слот, в котором вознаграждение было применено и вступило в силу.
  • amount (u64): сумма вознаграждения в лампортах.
  • postBalance (u64): баланс аккаунта в лампортах после начисления вознаграждения.
  • commission (u8 | undefined): для голосующих аккаунтов — процент комиссии (0–100), удержанный валидатором на момент начисления вознаграждения. Для неголосующих аккаунтов значением будет undefined.

Примеры

1. Получение инфляционного вознаграждения для одного адреса за предыдущую эпоху

В этом примере выполняется получение инфляционного вознаграждения для определённого адреса за последнюю завершённую эпоху.

2. Получение инфляционных вознаграждений для нескольких адресов за определённую эпоху

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

  • Выбор эпохи: Вознаграждения начисляются один раз за эпоху. Убедитесь, что запрашиваете правильный номер эпохи.
  • Время начисления вознаграждений: Инфляционные вознаграждения рассчитываются в конце эпохи и применяются в начале следующей. Поле effectiveSlot указывает, когда это происходит.
  • Результаты null: Значение null для адреса означает, что для этого адреса не найдено вознаграждение за указанную эпоху. Это может произойти, если аккаунт не соответствовал требованиям (например, на стейк-аккаунте было недостаточно средств в стейкинге), вознаграждение было нулевым или аккаунт в тот момент не существовал.
  • Ограничения частоты запросов: Учитывайте ограничения частоты запросов поставщика RPC, особенно при запросе большого количества адресов.
Это руководство поможет вам использовать метод getInflationReward для точного получения и проверки вознаграждений за стейкинг в сети Solana.