diff --git a/beacon_node/beacon_chain/src/beacon_chain.rs b/beacon_node/beacon_chain/src/beacon_chain.rs index fcf6593c993..2ae023c6b7c 100644 --- a/beacon_node/beacon_chain/src/beacon_chain.rs +++ b/beacon_node/beacon_chain/src/beacon_chain.rs @@ -5001,7 +5001,7 @@ impl BeaconChain { bls_to_execution_changes, } = partial_beacon_block; - let (inner_block, blobs_opt, proofs_opt, execution_payload_value) = match &state { + let (inner_block, maybe_blobs_and_proofs, execution_payload_value) = match &state { BeaconState::Base(_) => ( BeaconBlock::Base(BeaconBlockBase { slot, @@ -5021,7 +5021,6 @@ impl BeaconChain { }, }), None, - None, Uint256::zero(), ), BeaconState::Altair(_) => ( @@ -5045,7 +5044,6 @@ impl BeaconChain { }, }), None, - None, Uint256::zero(), ), BeaconState::Merge(_) => { @@ -5076,7 +5074,6 @@ impl BeaconChain { }, }), None, - None, execution_payload_value, ) } @@ -5110,12 +5107,11 @@ impl BeaconChain { }, }), None, - None, execution_payload_value, ) } BeaconState::Deneb(_) => { - let (payload, kzg_commitments, blobs, proofs, execution_payload_value) = + let (payload, kzg_commitments, maybe_blobs_and_proofs, execution_payload_value) = block_contents .ok_or(BlockProductionError::MissingExecutionPayload)? .deconstruct(); @@ -5145,8 +5141,7 @@ impl BeaconChain { .ok_or(BlockProductionError::InvalidPayloadFork)?, }, }), - blobs, - proofs, + maybe_blobs_and_proofs, execution_payload_value, ) } @@ -5205,8 +5200,8 @@ impl BeaconChain { let blobs_verification_timer = metrics::start_timer(&metrics::BLOCK_PRODUCTION_BLOBS_VERIFICATION_TIMES); - let blob_item = match (blobs_opt, proofs_opt) { - (Some(blobs), Some(proofs)) => { + let blob_items = match maybe_blobs_and_proofs { + Some((blobs, proofs)) => { let expected_kzg_commitments = block.body().blob_kzg_commitments().map_err(|_| { BlockProductionError::InvalidBlockVariant( @@ -5239,7 +5234,7 @@ impl BeaconChain { Some((kzg_proofs.into(), blobs)) } - _ => None, + None => None, }; drop(blobs_verification_timer); @@ -5257,7 +5252,7 @@ impl BeaconChain { Ok(BeaconBlockResponse { block, state, - blob_items: blob_item, + blob_items, execution_payload_value: Some(execution_payload_value), consensus_block_value: Some(consensus_block_value), }) diff --git a/beacon_node/beacon_chain/src/block_verification.rs b/beacon_node/beacon_chain/src/block_verification.rs index 3c0031d8a6a..6f1362ccc00 100644 --- a/beacon_node/beacon_chain/src/block_verification.rs +++ b/beacon_node/beacon_chain/src/block_verification.rs @@ -616,7 +616,7 @@ pub fn signature_verify_chain_segment( .collect::>(); // verify signatures - let pubkey_cache = get_validator_pubkey_cache(chain).map_err(BlockError::from)?; + let pubkey_cache = get_validator_pubkey_cache(chain)?; let mut signature_verifier = get_signature_verifier(&state, &pubkey_cache, &chain.spec); for svb in &mut signature_verified_blocks { signature_verifier @@ -923,7 +923,7 @@ impl GossipVerifiedBlock { }; let signature_is_valid = { - let pubkey_cache = get_validator_pubkey_cache(chain).map_err(BlockError::from)?; + let pubkey_cache = get_validator_pubkey_cache(chain)?; let pubkey = pubkey_cache .get(block.message().proposer_index() as usize) .ok_or_else(|| BlockError::UnknownValidator(block.message().proposer_index()))?; @@ -1036,7 +1036,7 @@ impl SignatureVerifiedBlock { &chain.spec, )?; - let pubkey_cache = get_validator_pubkey_cache(chain).map_err(BlockError::from)?; + let pubkey_cache = get_validator_pubkey_cache(chain)?; let mut signature_verifier = get_signature_verifier(&state, &pubkey_cache, &chain.spec); @@ -1087,7 +1087,7 @@ impl SignatureVerifiedBlock { &chain.spec, )?; - let pubkey_cache = get_validator_pubkey_cache(chain).map_err(BlockError::from)?; + let pubkey_cache = get_validator_pubkey_cache(chain)?; let mut signature_verifier = get_signature_verifier(&state, &pubkey_cache, &chain.spec); @@ -1918,7 +1918,7 @@ fn load_parent>( result } -/// This trait is used to unify `BlockError` and `BlobError`. +/// This trait is used to unify `BlockError` and `GossipBlobError`. pub trait BlockBlobError: From + From + Debug { fn not_later_than_parent_error(block_slot: Slot, state_slot: Slot) -> Self; fn unknown_validator_error(validator_index: u64) -> Self; @@ -2055,8 +2055,7 @@ fn verify_header_signature( chain: &BeaconChain, header: &SignedBeaconBlockHeader, ) -> Result<(), Err> { - let proposer_pubkey = get_validator_pubkey_cache(chain) - .map_err(BeaconChainError::from)? + let proposer_pubkey = get_validator_pubkey_cache(chain)? .get(header.message.proposer_index as usize) .cloned() .ok_or(Err::unknown_validator_error(header.message.proposer_index))?; diff --git a/beacon_node/beacon_chain/src/observed_blob_sidecars.rs b/beacon_node/beacon_chain/src/observed_blob_sidecars.rs index 5877f08466f..4f849614490 100644 --- a/beacon_node/beacon_chain/src/observed_blob_sidecars.rs +++ b/beacon_node/beacon_chain/src/observed_blob_sidecars.rs @@ -45,7 +45,7 @@ impl Default for ObservedBlobSidecars { } impl ObservedBlobSidecars { - /// Observe the `blob_sidecar` at (`blob_sidecar.block_root, blob_sidecar.slot`). + /// Observe the `blob_sidecar` at (`blob_sidecar.block_proposer_index, blob_sidecar.slot`). /// This will update `self` so future calls to it indicate that this `blob_sidecar` is known. /// /// The supplied `blob_sidecar` **MUST** have completed proposer signature verification. @@ -138,7 +138,7 @@ mod tests { assert_eq!( cache.items.len(), 1, - "only one (slot, root) tuple should be present" + "only one (validator_index, slot) tuple should be present" ); assert_eq!( cache diff --git a/beacon_node/execution_layer/src/lib.rs b/beacon_node/execution_layer/src/lib.rs index 53f911e0e70..6b0277ff318 100644 --- a/beacon_node/execution_layer/src/lib.rs +++ b/beacon_node/execution_layer/src/lib.rs @@ -105,8 +105,7 @@ impl TryFrom> for ProvenancedPayload> { payload: Payload, block_value: Uint256, kzg_commitments: KzgCommitments, - blobs: Option>, - proofs: Option>, + /// `None` for blinded `PayloadAndBlobs`. + blobs_and_proofs: Option<(BlobsList, KzgProofs)>, }, } @@ -201,8 +200,7 @@ impl> TryFrom> payload: execution_payload.into(), block_value, kzg_commitments: bundle.commitments, - blobs: Some(bundle.blobs), - proofs: Some(bundle.proofs), + blobs_and_proofs: Some((bundle.blobs, bundle.proofs)), }), None => Ok(Self::Payload { payload: execution_payload.into(), @@ -230,22 +228,25 @@ impl> BlockProposalContents ( Payload, Option>, - Option>, - Option>, + Option<(BlobsList, KzgProofs)>, Uint256, ) { match self { Self::Payload { payload, block_value, - } => (payload, None, None, None, block_value), + } => (payload, None, None, block_value), Self::PayloadAndBlobs { payload, block_value, kzg_commitments, - blobs, - proofs, - } => (payload, Some(kzg_commitments), blobs, proofs, block_value), + blobs_and_proofs, + } => ( + payload, + Some(kzg_commitments), + blobs_and_proofs, + block_value, + ), } } diff --git a/common/eth2/src/types.rs b/common/eth2/src/types.rs index 96c46e97167..d36c422109d 100644 --- a/common/eth2/src/types.rs +++ b/common/eth2/src/types.rs @@ -1705,7 +1705,7 @@ impl SignedBlockContents { } } -/// Converting from a Blinded +/// Converting from a `SignedBlindedBeaconBlock` into a full `SignedBlockContents`. pub fn into_full_block_and_blobs( blinded_block: SignedBlindedBeaconBlock, maybe_full_payload_contents: Option>,