Skip to content

Conversation

@michaelsproul
Copy link
Member

Proposed Changes

Since merging this PR, we don't need --checkpoint-blobs, even prior to Fulu:

This PR removes the mandatory check for blobs prior to Fulu, enabling simpler manual checkpoint sync.

@michaelsproul michaelsproul added ready-for-review The code is ready for review UX-and-logs low-hanging-fruit Easy to resolve, get it before someone else does! labels Nov 26, 2025
jimmygchen

This comment was marked as duplicate.

Copy link
Member

@jimmygchen jimmygchen left a comment

Choose a reason for hiding this comment

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

Code Review

✅ Strengths

  1. Proper prerequisite: Correctly builds on #8417 which enables backfill to re-import the checkpoint sync block
  2. Safety compliance: No .unwrap(), .expect(), or unsafe array indexing
  3. Logic simplification: Removes complex is_before_fulu check, making code more straightforward
  4. Clear documentation: Updated comment explains the change well

⚠️ Recommendations

1. Missing test coverage

The existing test at beacon_node/beacon_chain/tests/store_tests.rs:2874 still provides blobs via wss_blobs_opt.clone(). There's no test covering the new code path where blobs are NOT provided and backfill must fetch them.

Recommendation: Add a test case that passes None for anchor_blobs_bytes to verify backfill correctly handles this scenario.

2. Consider adding logging

When a block has blobs but the user doesn't provide them, there's no log message indicating that backfill will handle fetching them. This could aid debugging.

Suggestion: Add a log when blobs are omitted:

} else {
    if anchor_block.message().body().has_blobs() {
        info!("Checkpoint block has blobs/columns which will be fetched via backfill");
    }
    None
};

3. Documentation updates

Since this changes user-facing behavior (users no longer need --checkpoint-blobs), verify these don't need updates:

  • book/src/advanced_checkpoint_sync.md
  • book/src/advanced_blobs.md
  • CLI help text for --checkpoint-blobs flag

🎯 Verdict

The change is sound and safe. The core functionality should work correctly given #8417's foundation. Test coverage for the None blobs path would provide additional confidence and prevent future regressions.

Copy link
Member

@jimmygchen jimmygchen left a comment

Choose a reason for hiding this comment

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

Suggestion for beacon_node/client/src/builder.rs around line 357:

Consider adding a log message when blobs are not provided but the block has them:

let anchor_blobs = if let Some(anchor_blobs_bytes) = anchor_blobs_bytes {
    let max_blobs_len = spec.max_blobs_per_block(anchor_block.epoch()) as usize;
    Some(
        BlobSidecarList::from_ssz_bytes(&anchor_blobs_bytes, max_blobs_len)
            .map_err(|e| format!("Unable to parse weak subj blobs SSZ: {e:?}"))?,
    )
} else {
    if anchor_block.message().body().has_blobs() {
        info!("Checkpoint block has blobs/columns which will be fetched via backfill");
    }
    None
};

This would help users understand what's happening when they omit --checkpoint-blobs and aid debugging if backfill encounters issues.

let anchor_blobs = if is_before_fulu && anchor_block.message().body().has_blobs() {
// Providing blobs is optional now and not providing them is recommended.
// Backfill can handle downloading the blobs or columns for the checkpoint block.
let anchor_blobs = if let Some(anchor_blobs_bytes) = anchor_blobs_bytes {
Copy link
Member

Choose a reason for hiding this comment

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

Sorry for the verbose reviews above. Here are the key points concisely:

  1. Missing test for None blobs path - existing test at store_tests.rs:2874 still provides blobs
  2. Consider logging when blobs omitted but block has them (aids debugging)
  3. Check if these docs need updating: book/src/advanced_checkpoint_sync.md, advanced_blobs.md, CLI help for --checkpoint-blobs

Otherwise looks good - builds correctly on #8417.

Copy link
Member

Choose a reason for hiding this comment

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

Copy link
Member Author

Choose a reason for hiding this comment

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

Thanks!

Copy link
Member

@eserilev eserilev left a comment

Choose a reason for hiding this comment

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

LGTM!

@michaelsproul michaelsproul added ready-for-merge This PR is ready to merge. and removed ready-for-review The code is ready for review labels Nov 26, 2025
@mergify
Copy link

mergify bot commented Nov 26, 2025

Merge Queue Status Beta

✅ The pull request has been merged

This pull request spent 33 minutes 59 seconds in the queue, including 32 minutes 14 seconds waiting for CI.
The checks were run on draft #8474.

Required conditions to merge
  • check-success=local-testnet-success
  • check-success=test-suite-success

@mergify mergify bot added the queued label Nov 26, 2025
mergify bot added a commit that referenced this pull request Nov 26, 2025
@mergify mergify bot merged commit e21a433 into unstable Nov 26, 2025
36 checks passed
@mergify mergify bot deleted the allow-no-checkpoint-blobs branch November 26, 2025 23:00
@mergify mergify bot removed the queued label Nov 26, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

low-hanging-fruit Easy to resolve, get it before someone else does! ready-for-merge This PR is ready to merge. UX-and-logs

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants