ethereum-optimism / ethereum-optimism/optimism

op-batcher: issues recovering from an expired sequencing window

Open
#13,150 6 comments 0 reactions 0 assignees View on GitHub
A-op-batcher
Dominant language
Go
Stars
6.5k
Forks
4k
Avg merge
2d 15h
Merged PRs (30d)
145

Description

Currently if the batch is already expired(the distance between safe head and unsafe head is more than one sequence window), op-batcher will still publish it, which will be dropped by op-node [here](https://github.com/ethereum-optimism/optimism/blob/9f84a4e3ac73fadafed4f61889357115632cdf8f/op-node/rollup/derive/batches.go#L98).

Then op-batcher will detect it [here](https://github.com/ethereum-optimism/optimism/blob/9f84a4e3ac73fadafed4f61889357115632cdf8f/op-batcher/batcher/channel_manager.go#L564) since the safe head isn't advanced.(this feature is introduced [here](https://github.com/ethereum-optimism/optimism/pull/12430))

Then op-batcher will re-publish the expired batch again...

In the end, op-batcher will never catch up with the sequencing window and the balance will be exhausted very quickly as it's constantly sending transactions.

Is there any document on how op-batcher is expected to catch up in this case?

Contributor guide

Open the contributing guide

Research direction

Start with op-batcher/batcher/channel_manager.go around the safe-head check and op-node/rollup/derive/batches.go around the batch drop behavior, then trace how an expired sequencing window is handled. Confirm the expected recovery behavior and document or test that the batcher can catch up without repeatedly publishing expired batches.

Written by the indexing model from the issue text.

Assessment

Tech stack
go
Domain
backend, distributed-systems
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.