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

POST to eth/v1/builder/blinded_blocks missing header #5405

Closed
mcdee opened this issue Mar 13, 2024 · 4 comments
Closed

POST to eth/v1/builder/blinded_blocks missing header #5405

mcdee opened this issue Mar 13, 2024 · 4 comments
Labels
bug Something isn't working builder API v5.2.0 Q2 2024

Comments

@mcdee
Copy link
Contributor

mcdee commented Mar 13, 2024

Description

When receiving a POST to /eth/v1/builder/blinded_blocks the spec says that we should obtain the version of the blinded block in the Eth-Consensus-Version, however this is not set by Lighthouse.

Version

lighthouse --version
Lighthouse v5.1.0-10a38a8
BLS library: blst-modern
SHA256 hardware acceleration: true
Allocator: jemalloc
Profile: maxperf
Specs: mainnet (true), minimal (false), gnosis (true)

Present Behaviour

No Eth-Consensus-Version header is set.

Expected Behaviour

An Eth-Consensus-Version header should be set as per https://ethereum.github.io/builder-specs/#/Builder/submitBlindedBlock

@michaelsproul
Copy link
Member

How urgent is a fix here?

AFAIK we've never sent that header so this bug has existed since the builder API was defined 1.5 years ago

@michaelsproul
Copy link
Member

Relevant section of the code is here for reference:

/// `POST /eth/v1/builder/blinded_blocks`
pub async fn post_builder_blinded_blocks<E: EthSpec>(
&self,
blinded_block: &SignedBlindedBeaconBlock<E>,
) -> Result<ForkVersionedResponse<FullPayloadContents<E>>, Error> {
let mut path = self.server.full.clone();
path.path_segments_mut()
.map_err(|()| Error::InvalidUrl(self.server.clone()))?
.push("eth")
.push("v1")
.push("builder")
.push("blinded_blocks");
Ok(self
.post_with_raw_response(
path,
&blinded_block,
Some(self.timeouts.post_blinded_blocks),
)
.await?
.json()
.await?)
}

@mcdee
Copy link
Contributor Author

mcdee commented Mar 13, 2024

It's not critical any time soon, but I do wonder how relays know the version of the block to decode without it. I'm trying to be a bit more "by the rules"; although at current I hard-code a missing consensus version to Deneb it isn't the most future-proof of solutions.

@eserilev
Copy link
Collaborator

eserilev commented Apr 4, 2024

closed in #5407

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working builder API v5.2.0 Q2 2024
Projects
None yet
Development

No branches or pull requests

3 participants