Skip to content

gloas validator client proposer preferences - #16548

Merged
james-prysm merged 22 commits into
developfrom
validator-proposer-preferences
Mar 23, 2026
Merged

gloas validator client proposer preferences#16548
james-prysm merged 22 commits into
developfrom
validator-proposer-preferences

Conversation

@james-prysm

@james-prysm james-prysm commented Mar 16, 2026

Copy link
Copy Markdown
Contributor

What type of PR is this?

Feature

What does this PR do? Why is it needed?

adds validator client call to proposer preferences. adds todo comments for when we fully replace prepare beacon proposer endpoint with proposer preferences.

Which issues(s) does this PR fix?
partially addresses #16545

Other notes for review

Acknowledgements

  • I have read CONTRIBUTING.md.
  • I have included a uniquely named changelog fragment file.
  • I have added a description with sufficient context for reviewers to understand this PR.
  • I have tested that my changes work as expected and I added a testing plan to the PR description (if applicable).

@james-prysm

Copy link
Copy Markdown
Contributor Author

needs #16538

msg := v.message()
epoch := slots.ToEpoch(msg.ProposalSlot)
domain, err := signing.Domain(st.Fork(), epoch, params.BeaconConfig().DomainBeaconProposer, st.GenesisValidatorsRoot())
domain, err := signing.Domain(st.Fork(), epoch, params.BeaconConfig().DomainProposerPreferences, st.GenesisValidatorsRoot())

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

it should be this right?

@james-prysm
james-prysm marked this pull request as ready for review March 19, 2026 14:31

@terencechain terencechain left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

One concern:

Right now buildProposerSettingsRequests piggybacks on the existing PushProposerSettings flow, which runs every epoch for all active validators. That works for PrepareBeaconProposer, but the gossip spec for proposer preferences has stricter requirements:

  1. proposal_slot must be in the next epoch — the spec says compute_epoch_at_slot(preferences.proposal_slot) == get_current_epoch(state) + 1, but the code sets ProposalSlot = slot (current slot). Peers will IGNORE these.
  2. Only validators who are actual proposers in the next epoch should submit — the spec requires is_valid_proposal_slot(state, preferences) to pass, meaning the validator must be in the proposer lookahead for that specific slot

So I think the proposer preferences path needs its own logic that checks the next epoch's proposer assignments

ethereum.eth.v1alpha1.BeaconBlockGloas block_gloas = 123;
ethereum.eth.v1alpha1.ExecutionPayloadEnvelope execution_payload_envelope = 124;
ethereum.eth.v1alpha1.PayloadAttestationData payload_attestation_data = 125;
ethereum.eth.v1alpha1.ProposerPreferences proposer_preferences = 126;

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

everything above is singular, should this be preference or preferences?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

let me fix that to singular

SubmitValidatorRegistrations(ctx context.Context, in *ethpb.SignedValidatorRegistrationsV1) (*empty.Empty, error)
// SubmitSignedProposerPreferences submits proposer preferences for upcoming
// proposal slots. This replaces PrepareBeaconProposer and SubmitValidatorRegistrations
// for GLOAS+.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Prefer Gloas vs GLOAS

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

will fix sorry

@james-prysm

Copy link
Copy Markdown
Contributor Author

this pr depends on #16564

@james-prysm
james-prysm added this pull request to the merge queue Mar 23, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Mar 23, 2026
@james-prysm
james-prysm enabled auto-merge March 23, 2026 20:33
@james-prysm
james-prysm added this pull request to the merge queue Mar 23, 2026
Merged via the queue into develop with commit 101dd55 Mar 23, 2026
19 checks passed
@james-prysm
james-prysm deleted the validator-proposer-preferences branch March 23, 2026 22:01
@github-project-automation github-project-automation Bot moved this from Unassigned to Done in Gloas Mar 23, 2026
syjn99 pushed a commit to syjn99/prysm that referenced this pull request Mar 27, 2026
**What type of PR is this?**

Feature

**What does this PR do? Why is it needed?**

adds validator client call to proposer preferences. adds todo comments
for when we fully replace prepare beacon proposer endpoint with proposer
preferences.

**Which issues(s) does this PR fix?**
partially addresses OffchainLabs#16545

**Other notes for review**

**Acknowledgements**

- [x] I have read
[CONTRIBUTING.md](https://github.com/prysmaticlabs/prysm/blob/develop/CONTRIBUTING.md).
- [x] I have included a uniquely named [changelog fragment
file](https://github.com/prysmaticlabs/prysm/blob/develop/CONTRIBUTING.md#maintaining-changelogmd).
- [x] I have added a description with sufficient context for reviewers
to understand this PR.
- [ ] I have tested that my changes work as expected and I added a
testing plan to the PR description (if applicable).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

2 participants