| Слой | Доказательство | Что ещё неизвестно |
|---|---|---|
| L1 submission | Transaction hash и calldata к OptimismPortal | Будет ли L1-транзакция включена |
| Deposit derivation | Portal event и derived source hash | Когда конкретная L2 обработает L1 origin |
| L2 execution | L2 transaction/receipt и target state | Бизнес-результат за пределами target call |
| Обычный sequencer path | L2 tx hash от RPC | Не относится к уже созданному forced deposit |
- Слой
- L1 submission
- Доказательство
- Transaction hash и calldata к OptimismPortal
- Что ещё неизвестно
- Будет ли L1-транзакция включена
- Слой
- Deposit derivation
- Доказательство
- Portal event и derived source hash
- Что ещё неизвестно
- Когда конкретная L2 обработает L1 origin
- Слой
- L2 execution
- Доказательство
- L2 transaction/receipt и target state
- Что ещё неизвестно
- Бизнес-результат за пределами target call
- Слой
- Обычный sequencer path
- Доказательство
- L2 tx hash от RPC
- Что ещё неизвестно
- Не относится к уже созданному forced deposit
Сначала подтвердить именно сбой sequencer
Один недоступный RPC не доказывает остановку сети. Сравните несколько независимых RPC, свежесть L2-блоков, официальный status channel и доступность L1. Если блоки идут, но конкретная транзакция отклоняется, причина может быть в nonce, fee, simulation или контракте; forced path не исправит неверный calldata.
Forced transaction здесь — не стандартный вывод L2→L1. Вывод optimistic rollup проходит отдельные initiate, prove и finalize; OptimismPortal depositTransaction создаёт движение L1→L2 и может лишь инициировать нужный L2-вызов, включая withdrawal action, если сам target допускает его.
Подготовить chain-specific L1 deposit без слепой подписи
Минимальный runbook
- 1Зафиксировать пару сетей
Сохраните L1/L2 chain ID, официальный OptimismPortal proxy, фактическую implementation, code hash, deployed ABI/protocol version и блок проверки.
- 2Разобрать exact ABI
Только если deployed implementation действительно экспонирует текущий пятиаргументный интерфейс, сопоставьте _to, _value, _gasLimit, _isCreation и _data. При другой сигнатуре не копируйте этот список: используйте ABI именно развернутой версии.
- 3Собрать L2 intent
Определите target, L2 value, calldata, gas limit, creation flag и адрес отправителя после L1 aliasing, если caller является контрактом. Для _isCreation=true текущий reference interface требует нулевой _to.
- 4Симулировать
Проверьте target calldata в актуальном L2 state и separately оцените портал-вызов на L1; симуляция не гарантирует будущий state.
- 5Проверить L1 подпись
Кошелёк должен показывать известный portal, selector фактической ABI, msg.value, все аргументы portal call и L1 fee. Не выдавайте unlimited approvals без необходимости.
- 6Связать два результата
После L1 receipt извлеките deposit event/source hash, найдите derived L2 tx и проверьте L2 receipt плюс ожидаемое target state.
Документация OP Mainnet приводит собственные значения sequencing window и max sequencer drift, но это не универсальные SLA для любой OP Stack chain. Записывайте параметры сети и блок L1 origin; при длительном outage L2 state может оставаться неопределённым до восстановления sequencer либо пока derivation rules не продвинут цепочку.
В текущем ETH-based reference interface payable msg.value блокируется на L1 и становится полем mint derived deposit, тогда как _value — отдельная сумма, отправляемая _to при L2 execution; смешивать их нельзя. В chain с custom gas token или другой deployed version правила проверяют заново. Параметр _gasLimit покупает L2 gas сжиганием gas на L1, и specification прямо делает этот L2 gas невозвратным. Слишком низкий лимит может оставить L1 submission успешной, а L2 execution — неуспешным; завышенный лимит не возвращает неиспользованный L2 gas. Сравните расчёт только с ABI и кодом реально развернутой implementation, не с примером другой chain.
L1 success не равен L2 success
| Состояние | Интерпретация | Действие |
|---|---|---|
| L1 tx reverted | Portal не принял deposit | Разобрать L1 revert и параметры; не искать L2 receipt |
| L1 success, deposit event есть | Вход записан в L1 derivation source | Рассчитать source hash и ждать/проверять включение в конкретной L2 |
| Derived L2 tx pending/не найдена | Derivation или RPC ещё не дошли до L1 origin | Сверить node sync, outage status и config; не отправлять дубль |
| L2 receipt reverted | Forced inclusion сработал, target execution — нет | Разобрать revert/call trace; повтор требует нового риска и fee |
| Portal/version неизвестны | Невозможно доказать маршрут | Остановиться до официального deployment/config источника |
- Состояние
- L1 tx reverted
- Интерпретация
- Portal не принял deposit
- Действие
- Разобрать L1 revert и параметры; не искать L2 receipt
- Состояние
- L1 success, deposit event есть
- Интерпретация
- Вход записан в L1 derivation source
- Действие
- Рассчитать source hash и ждать/проверять включение в конкретной L2
- Состояние
- Derived L2 tx pending/не найдена
- Интерпретация
- Derivation или RPC ещё не дошли до L1 origin
- Действие
- Сверить node sync, outage status и config; не отправлять дубль
- Состояние
- L2 receipt reverted
- Интерпретация
- Forced inclusion сработал, target execution — нет
- Действие
- Разобрать revert/call trace; повтор требует нового риска и fee
- Состояние
- Portal/version неизвестны
- Интерпретация
- Невозможно доказать маршрут
- Действие
- Остановиться до официального deployment/config источника
Не создавайте второй forced deposit, пока первый не сопоставлен по L1 hash, log index, source hash и L2 receipt: одинаковый intent может исполниться дважды, если target не имеет собственной защиты. После включения подтверждения и возможную реорганизацию L1/L2 оценивают отдельно.
Итоговый incident record включает обе chain ID, portal/version, L1 calldata и receipt, deposit event/source hash, L1 origin, derived L2 hash/receipt, target state, simulation block и все fees. Если официальный интерфейс сети не публикует portal/config или target несёт крупный value, перед подписью нужна независимая проверка оператора сети.
Источники
Мы используем прямые ссылки и фиксируем дату проверки. Полный текст чужих материалов не перепечатывается.
- Optimism Docs — Forced Transaction Optimism · Проверено 23 августа 2026 г. в 15:43 GMT+5
- Optimism Docs — Protocol outages Optimism · Проверено 23 августа 2026 г. в 15:43 GMT+5
- OP Stack Specification — Deposits Optimism Collective · Проверено 23 августа 2026 г. в 15:43 GMT+5
- Optimism Tutorial — Triggering OP Stack transactions from Ethereum Optimism · Проверено 23 августа 2026 г. в 15:43 GMT+5
- OptimismPortal2 — pinned reference interface Optimism Collective · Проверено 23 августа 2026 г. в 17:07 GMT+5
