mirror of
https://github.com/sigp/lighthouse.git
synced 2026-03-06 18:21:45 +00:00
* add fork_name_enabled fn to Forkname impl * refactor codebase to use new fork_enabled fn * fmt * Merge branch 'unstable' of https://github.com/sigp/lighthouse into fork-ord-impl * small code cleanup * resolve merge conflicts * fix beacon chain test * merge conflicts * fix ef test issue * resolve merge conflicts
46 lines
1.6 KiB
Rust
46 lines
1.6 KiB
Rust
use beacon_chain::{BeaconBlockResponse, BeaconBlockResponseWrapper, BlockProductionError};
|
|
use eth2::types::{BlockContents, FullBlockContents, ProduceBlockV3Response};
|
|
use types::{EthSpec, ForkName};
|
|
type Error = warp::reject::Rejection;
|
|
|
|
pub fn build_block_contents<E: EthSpec>(
|
|
fork_name: ForkName,
|
|
block_response: BeaconBlockResponseWrapper<E>,
|
|
) -> Result<ProduceBlockV3Response<E>, Error> {
|
|
match block_response {
|
|
BeaconBlockResponseWrapper::Blinded(block) => {
|
|
Ok(ProduceBlockV3Response::Blinded(block.block))
|
|
}
|
|
|
|
BeaconBlockResponseWrapper::Full(block) => {
|
|
if fork_name.deneb_enabled() {
|
|
let BeaconBlockResponse {
|
|
block,
|
|
state: _,
|
|
blob_items,
|
|
execution_payload_value: _,
|
|
consensus_block_value: _,
|
|
} = block;
|
|
|
|
let Some((kzg_proofs, blobs)) = blob_items else {
|
|
return Err(warp_utils::reject::block_production_error(
|
|
BlockProductionError::MissingBlobs,
|
|
));
|
|
};
|
|
|
|
Ok(ProduceBlockV3Response::Full(
|
|
FullBlockContents::BlockContents(BlockContents {
|
|
block,
|
|
kzg_proofs,
|
|
blobs,
|
|
}),
|
|
))
|
|
} else {
|
|
Ok(ProduceBlockV3Response::Full(FullBlockContents::Block(
|
|
block.block,
|
|
)))
|
|
}
|
|
}
|
|
}
|
|
}
|