ГЛАВНАЯ / ИНСТРУКЦИИ / PROCESSED, CONFIRMED И FINALIZED В SOLANA: КАК ЧИТАТЬ СТАТУС ТРАНЗАКЦИИ
Processed, confirmed и finalized в Solana: как читать статус транзакции
Processed, confirmed и finalized описывают уровень принятия блока кластером, а не три разных ответа на вопрос об успешности инструкции. Ответ getSignatureStatuses нужно читать как минимум по confirmationStatus и err: обработанная транзакция может завершиться ошибкой, а ранний processed-статус ещё может исчезнуть при откате ветки.
Commitment показывает зрелость блокового состояния
Processed – узел уже обработал блок, это наиболее свежий взгляд на сеть, но такой блок может быть откатан. Confirmed означает, что блок получил голоса более двух третей активного стейка. Finalized – наиболее сильный уровень финальности, признаваемый кластером. Это последовательные уровни, а не оценка качества RPC-ответа.
Нужная граница зависит от действия приложения. Для обновления интерфейса может хватить свежего processed-статуса; необратимая выдача товара или расчёт может требовать более сильного подтверждения. Не подменяйте политику приложения произвольным количеством секунд: ориентируйтесь на фактически возвращённый уровень и требования процесса.
- требуемая гарантия определена до запроса
- processed не принят за финальность
- confirmed и finalized различены
Commitment не заменяет проверку поля err
getSignatureStatuses возвращает slot, confirmationStatus и err для найденной подписи. Уровень confirmationStatus отвечает, насколько продвинулось подтверждение блока; err показывает, завершилась ли сама транзакция ошибкой. Для бизнес-логики требуйте одновременно достаточный уровень commitment и err равный null.
Положительный RPC-ответ на sendTransaction не является processed-статусом: он сообщает лишь о приёме запроса к ретрансляции. Продолжайте мониторинг по сигнатуре. Если транзакция появилась с ошибкой, проверьте подробности через getTransaction и оцените комиссию и эффект инструкции отдельно.
- confirmationStatus прочитан
- err проверен отдельно
- успешный ответ отправки не принят за обработку
Null означает отсутствие записи в зоне поиска конкретного RPC
Метод getSignatureStatuses без searchTransactionHistory использует недавний status cache. Подпись, которая вышла за его границы, может вернуть null, даже если транзакция когда-то обрабатывалась. Попросите endpoint искать историю, если такая опция доступна, и при необходимости сравните результат с другим архивным источником и ожидаемым состоянием аккаунтов.
Разные узлы могут иметь разные возможности хранения и разную свежесть. Поэтому фиксируйте endpoint, параметры commitment, searchTransactionHistory и время запроса. Не переводите null автоматически в «не исполнено» и не создавайте повторный платёж, пока не исключён исходный.
- область недавнего status cache учтена
- история включена при необходимости
- null не трактуется как доказательство отсутствия
Свяжите уровень подтверждения с последствиями действия
Определите, что именно вы считаете завершением: показ операции в интерфейсе, учёт депозита, отпуск заказа или окончательное отражение в отчётности. Назначьте требуемый commitment, проверку err и источник данных. Для событийных подписок после разрыва соединения сверяйте историю через HTTP RPC: уведомление не является долговременным журналом.
Если состояние аккаунта читается с другим commitment, оно может временно расходиться с уровнем статуса транзакции. Используйте согласованные параметры, сохраняйте signature и slot, а важное событие связывайте с фактическим изменением ожидаемого баланса или состояния программы.
Частые вопросы
Processed означает, что платёж окончателен?
Нет. Processed может быть откатан при смене ветки.
Confirmed и finalized – одно и то же?
Нет. Confirmed получил голоса более двух третей активного стейка; finalized – сильнейший уровень commitment.
Статус confirmed гарантирует успешную инструкцию?
Нет. Отдельно проверьте err.
Что значит null в getSignatureStatuses?
Подпись не найдена в области поиска; без searchTransactionHistory обычно проверяется недавний кэш.
Когда можно считать действие завершённым?
Когда выбранный приложением уровень commitment достигнут, err равен null и выполнены дополнительные проверки состояния.
Чек-лист: processed, confirmed и finalized в solana: как читать статус транзакции
- необходимый уровень commitment задан заранее;
- confirmationStatus читается отдельно от текста интерфейса;
- err проверен и равен null для успешного действия;
- processed не принят за финальность;
- при null учтены кэш, история и ограничения endpoint;
- после разрыва подписки состояние сверено через HTTP;
- уровень подтверждения соответствует последствиям операции.
Материал подготовлен редакцией сайта и проверен 7 ноября 2026 года. Условия бирж, кошельков и блокчейн-сетей могут меняться. Перед операцией сверяйте данные в интерфейсе выбранного сервиса.