| Объект | Где существует | Что доказывает |
|---|---|---|
| Initiating tx hash и receipt | Parent chain | Запрос к Inbox/bridge и его параметры |
| Ticket ID / creation record | Связь parent→child | Какой retryable появился в child chain |
| Auto-redeem/redeem tx hash | Child chain | Конкретную попытку исполнить ticket |
| Destination effect | Child state | Фактическое зачисление или вызов нужного contract |
- Объект
- Initiating tx hash и receipt
- Где существует
- Parent chain
- Что доказывает
- Запрос к Inbox/bridge и его параметры
- Объект
- Ticket ID / creation record
- Где существует
- Связь parent→child
- Что доказывает
- Какой retryable появился в child chain
- Объект
- Auto-redeem/redeem tx hash
- Где существует
- Child chain
- Что доказывает
- Конкретную попытку исполнить ticket
- Объект
- Destination effect
- Где существует
- Child state
- Что доказывает
- Фактическое зачисление или вызов нужного contract
Сначала отделить L1→L2 retryable от других направлений
Retryable в этой статье — сообщение от parent chain к Arbitrum child chain. Стандартный вывод из optimistic rollup движется в обратную сторону и проходит initiate, prove и finalize; его нельзя чинить вызовом ArbRetryableTx.redeem. Также bridge UI может использовать fast route или стороннего поставщика ликвидности — тогда источники статуса и recovery принадлежат этому продукту.
Зафиксируйте обе сети: chain ID родителя, chain ID потомка, bridge/Inbox address и initiating hash. Arbitrum SDK заранее знает Arbitrum One, Nova и Sepolia, но Orbit chain регистрируется отдельно. Не используйте адреса precompile, RPC, fee token или timeout одной сети как параметры другой.
Ticket created ещё не означает calldata executed
Разбор одного сообщения
- 1Проверить parent receipt
Убедитесь, что tx находится в нужной parent chain, имеет успешный receipt и действительно вызвала нужный Inbox/gateway.
- 2Извлечь сообщение
Через официальный SDK/dashboard получите ticket ID, destination, callvalue, calldata boundary, fee refund address и beneficiary.
- 3Найти child execution
Сопоставьте auto-redeem или manual redeem tx hash и receipt. Сама попытка redeem может существовать и завершиться revert.
- 4Проверить target state
Для token deposit сравните canonical child token, recipient и balance/event; для contract call — ожидаемое onchain state, а не только статус моста.
- 5Снять timeout
Если ticket ещё существует, прочитайте getTimeout(ticketId) в ArbRetryableTx конкретной child chain и сохраните block/time проверки.
Официальный tutorial показывает типичный путь: при достаточном gas ticket пытается исполниться сразу; при отсутствии gas или revert остаётся доступным для повторного исполнения на ограниченный период. Но фактический дедлайн — не фраза «примерно неделя»: его читает getTimeout на целевой сети. Custom Orbit chain может иметь иные параметры и native fee token.
| Состояние | Что оно означает | Действие |
|---|---|---|
| Parent tx неуспешна | Ticket мог не быть создан | Разобрать parent revert; не искать child redeem |
| Ticket создан, auto-redeem failed, timeout жив | Запрос может оставаться в retry buffer | Симулировать target call; подготовить gas в child chain и manual redeem |
| Redeem receipt successful, эффекта нет | Исполнен иной target/asset либо неверно прочитан результат | Декодировать destination/calldata и проверить canonical token/state |
| Ticket не существует | Он redeemed, canceled, expired либо ID/сеть неверны | Сопоставить события, beneficiary/refunds и child history до любых действий |
| Timeout близко, причина revert неизвестна | Слепой redeem может снова потратить gas | Остановиться; получить точный revert/simulation и не обещать recovery |
- Состояние
- Parent tx неуспешна
- Что оно означает
- Ticket мог не быть создан
- Действие
- Разобрать parent revert; не искать child redeem
- Состояние
- Ticket создан, auto-redeem failed, timeout жив
- Что оно означает
- Запрос может оставаться в retry buffer
- Действие
- Симулировать target call; подготовить gas в child chain и manual redeem
- Состояние
- Redeem receipt successful, эффекта нет
- Что оно означает
- Исполнен иной target/asset либо неверно прочитан результат
- Действие
- Декодировать destination/calldata и проверить canonical token/state
- Состояние
- Ticket не существует
- Что оно означает
- Он redeemed, canceled, expired либо ID/сеть неверны
- Действие
- Сопоставить события, beneficiary/refunds и child history до любых действий
- Состояние
- Timeout близко, причина revert неизвестна
- Что оно означает
- Слепой redeem может снова потратить gas
- Действие
- Остановиться; получить точный revert/simulation и не обещать recovery
Ручной redeem — новая child transaction, но не новый депозит
ArbRetryableTx.redeem(ticketId) планирует попытку исполнения существующего ticket и возвращает hash этой попытки. Вызывающий предоставляет gas; target call всё равно может revert. Перед подписью сверяйте child chain, precompile, ticket ID, destination и симуляцию. Не вводите seed-фразу на dashboard или в поддержку и не отправляйте unlimited token approval для простой проверки статуса.
Если manual redeem остаётся pending, применяйте обычную Ethereum/EVM-диагностику nonce и replacement именно к этой child transaction. Увеличение fee может помочь включению redeem, но не исправляет revert target contract. Разбор подтверждений и reorg нужен отдельно, особенно пока parent initiating tx имеет слабую finality.
Для отчёта сохраните parent/child chain IDs, initiating receipt, Inbox/gateway, ticket ID, getTimeout block, beneficiary, auto-redeem и manual-redeem hashes, revert data и конечный balance/state. Общую модель доверия и маршрута моста проверяйте отдельно: retryable диагностирует исполнение одного parent→child message, но не подтверждает корректность выбранного кроссчейн-моста.
Источники
Мы используем прямые ссылки и фиксируем дату проверки. Полный текст чужих материалов не перепечатывается.
- Arbitrum Docs — user troubleshooting Offchain Labs · Проверено 22 августа 2026 г. в 10:38 GMT+5
- Arbitrum SDK v4 Offchain Labs · Проверено 22 августа 2026 г. в 10:38 GMT+5
- Arbitrum Tutorial — redeem pending retryable Offchain Labs · Проверено 22 августа 2026 г. в 10:38 GMT+5
- ArbRetryableTx precompile interface Offchain Labs · Проверено 22 августа 2026 г. в 10:38 GMT+5
