Skip to content

rpc: add SubmitSignedProposerPreferences gRPC endpoint - #16538

Merged
terencechain merged 2 commits into
developfrom
gloas-proposer-preferences-rpc
Mar 17, 2026
Merged

rpc: add SubmitSignedProposerPreferences gRPC endpoint#16538
terencechain merged 2 commits into
developfrom
gloas-proposer-preferences-rpc

Conversation

@terencechain

Copy link
Copy Markdown
Collaborator

This pr adds the validator-facing gRPC endpoint for submitting signed proposer preferences. Validators call this to broadcast their preferred fee_recipient and gas_limit for a future proposal slot. The handler validates the epoch, broadcasts via P2P, and caches preferences for downstream bid validation.

  • Proto: SubmitSignedProposerPreferences RPC in validator.proto
  • RPC handler with epoch and sync validation, P2P broadcast
  • Local submissions bypass full gossip verification (trusted VC)

Note: This is PR 2 of 3 in a stack. Please review in order:

  1. Proposer preferences P2P
  2. This PR — proposer preferences RPC endpoint
  3. Execution payload bid P2P

Add the validator-facing RPC for broadcasting signed proposer
preferences. Validators call this endpoint to submit their preferred
fee_recipient and gas_limit for a future proposal slot. The handler
validates the request, broadcasts via P2P, and caches the preferences
for downstream bid validation.

- Proto: SubmitSignedProposerPreferences RPC in validator.proto
- RPC: handler with epoch/sync validation and P2P broadcast
- Wiring: server, rpc service, and node plumbing
@terencechain
terencechain force-pushed the gloas-proposer-preferences-rpc branch from 0022770 to 5e78fde Compare March 17, 2026 02:12
)
}

if vs.ProposerPreferencesCache.Has(proposalSlot) {

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.

if we already proposed it aka in the cache, should we just be returning empty? what about a debut log here saying some kind of duplicate submission?

}

currentEpoch := slots.ToEpoch(vs.TimeFetcher.CurrentSlot())
if slots.ToEpoch(proposalSlot) != currentEpoch+1 {

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.

is the intended use only for the next epoch? if you restart your validator client and it needs to propose in the epoch it restarted on this would fail?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

P2P will ignore it anyway so it's better to know that with an error

[IGNORE] preferences.proposal_slot is in the next epoch -- i.e. compute_epoch_at_slot(preferences.proposal_slot) == get_current_epoch(state) + 1.

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.

will bring up this concern again ethereum/consensus-specs#4777 (comment)

@james-prysm james-prysm 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.

approving with a concern on the spec

@terencechain
terencechain enabled auto-merge March 17, 2026 15:07
@terencechain
terencechain added this pull request to the merge queue Mar 17, 2026
Merged via the queue into develop with commit 605ab1c Mar 17, 2026
19 checks passed
@terencechain
terencechain deleted the gloas-proposer-preferences-rpc branch March 17, 2026 16:48
@github-project-automation github-project-automation Bot moved this from Unassigned to Done in Gloas Mar 17, 2026
github-merge-queue Bot pushed a commit that referenced this pull request Mar 19, 2026
**What type of PR is this?**

Other

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

It makes more sense for this endpoint to take an array instead, this was
an oversight from review. this is a breaking change but should be
acceptable as we havent released yet

**Which issues(s) does this PR fix?**

Fixes  #16538

**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).
syjn99 pushed a commit to syjn99/prysm that referenced this pull request Mar 27, 2026
…16538)

This pr adds the validator-facing gRPC endpoint for submitting signed
proposer preferences. Validators call this to broadcast their preferred
fee_recipient and gas_limit for a future proposal slot. The handler
validates the epoch, broadcasts via P2P, and caches preferences for
downstream bid validation.

  - Proto: `SubmitSignedProposerPreferences` RPC in `validator.proto`
  - RPC handler with epoch and sync validation, P2P broadcast
  - Local submissions bypass full gossip verification (trusted VC)

  > **Note:** This is PR 2 of 3 in a stack. Please review in order:
  > 1. Proposer preferences P2P
  > 2. **This PR** — proposer preferences RPC endpoint
  > 3. Execution payload bid P2P
syjn99 pushed a commit to syjn99/prysm that referenced this pull request Mar 27, 2026
…s#16554)

**What type of PR is this?**

Other

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

It makes more sense for this endpoint to take an array instead, this was
an oversight from review. this is a breaking change but should be
acceptable as we havent released yet

**Which issues(s) does this PR fix?**

Fixes  OffchainLabs#16538

**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

Labels

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

2 participants