Как вычислить первый слот следующей эпохи 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. В самом граничном слоте блок может отсутствовать. Закрывайте старый период после того, как финализированное наблюдение подтвердит переход в новую эпоху.
Сохраните номер эпохи с обеими границами. Если монитор перезапустится после перехода, по этим данным можно установить, какой именно период остался без сверки.