ethereum-optimism / ethereum-optimism/optimism

op-node: Safe Head Advancement during EL Sync

Open
#18,124 1 comment 0 reactions 0 assignees View on GitHub
A-op-node
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.