Как разобрать финализированный вывод OP, у которого упал целевой вызов

Транзакция финализации на L1 может завершиться успешно на внешнем уровне, а портал сообщит об ошибке целевого вызова. Для поддержки моста нужны оба результата.

Декодируйте событие финализации портала

Проверьте адрес OptimismPortal и сопоставьте индексированный хеш вывода с событием MessagePassed на L2. Декодируйте флаг success. В примере портал обработал H, но целевой вызов завершился ошибкой.

WithdrawalFinalized(withdrawalHash = H, success = false)

Запишите внешнюю L1-квитанцию и результат целевого вызова отдельно. До учёта ожидаемого эффекта изучите calldata, сумму, газ и поведение контракта назначения. Статус всей транзакции эту разницу не показывает.

Определите подходящий путь восстановления

Финализированный хеш нельзя просто финализировать снова как новый вывод. Если использовался cross-domain messenger, отдельно проверьте его события доставки и правила повторного вызова. Для прямого вызова портала действуют другие условия. specs.optimism.io OP Stack specification