Skip to content

fix: health and external state root fixes #493

Merged
avalonche merged 4 commits into
mainfrom
ale/health-and-external-state-root
Jul 16, 2026
Merged

fix: health and external state root fixes #493
avalonche merged 4 commits into
mainfrom
ale/health-and-external-state-root

Conversation

@avalonche

Copy link
Copy Markdown
Collaborator

Copilot AI review requested due to automatic review settings July 16, 2026 06:35
@vercel

vercel Bot commented Jul 16, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
rollup-boost Ignored Ignored Preview Jul 16, 2026 6:56am

Request Review

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

This PR consolidates a set of fixes related to (1) health reporting when L2 engine API calls fail and (2) safer external state root calculation behavior, aligning with findings from the referenced Nethermind security audit items and stacked PRs.

Changes:

  • Marks the service as ServiceUnavailable when key L2 engine API calls fail (via a central handle_l2_rpc_result helper).
  • Hardens external state root calculation by removing panic-prone assumptions around stored FCU context and by simplifying attribute handling.
  • Reduces unnecessary cloning/conversions by directly extracting payload fields for logging/metrics, and expands tests around these scenarios.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines 502 to 505
let l2_result = self
.l2_client
.fork_choice_updated_v3(fcu_info.0, Some(new_payload_attrs))
.fork_choice_updated_v3(fork_choice_state, Some(new_payload_attrs))
.await?;
.fork_choice_updated_v3(fork_choice_state, Some(new_payload_attrs))
.await?;

if let Some(new_payload_id) = l2_result.payload_id {
Copilot AI review requested due to automatic review settings July 16, 2026 06:55
@avalonche
avalonche force-pushed the ale/health-and-external-state-root branch from d49b456 to 1f96575 Compare July 16, 2026 06:55

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated no new comments.

Comments suppressed due to low confidence (1)

crates/rollup-boost/src/server.rs:521

  • calculate_external_state_root forwards an Engine API FCU call to the L2 client using await?, which propagates the error without marking the service as unhealthy. This makes L2 Engine API failures from this path inconsistent with the new health behavior added elsewhere via handle_l2_rpc_result.
        let l2_result = self
            .l2_client
            .fork_choice_updated_v3(fork_choice_state, Some(new_payload_attrs))
            .await?;

@avalonche
avalonche merged commit 3b101cb into main Jul 16, 2026
8 checks passed
@avalonche
avalonche deleted the ale/health-and-external-state-root branch July 16, 2026 07:08
avalonche added a commit that referenced this pull request Jul 16, 2026
Bump rollup-boost 0.7.16 -> 0.7.17. rollup-boost-types unchanged, stays 0.3.0.

Since 0.7.16:
- flashblocks payload id mismatch fcu race (#491)
- require explicit VALID before selecting the builder payload (#492)
- health and external state root fixes (#493)
- don't reset buffer when fcu without attributes arrive (#495)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
avalonche added a commit that referenced this pull request Jul 16, 2026
Bump rollup-boost 0.7.16 -> 0.7.17. rollup-boost-types unchanged, stays 0.3.0.

Since 0.7.16:
- flashblocks payload id mismatch fcu race (#491)
- require explicit VALID before selecting the builder payload (#492)
- health and external state root fixes (#493)
- don't reset buffer when fcu without attributes arrive (#495)

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants