ChainSafe / ChainSafe/lodestar

Builder and proposer preferences are lost on beacon node restart

Open
#9,920 1 comment 0 reactions 0 assignees View on GitHub
spec-gloas
Dominant language
TypeScript
Stars
1.4k
Forks
483
Avg merge
1d 18h
Merged PRs (30d)
156

Description

The validator client submits proposer preferences and builder preferences once per proposal slot within the `SUBMIT_BEFORE_PROPOSAL_SLOTS` window and tracks submissions per dependent root, so a successful submission is never repeated unless the proposer shuffling shifts.

The beacon node keeps preferences in memory only. A restart between the submission and the proposal empties the pool, and peers do not re-gossip preferences they already sent, so bid validation at the proposal fails with `No proposer preferences found` for gossip and builder api bids alike, forcing a self-build even though builders hold the preferences and are bidding.

Options, not mutually exclusive:

- resubmit every slot within the submission window and rely on pool dedup instead of tracking submitted slots in the validator client
- resubmit when the validator client detects a beacon node restart
- persist the preferences pools on the beacon node

Related to #9919 since a combined service would only need the fix once.

Contributor guide

Open the contributing guide

Research direction

Start by tracing the validator client's proposer and builder preference submission tracking and the beacon node's in-memory preference pools. Compare the proposed resubmission, restart detection, and persistence approaches, including the relationship to #9919. Done means preferences remain available after a beacon node restart so gossip and builder API bids validate instead of producing “No proposer preferences found”.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
blockchain, distributed-systems
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.