Как проверить доступность старых блоков на RPC Solana

Обработчику нужны блоки за старый диапазон слотов. Три небольших RPC-запроса помогут определить глубину истории, получить список слотов для выгрузки и проверить чтение блока.

Найдите начало доступной истории

{"jsonrpc":"2.0","id":1,"method":"getFirstAvailableBlock","params":[]}

Отправьте JSON методом POST на тот адрес RPC, с которого будете загружать данные. Допустим, ответ равен 220000, а выгрузка начинается со слота 215000. Для диапазона 215000–219999 потребуется другой источник. Продолжите проверку со слота 220000 или позже. Сохраните адрес узла и время проверки, поскольку граница хранения меняется.

Запросите слоты, для которых есть блоки

{"jsonrpc":"2.0","id":2,"method":"getBlocks","params":[220000,220010,{"commitment":"finalized"}]}

Подставьте небольшой интервал из своего диапазона. Обе границы включены. Для чтения используйте номера из массива result. Между соседними элементами возможен разрыв, поскольку запланированный слот может пройти без блока. Одного пропуска недостаточно для вывода об удалении истории.

Проверьте данные для импорта

{"jsonrpc":"2.0","id":3,"method":"getBlock","params":[220000,{"commitment":"finalized","transactionDetails":"none","rewards":false}]}

Подставьте вместо 220000 один из полученных слотов. Объект с blockhash и parentSlot подтверждает доступность заголовка этого блока. Если нужны транзакции, повторите запрос с transactionDetails равным full и укажите максимальную версию транзакций, которую понимает ваш декодер. При ответе null или ошибке JSON-RPC сохраните номер слота для разбора перед завершением выгрузки.

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