Как вычислить первый слот следующей эпохи Solana

Отчёту по эпохам нужна точная граница в слотах, даже если примерное время перехода сдвигается. Нужные счётчики приходят одним ответом RPC.

Возьмите счётчики из одного ответа

Прочитайте вместе absoluteSlot, slotIndex и slotsInEpoch при finalized. Вычтите slotIndex из absoluteSlot, чтобы найти начало текущей эпохи. Прибавьте slotsInEpoch, чтобы получить первый слот следующей.

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "getEpochInfo",
  "params": [
    {
      "commitment": "finalized"
    }
  ]
}

Проверьте переход перед закрытием отчёта

Например, при абсолютном слоте 10230, индексе 230 и длине эпохи 1000 текущая эпоха начинается в 10000 и заканчивается в 10999. Новая начинается в 11000. В самом граничном слоте блок может отсутствовать. Закрывайте старый период после того, как финализированное наблюдение подтвердит переход в новую эпоху.

Сохраните номер эпохи с обеими границами. Если монитор перезапустится после перехода, по этим данным можно установить, какой именно период остался без сверки.

Документация