diff --git a/mev-rs/src/blinded_block_provider/api/server.rs b/mev-rs/src/blinded_block_provider/api/server.rs index 9a38d02e..98505f76 100644 --- a/mev-rs/src/blinded_block_provider/api/server.rs +++ b/mev-rs/src/blinded_block_provider/api/server.rs @@ -2,7 +2,7 @@ use crate::{ blinded_block_provider::BlindedBlockProvider, error::Error, types::{ - bellatrix, capella, BidRequest, ExecutionPayload, SignedBlindedBeaconBlock, + bellatrix, capella, deneb, BidRequest, ExecutionPayload, SignedBlindedBeaconBlock, SignedBuilderBid, SignedValidatorRegistration, }, }; @@ -49,14 +49,17 @@ async fn handle_open_bid( State(builder): State, Json(block): Json, ) -> Result>, Error> { - let maybe_capella_block = capella::SignedBlindedBeaconBlock::deserialize(&block); - let mut block = match maybe_capella_block { - Ok(block) => SignedBlindedBeaconBlock::Capella(block), - Err(err) => match bellatrix::SignedBlindedBeaconBlock::deserialize(block) { - Ok(block) => SignedBlindedBeaconBlock::Bellatrix(block), - Err(_) => return Err(ApiClientError::from(err).into()), - }, - }; + let mut block = deneb::SignedBlindedBlockAndBlobSidecars::deserialize(&block) + .map(SignedBlindedBeaconBlock::Deneb) + .or_else(|_| { + capella::SignedBlindedBeaconBlock::deserialize(&block) + .map(SignedBlindedBeaconBlock::Capella) + }) + .or_else(|_| { + bellatrix::SignedBlindedBeaconBlock::deserialize(&block) + .map(SignedBlindedBeaconBlock::Bellatrix) + }) + .map_err(ApiClientError::from)?; let payload = builder.open_bid(&mut block).await?; let block_hash = payload.block_hash(); diff --git a/mev-rs/src/types/deneb.rs b/mev-rs/src/types/deneb.rs index aae0505d..67e135ac 100644 --- a/mev-rs/src/types/deneb.rs +++ b/mev-rs/src/types/deneb.rs @@ -1,6 +1,6 @@ pub use ethereum_consensus::{builder::SignedValidatorRegistration, deneb::mainnet as spec}; use ethereum_consensus::{ - deneb::mainnet::MAX_BLOBS_PER_BLOCK, + deneb::mainnet::{MAX_BLOBS_PER_BLOCK, MAX_BLOB_COMMITMENTS_PER_BLOCK}, kzg::{KzgCommitment, KzgProof}, primitives::{BlsPublicKey, BlsSignature, Root, U256}, }; @@ -26,9 +26,9 @@ pub struct BuilderBid { #[derive(Debug, Default, Clone, SimpleSerialize)] #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] pub struct BlindedBlobsBundle { - pub commitments: List, - pub proofs: List, - pub blob_roots: List, + pub commitments: List, + pub proofs: List, + pub blob_roots: List, } #[derive(Debug, Default, Clone, SimpleSerialize)] @@ -48,9 +48,9 @@ pub struct SignedBlindedBlockAndBlobSidecars { #[derive(Debug, Default, Clone, SimpleSerialize)] #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] pub struct BlobsBundle { - pub commitments: List, - pub proofs: List, - pub blobs: List, + pub commitments: List, + pub proofs: List, + pub blobs: List, } #[derive(Debug, Default, Clone, SimpleSerialize)]