Канонический вывод из optimistic rollup может остаться незавершённым после успешной транзакции в L2. Активы уже списаны или заблокированы, но Ethereum ещё не принял сообщение. В OP Stack типичный путь состоит из трёх действий: инициировать withdrawal в L2, доказать его в Ethereum и затем выполнить finalize.
Это не ошибка интерфейса, а часть модели безопасности. Состояние L2 публикуется в Ethereum и может быть оспорено по правилам fault proof. Только после предусмотренного периода контракт L1 разрешает окончательное исполнение сообщения. В других optimistic rollup названия и детали отличаются, поэтому сначала определите конкретную сеть.
Соберите данные исходной заявки
Найдите хеш транзакции, которой был начат вывод в L2. Проверьте в обозревателе, что статус успешный, а вызван официальный bridge или message passer. Запишите адрес отправителя, получателя в Ethereum, актив, сумму и номер блока. Эти сведения позволяют восстановить процесс без одного сайта.
Если хеша нет, просмотрите историю нужного адреса в обозревателе L2. Не передавайте seed-фразу поддержке или «помощнику». Для поиска достаточно публичного адреса и приблизительного времени. Полезные способы экспорта описаны в инструкции как выгрузить историю кошелька.
Убедитесь, что подключён тот же адрес, который имеет право выполнить следующий шаг. Получатель средств и отправитель транзакции могут различаться. Интерфейс способен не показать чужую заявку в портфеле, хотя сообщение существует и направлено на ваш адрес.
Проверьте текущий статус withdrawal
У официального моста или SDK обычно есть несколько состояний: вывод инициирован, ожидает возможности доказательства, доказан, проходит период оспаривания, готов к завершению и завершён. Названия могут отличаться. Проверяйте смысл состояния, а не цвет кнопки.
В OP Stack prove подтверждает, что сообщение о выводе включено в опубликованное состояние L2. Для этого используются данные withdrawal и доказательство включения относительно доступного output root или dispute game. Если соответствующее состояние ещё не опубликовано, prove выполнить нельзя.
У Arbitrum процесс опирается на собственные inbox, outbox и правила подтверждения. Не отправляйте OP Stack calldata в контракт другой системы. Общую подготовку и выбор официального маршрута объясняет статья о выводе из L2 через канонический мост.
Как выполнить prove
Откройте официальный интерфейс нужного rollup через его документацию. Подключите кошелёк к Ethereum и выберите найденный withdrawal. Сверьте L2-хеш, сумму, получателя и контракт. Транзакция prove оплачивается ETH в Ethereum, поэтому заранее обеспечьте небольшой баланс для gas.
Перед подписью проверьте адрес назначения. Официальный портал должен совпадать с опубликованным контрактом сети. Prove не переводит средства на новый адрес и не требует approve токена, который уже участвовал в L2-выводе. Неожиданное неограниченное разрешение является причиной остановиться.
После отправки сохраните L1-хеш и дождитесь статуса success. Если транзакция отклонена, сообщение не считается доказанным. Причиной может быть ранняя попытка, устаревшие данные proof или уже выполненный этап. Повторяйте действие только после проверки текущего состояния.
Почему после prove снова нужно ждать
Доказательство включения показывает, что withdrawal относится к опубликованному состоянию L2. Но optimistic-модель оставляет время на оспаривание этого состояния. Если обнаружена ошибка, dispute game может изменить основание, против которого доказывался вывод. Контракт не должен завершать сообщение до выполнения условий финальности.
Начало отсчёта может быть связано не с исходной L2-транзакцией, а с моментом prove или состоянием dispute game. Поэтому календарный расчёт по памяти ненадёжен. Используйте onchain-статус и официальные инструменты. Разница между локальным подтверждением и окончательным расчётом разобрана в статье о финальности L2 и Ethereum.
Не платите стороннему сервису за «разблокировку», если канонический период ещё не завершён. Быстрый мост может предложить отдельную ликвидность, но это новая операция с другой моделью доверия, а не ускорение уже доказанного сообщения.
Как выполнить finalize
Когда статус указывает готовность, снова подключитесь к Ethereum и сформируйте финальную транзакцию. Проверьте официальный portal, идентификатор withdrawal и адрес получателя. Finalize вызывает исполнение исходного сообщения в L1: для простого вывода это приводит к выдаче ETH или токена, а для произвольного сообщения – к вызову указанного контракта.
Убедитесь, что gas limit рассчитан для целевого действия. Ошибка исполнения может зависеть от самой полезной нагрузки, даже если период ожидания завершён. Не путайте network fee Ethereum с суммой вывода. Разницу параметров раскрывает материал про gas limit и gas price.
После success проверьте баланс в обозревателе Ethereum и события транзакции. Кошелёк может обновить интерфейс позже. Для ERC-20 добавьте токен по официальному адресу, если он не отображается автоматически.
Если prove или finalize недоступны
- Проверьте, что L2-транзакция успешна и действительно создала withdrawal.
- Сверьте аккаунт, исходную сеть и выбранный Ethereum mainnet.
- Убедитесь, что output или dispute game уже допускает следующий этап.
- Проверьте, не выполнил ли prove или finalize другой relayer.
- Сравните portal и bridge-контракты с актуальной документацией.
- Оставьте ETH на обе необходимые L1-транзакции.
Если официальный интерфейс временно не работает, состояние withdrawal не исчезает. Можно дождаться восстановления или использовать официальный SDK и контракты, но ручной вызов требует точных параметров. Не копируйте calldata из чужой операции: nonce, отправитель, получатель, value и data относятся к конкретному сообщению.
Завершённый L2-вывод подтверждается не сообщением сайта, а успешной L1-транзакцией и изменением состояния в Ethereum. Сохраните оба хеша – исходный в L2 и финальный в L1. Эта пара показывает полный маршрут и помогает отличить ожидание от реальной ошибки.
Последовательность initiate, prove и finalize превращает optimistic-предположение в исполнимое сообщение Ethereum. Пользователю важны четыре вещи: официальный контракт, точный withdrawal, onchain-статус и ETH для действий в L1. Если они проверены, незавершённую заявку обычно можно довести до результата без повторного вывода и без раскрытия секретов кошелька.



