Skip to content

Commit 153acc7

Browse files
authored
Merge of #7727
2 parents caf197f + 4a3c268 commit 153acc7

File tree

1 file changed

+31
-9
lines changed

1 file changed

+31
-9
lines changed

validator_client/validator_services/src/block_service.rs

Lines changed: 31 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -524,22 +524,44 @@ impl<S: ValidatorStore + 'static, T: SlotClock + 'static> BlockService<S, T> {
524524
proposer_index: Option<u64>,
525525
builder_boost_factor: Option<u64>,
526526
) -> Result<UnsignedBlock<S::E>, BlockError> {
527-
let (block_response, _) = beacon_node
528-
.get_validator_blocks_v3::<S::E>(
527+
let block_response = match beacon_node
528+
.get_validator_blocks_v3_ssz::<S::E>(
529529
slot,
530530
randao_reveal_ref,
531531
graffiti.as_ref(),
532532
builder_boost_factor,
533533
)
534534
.await
535-
.map_err(|e| {
536-
BlockError::Recoverable(format!(
537-
"Error from beacon node when producing block: {:?}",
538-
e
539-
))
540-
})?;
535+
{
536+
Ok((ssz_block_response, _)) => ssz_block_response,
537+
Err(e) => {
538+
warn!(
539+
slot = slot.as_u64(),
540+
error = %e,
541+
"Beacon node does not support SSZ in block production, falling back to JSON"
542+
);
543+
544+
let (json_block_response, _) = beacon_node
545+
.get_validator_blocks_v3::<S::E>(
546+
slot,
547+
randao_reveal_ref,
548+
graffiti.as_ref(),
549+
builder_boost_factor,
550+
)
551+
.await
552+
.map_err(|e| {
553+
BlockError::Recoverable(format!(
554+
"Error from beacon node when producing block: {:?}",
555+
e
556+
))
557+
})?;
558+
559+
// Extract ProduceBlockV3Response (data field of the struct ForkVersionedResponse)
560+
json_block_response.data
561+
}
562+
};
541563

542-
let (block_proposer, unsigned_block) = match block_response.data {
564+
let (block_proposer, unsigned_block) = match block_response {
543565
eth2::types::ProduceBlockV3Response::Full(block) => {
544566
(block.block().proposer_index(), UnsignedBlock::Full(block))
545567
}

0 commit comments

Comments
 (0)