ethereum-optimism / ethereum-optimism/optimism
op-batcher: issues recovering from an expired sequencing window
- 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
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