ethereum-optimism / ethereum-optimism/optimism
op-node: Safe Head Advancement during EL Sync
- Dominant language
- Go
- Stars
- 6.5k
- Forks
- 4k
- Avg merge
- 2d 15h
- Merged PRs (30d)
- 145
Description
Tracking ticket for potential issue found while (Deprecating RR Sync) https://github.com/ethereum-optimism/optimism/issues/14108
From https://github.com/ethereum-optimism/optimism/pull/18001's `TestSafeDoesNotAdvanceWhenUnsafeIsSyncing_NoELP2P`,
While EL Syncing, op-node may advance its unsafe label, and send `engine_forkchoiceUpdated` to the underlying EL. While updating the unsafe head, safe head may also advance because op-node did derivation. Safe head may not advance, when target unsafe head cannot be validated.
For example,
1. EL is synced to {unsafe: 5, safe: 5, finalized: 5}.
2. op-node received unsafe payload 10
3. op-node triggers EL sync via FCU{unsafe: 10, safe: 5, finalized: 5}.
4. EL returns `SYNCING`.
5. op-node did derivation and derived block 6, 7, 8.
6. op-node trigger FCU{unsafe: 10, safe: 6, finalized 5} but it cannot advance the canonical safe head because EL Sync for unsafe target 10 is still SYNCING.
We may still want to advance the safe head while we are EL Syncing, and test shows op-node might not advance unsafe heads due to FCU behavior. Check op-node behavior.
Contributor guide
Research direction
Start with TestSafeDoesNotAdvanceWhenUnsafeIsSyncing_NoELP2P from pull request 18001 and trace the op-node behavior around engine_forkchoiceUpdated while the execution layer is syncing. Determine whether the safe head should advance in the described sequence and document the expected behavior with a focused regression test or follow-up implementation plan.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go
- Domain
- blockchain
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100