Материал проверен 4 октября 2026?
БК

ГЛАВНАЯ / ИНСТРУКЦИИ / BLOCKHASH EXPIRED В SOLANA: ПОЧЕМУ ТРАНЗАКЦИЮ НУЖНО СОЗДАТЬ ЗАНОВО

Blockhash expired в Solana: почему транзакцию нужно создать заново

Solana использует недавний blockhash как часть сообщения транзакции, чтобы ограничить период его допустимости. Когда достигнута возвращённая вместе с blockhash высота lastValidBlockHeight, старое подписанное сообщение больше нельзя считать пригодным для новой отправки. Сначала выясните судьбу исходной операции, а затем пересоздавайте её.

Причина

Blockhash подтверждает свежесть сообщения транзакции

При создании Solana-транзакции в сообщение включают недавний blockhash. Это ограничивает срок, в течение которого сеть принимает данную собранную операцию, и снижает риск повторного воспроизведения старого сообщения.

RPC возвращает blockhash вместе с lastValidBlockHeight. Это высота последнего блока, при которой сообщение остаётся допустимым. Уведомление кошелька об истечении следует сверять с этими данными и статусом операции, а не превращать в универсальный таймер в секундах.

  • blockhash встроен в подписываемое сообщение;
  • lastValidBlockHeight задаёт границу допустимости;
  • скорость блоков может меняться.
Проверка

Перед повтором найдите старую signature и проверьте результат

Сообщение об истечении может появиться после отправки или пока интерфейс ожидает подтверждения. Найдите signature/TXID исходной попытки в истории кошелька или совместимом обозревателе для правильной сети. Проверьте, не включена ли операция и не выполнился ли перевод.

Не создавайте повторный платёж только потому, что экран перестал ждать. Если статус неоднозначен, сохраните signature и выясните результат через доступный кошелёк, обозреватель или официальный канал сервиса-получателя.

Истёкшая попытка и подтверждённая неудача – разные состояния. Сначала проверьте исходную операцию, иначе можно отправить средства повторно.
Новая попытка

После истечения соберите транзакцию с новым blockhash

Если исходное сообщение уже не может быть исполнено и перевод не состоялся, создайте новую транзакцию с актуальным blockhash и новым lastValidBlockHeight. Ещё раз проверьте сеть, актив, сумму, получателя, комиссии и инструкции.

Blockhash входит в подписываемое сообщение. После его замены сообщение меняется, поэтому прежние подписи не подтверждают новую версию. Все нужные подписанты должны подписать заново. Не редактируйте старое подписанное сообщение, полагая, что подпись остаётся действительной.

  • получен свежий blockhash;
  • создано новое сообщение;
  • проверены те же реквизиты;
  • все подписи собраны заново.
Медленная подпись

При офлайн-процессе заранее учитывайте время ожидания

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

Для некоторых технических сценариев существует durable nonce, но это отдельный механизм с дополнительными правилами подготовки и расходования nonce. Не переключайте его вручную ради исправления обычной ошибки кошелька; следуйте документации используемого signer-а.

СитуацияДействие
Транзакция ещё ожидаетсяНайти signature и сверить статус
Срок допустимости прошёл, перевода нетСоздать новое сообщение с актуальным blockhash
Подпись затянуласьПовторно проверить высоту и правила signer-а
FAQ

Частые вопросы

Можно ли восстановить старую транзакцию после истечения blockhash?

Обычно её пересоздают с новым blockhash, если проверка подтвердила, что исходный перевод не исполнился.

Нужно ли заново подписать транзакцию?

Да. Новый blockhash меняет подписываемое сообщение, поэтому старые подписи не подходят.

Сколько секунд действует blockhash?

Фиксированное число секунд ненадёжно. Используйте lastValidBlockHeight, полученный вместе с blockhash.

Что делать, если исходный статус неизвестен?

Не отправлять дубликат до проверки signature и результата в правильной сети.

Итоговая проверка

Чек-лист: blockhash expired в solana: почему транзакцию нужно создать заново

  • исходная signature найдена;
  • сеть и итог операции проверены;
  • высота сопоставлена с lastValidBlockHeight;
  • повтор не создаёт риск двойного перевода;
  • новое сообщение содержит свежий blockhash;
  • все подписанты подтвердили именно новую версию.

Материал подготовлен редакцией сайта и проверен 4 октября 2026 года. Условия бирж, кошельков и блокчейн-сетей могут меняться. Перед операцией сверяйте данные в интерфейсе выбранного сервиса.