Ошибка: Exit code 33 — Invalid Sequence Number
Причина и решение ошибки exit code 33 (неверный seqno) при отправке транзакции из кошелька TON.
Exit code 33 — Invalid Sequence Number
В стандартных кошельках (V3/V4) код 33 значит: seqno в подписанном external-сообщении не совпадает с seqno, хранящимся в контракте кошелька. Транзакция отклонена как replay или устаревшая.
Причина
Кошелёк принимает external-сообщение только с текущим seqno. После успешного исполнения контракт увеличивает seqno на 1. Типичные сценарии:
- два клиента взяли один и тот же
seqnoи оба отправили tx — пройдёт только первая; - ты прочитал
seqno, но между чтением и отправкой уже прошла другая транзакция; - в сообщение попал захардкоженный или stale
seqno.
Это кастомный throw_unless(33, …) кошелька, не action-phase код TVM «action list too long».
Решение
Как избежать в будущем
Один writer на кошелёк: читай seqno → подписывай → жди инкремента → только потом следующая tx. Не кэшируй seqno между сессиями и не параллель отправки с одним кошельком.
Материалы gramdocs.tech носят образовательный характер и не являются финансовой, юридической или инвестиционной рекомендацией. Работа с блокчейном TON и токеном Gram связана с рисками потери средств. Правовая информация