Skip to content

chore(deps): update Lighthouse to unstable 8b927ced - #1327

Merged
shane-moore merged 1 commit into
sigp:epbsfrom
shane-moore:feat/lighthouse-unstable-8b927ced
Sep 29, 2026
Merged

shane-moore merged 1 commit into
sigp:epbsfrom
shane-moore:feat/lighthouse-unstable-8b927ced

Conversation

@shane-moore

Copy link
Copy Markdown
Member

Problem, Evidence, and Context (Required)

  • epbs pins Lighthouse 73e4dc12, 5 commits behind unstable HEAD 8b927cedd.
  • One of those commits reaches Anchor: Eagerly sign sync committee messages on head events lighthouse#9675, which signs sync committee messages when a head event arrives.
  • A committee's post-consensus batch is sent only once it holds every partial, sync partials included. So in any committee with a sync committee member, attestations wait for the sync trigger, which under Gloas is 3s, the attestation deadline. On the ePBS devnet those attestations were about 1.1s late on every slot. Sepolia activates Gloas at epoch 353024.

Change Overview (Required)

  • All 18 Lighthouse dependencies move to 8b927cedd. The lockfile diff is only those crates' source lines.
  • #9675 switched head events to a broadcast channel. The client now subscribes the attestation, sync committee and metadata services directly, before the head monitor starts, and drops the Anchor fan-out relay along with its drop metric and dashboard panel.
  • The sync committee service now receives head events, so sync messages sign as soon as the vote context is ready.
  • The metadata service uses Lighthouse's head_event_or_deadline in place of its own copy.

Risks, Trade-offs, and Mitigations (Required)

  • Sync signing timing changes every slot. Anchor still signs the decided vote root and waits for the vote context, so an early trigger cannot sign ahead of consensus. If the vote context falls back to its timer, timing is the same as today.
  • Lighthouse now reads sync aggregators at the contribution deadline instead of the trigger, whatever the wiring. This lines up with the metadata service's own read at the same deadline.
  • Metadata head-event handling differs in two edge cases, neither reachable today:
    • A closed channel now waits for the deadline instead of triggering at once. The sender lives as long as BeaconNodeFallback.
    • A failed clock read disables head monitoring for the rest of the process, as in Lighthouse's own services. Services start only after the genesis wait.
  • The other four commits (#10128, #10137, #10117, #9896) touch only the beacon node, its tests, or VC HTTP API types Anchor does not use. Lighthouse's root Cargo.toml and Cargo.lock are unchanged between the two revs, so the mirrored [patch.crates-io] entries stay correct.

Validation (Required)

  • make cargo-fmt-check, make lint, cargo nextest run --release --workspace --no-fail-fast: 994 passed.
  • The eager sync timing gain has not been measured on ssv-mini yet.

Rollback (Required for behavior or runtime changes; optional otherwise)

Revert the commit to return to 73e4dc12 and the fan-out relay. No config or data impact. The anchor_head_event_fanout_drops_total metric goes away.

🤖 Generated with Claude Code

Move all 18 Lighthouse dependencies from 73e4dc12 to 8b927cedd.

sigp/lighthouse#9675 switched head events to a broadcast channel and
lets the sync committee service sign on head events. Subscribe the
attestation, sync committee and metadata services directly before the
head monitor starts, and drop the Anchor fan-out relay with its drop
metric and dashboard panel. The metadata service now uses Lighthouse's
head_event_or_deadline instead of its own copy.

Committees with a sync committee member no longer hold their
attestation partials until the sync message due, which is the Gloas
attestation deadline.
@codecov-commenter

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 0% with 15 lines in your changes missing coverage. Please review.
⚠️ Please upload report for BASE (epbs@6224324). Learn more about missing BASE report.

Files with missing lines Patch % Lines
anchor/client/src/lib.rs 0.00% 8 Missing ⚠️
anchor/validator_store/src/metadata_service.rs 0.00% 7 Missing ⚠️
Additional details and impacted files
@@           Coverage Diff           @@
##             epbs    #1327   +/-   ##
=======================================
  Coverage        ?   80.90%           
=======================================
  Files           ?      179           
  Lines           ?    41238           
  Branches        ?        0           
=======================================
  Hits            ?    33364           
  Misses          ?     7874           
  Partials        ?        0           
Flag Coverage Δ
rust 80.90% <0.00%> (?)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@shane-moore shane-moore left a comment

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.

Review from Claude Opus 5.5 (high effort) at 3ec099e4: no blocking findings.

Checked:

  • Wiring matches Lighthouse's own VC at 8b927ced. All three subscriptions happen before start_fallback_updater_service spawns the monitor, so it never sends on a channel with no receivers.
  • The earlier sync trigger can't sign ahead of consensus. Anchor signs decided.block_root after get_voting_context(slot), not the head-event root Lighthouse now passes in.
  • The motivation holds statically. voting_message_count_for_committee counts sync validators, and the collector only flushes a full batch, so attestation partials wait for the sync partial.
  • The gain relies on the SlotTime start-gate removal (#1136), which is epbs-only. unstable still sleeps to the attestation due before round 1, so it would see little benefit from this bump alone.
  • The other four Lighthouse commits don't reach Anchor. GetGraffitiResponse has no users here, and Lighthouse's root Cargo.toml/Cargo.lock are unchanged between the revs.

Not checked: the ssv-mini timing measurement the PR already lists as owed.

@shane-moore
shane-moore merged commit f77b584 into sigp:epbs Sep 29, 2026
21 checks passed
@shane-moore
shane-moore deleted the feat/lighthouse-unstable-8b927ced branch September 29, 2026 02:00
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.

2 participants