Skip to content

Gloas relax epoch aligned checkpoint state requirements#9091

Closed
eserilev wants to merge 8 commits intosigp:unstablefrom
eserilev:gloas-relax-epoch-aligned-checkpoint-state-requirements
Closed

Gloas relax epoch aligned checkpoint state requirements#9091
eserilev wants to merge 8 commits intosigp:unstablefrom
eserilev:gloas-relax-epoch-aligned-checkpoint-state-requirements

Conversation

@eserilev
Copy link
Copy Markdown
Member

@eserilev eserilev commented Apr 4, 2026

Post-gloas checkpoint sync states are always the post block state. If theres a skipped slot at an epoch boundary, we'll receive a non-epoch aligned state from the checkpointz server.

Example: slot n is epoch aligned and is skipped. Checkpoint server will serve the post block state for slot n - 1. We cant advance the state to slot n until we process the payload for slot n - 1 (if it exists/is canonical)

This PR loosens the requirement that a checkpoint state must be epoch aligned. This requirement is only loosened for a gloas checkpoint state, subsequent finalized states must be epoch aligned.

Note that the test introduced in this PR doesn't actually do anything until #8998 is merged. I've tested it on top of #8998 and it seems to be working.

When checkpoint syncing, range sync starts at the same epoch as the checkpoint state. So we just need to make sure filter_chain_segment doesn't drop the envelope for the checkpoint block (the checkpoint block and columns were already imported) and everything should work I think?

EDIT: I experimented with checkpoint sync and I think the easiest thing would be to make sure checkpointz server is extended to support GET eth/v1/beacon/payload_envelopes/{block_id}. This way we fetch the payload (if it exists) and advance the state to the epoch boundary before we hit range sync.

@eserilev eserilev added the ready-for-review The code is ready for review label Apr 4, 2026
@mergify
Copy link
Copy Markdown

mergify Bot commented Apr 5, 2026

Some required checks have failed. Could you please take a look @eserilev? 🙏

@mergify mergify Bot added waiting-on-author The reviewer has suggested changes and awaits thier implementation. and removed ready-for-review The code is ready for review labels Apr 5, 2026
@eserilev eserilev mentioned this pull request Apr 5, 2026
40 tasks
@eserilev eserilev added ready-for-review The code is ready for review and removed waiting-on-author The reviewer has suggested changes and awaits thier implementation. labels Apr 5, 2026
Comment on lines +1905 to +1907
if summary.slot == summary.latest_block_slot {
return Ok(StatePayloadStatus::Pending);
}
Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

im actually not 100% sure about this, maybe we do need to check the previous state summary first?

@eserilev
Copy link
Copy Markdown
Member Author

Closing in favour of michaels db PR plus whatever spec changes we make

@eserilev eserilev closed this Apr 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

gloas ready-for-review The code is ready for review syncing

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant