Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Blinded block generation should not require validator registration #11293

Closed
mcdee opened this issue Aug 23, 2022 · 4 comments · Fixed by #11304
Closed

Blinded block generation should not require validator registration #11293

mcdee opened this issue Aug 23, 2022 · 4 comments · Fixed by #11304
Assignees
Labels
Builder PR or issue that supports builder related work

Comments

@mcdee
Copy link
Contributor

mcdee commented Aug 23, 2022

🐞 Bug Report

Description

When attempting to generate a blinded beacon block prysm currently refuses to do so unless the validator has been registered. However, in configurations with multiple beacon nodes or alternative registration systems the beacon node may not have been informed of the registration. As such, it should not check for local knowledge of the registration as a gate to fetching blocks from the MEV relay.

Relevant code: https://github.com/prysmaticlabs/prysm/blob/develop/beacon-chain/rpc/prysm/v1alpha1/validator/proposer_bellatrix.go#L45-L46

It may be desirable to carry out a check that the returned block header has a non-zero fee recipient for situations where the relay really does not know the fee recipient address.

Has this worked before in a previous version?

No.

🌍 Your Environment

Prysm v3.0.0

@terencechain terencechain self-assigned this Aug 23, 2022
@terencechain terencechain added the Builder PR or issue that supports builder related work label Aug 23, 2022
@terencechain
Copy link
Member

terencechain commented Aug 23, 2022

I'm concerned about setups like:

1.)
bn (--http-mev-relay=xyz) <-> vc (--enable-builder=false)

or hybrid version

2.)
bn (--http-mev-relay=xyz) <-> vc where settings are mixture of --enable-builder=true/false

In such setups, the validators who prefer local ee would always call mev-boost/relayer firsthand then fall back to local EE. Even worse, a bad relayer could return a legit block even if the validators did not register.

Would it be better to add a beacon node flag like skip registration check? --skip-builder-registration-check

@mcdee
Copy link
Contributor Author

mcdee commented Aug 23, 2022

Wouldn't a VC that had --enable-builder=false request beacon blocks rather than blinded beacon blocks, so that wouldn't be an issue?

I'd be fine with a flag, just not sure that it's necessary.

@terencechain
Copy link
Member

terencechain commented Aug 24, 2022

Wouldn't a VC that had --enable-builder=false request beacon blocks rather than blinded beacon blocks, so that wouldn't be an issue?

I think this is true for beacon API. For prysm API, it's a single endpoint, so we don't have a great way for separation.

Couple options
1. Caller always has to register through the beacon node before the proposal (this is not ideal)
2. Add a flag to the beacon node to skip the registration check
3. Fix prysm validators / prysm API to have better isolations for full block and blind block (this will take a while)

@terencechain
Copy link
Member

The more I look at the code, I realized ProduceBlindedBlock really shouldn't care whether the validator is registered. I'll study how we can refactor it better. I think this is the best option

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Builder PR or issue that supports builder related work
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants