Skip to content

10259 4 proposer preferences#10517

Merged
mehdi-aouadi merged 23 commits intoConsensys:masterfrom
mehdi-aouadi:10259-4-proposer-preferences
Apr 13, 2026
Merged

10259 4 proposer preferences#10517
mehdi-aouadi merged 23 commits intoConsensys:masterfrom
mehdi-aouadi:10259-4-proposer-preferences

Conversation

@mehdi-aouadi
Copy link
Copy Markdown
Contributor

@mehdi-aouadi mehdi-aouadi commented Mar 20, 2026

PR Description

Wires proposer preferences from gossip validation through to bid enforcement and validator client publishing

Fixed Issue(s)

partially fixes #10259

Documentation

  • I thought about documentation and added the doc-change-required label to this PR if updates are required.

Changelog

  • I thought about adding a changelog entry, and added one if I deemed necessary.

Note

Medium Risk
Adds a new proposer-preferences signing/publication path and gossips accepted preferences across the network, touching validator API, signing interfaces, and P2P plumbing. Risk is moderate because it changes validation/publishing flows and introduces new periodic background activity, but is mostly additive and fork-gated to Gloas.

Overview
Adds end-to-end support for Gloas proposer preferences: validator clients now periodically create, sign, and submit SignedProposerPreferences for the next epoch via a new ValidatorApiChannel.sendSignedProposerPreferences call.

On the beacon node side, ValidatorApiHandlerGloas validates/stores submitted preferences through ProposerPreferencesManager, exposes separate addLocal/addRemote entry points with subscriber notifications, and wires accepted local preferences to P2P gossip publication (Eth2P2PNetwork/GossipForkManager).

Extends the signing API (Signer) with signProposerPreferences, updates local/deletable/slashing-protected/no-op signers and tests accordingly, adds cache sizing constant MAX_SLOTS_TO_TRACK_PROPOSER_PREFERENCES, and updates integration/metrics/failover/sentry routing to account for the new request type.

Reviewed by Cursor Bugbot for commit 572e1f9. Bugbot is set up for automated code reviews on this repo. Configure here.

@mehdi-aouadi mehdi-aouadi self-assigned this Mar 20, 2026
@mehdi-aouadi mehdi-aouadi marked this pull request as draft March 20, 2026 15:44
@mehdi-aouadi mehdi-aouadi marked this pull request as ready for review March 23, 2026 14:58
Copy link
Copy Markdown
Contributor

@zilm13 zilm13 left a comment

Choose a reason for hiding this comment

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

I have some concerns on the way it's integrated into prepareBlockProduction and createAttestationData flows. It looks ok,
but it's important production code path and these changes are not covered with integration tests. And we do everything new prior to the old code. Plus it adds complexity to already big handler. It's a very critical part of the client designed for main validator duties. I'd rather fallback to the previous approach with separate ApiHandler or find another way to clearly skip this logic before Gloas. Also these 2 paths should be covered by tests.
What are your feelings on this?

@mehdi-aouadi
Copy link
Copy Markdown
Contributor Author

I have some concerns on the way it's integrated into prepareBlockProduction and createAttestationData flows. It looks ok, but it's important production code path and these changes are not covered with integration tests. And we do everything new prior to the old code. Plus it adds complexity to already big handler. It's a very critical part of the client designed for main validator duties. I'd rather fallback to the previous approach with separate ApiHandler or find another way to clearly skip this logic before Gloas. Also these 2 paths should be covered by tests. What are your feelings on this?

I put back the Gloas implementation fallback logic to avoid any production code impact. Also added Gloas tests in the integration test

@mehdi-aouadi mehdi-aouadi requested a review from zilm13 April 10, 2026 09:52
Copy link
Copy Markdown
Contributor

@zilm13 zilm13 left a comment

Choose a reason for hiding this comment

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

LGTM, great work!

@mehdi-aouadi mehdi-aouadi enabled auto-merge (squash) April 13, 2026 08:41
@mehdi-aouadi mehdi-aouadi disabled auto-merge April 13, 2026 09:40
@mehdi-aouadi mehdi-aouadi enabled auto-merge (squash) April 13, 2026 10:03
Copy link
Copy Markdown

@cursor cursor Bot left a comment

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 2 potential issues.

Fix All in Cursor

Reviewed by Cursor Bugbot for commit 572e1f9. Configure here.

@mehdi-aouadi mehdi-aouadi merged commit 130651e into Consensys:master Apr 13, 2026
68 checks passed
@github-actions github-actions Bot locked and limited conversation to collaborators Apr 13, 2026
@Consensys Consensys unlocked this conversation Apr 13, 2026
@mehdi-aouadi mehdi-aouadi deleted the 10259-4-proposer-preferences branch April 13, 2026 11:47
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.

Implement proposer preferences

2 participants