From 0e9107f0be4cdd2691e8d5873db84754a04b5f44 Mon Sep 17 00:00:00 2001 From: Jimmy Chen Date: Mon, 27 Apr 2026 12:01:23 +0200 Subject: [PATCH] Clean ups --- .../gossip_methods.rs | 29 +++++-------------- beacon_node/operation_pool/src/lib.rs | 19 +++++++----- 2 files changed, 19 insertions(+), 29 deletions(-) diff --git a/beacon_node/network/src/network_beacon_processor/gossip_methods.rs b/beacon_node/network/src/network_beacon_processor/gossip_methods.rs index 676ea1c69e..29306c198d 100644 --- a/beacon_node/network/src/network_beacon_processor/gossip_methods.rs +++ b/beacon_node/network/src/network_beacon_processor/gossip_methods.rs @@ -140,11 +140,6 @@ struct RejectedAggregate { error: AttnError, } -struct RejectedPayloadAttestation { - payload_attestation_message: Box, - error: PayloadAttestationError, -} - /// Data for an aggregated or unaggregated attestation that failed verification. enum FailedAtt { Unaggregate { @@ -4111,25 +4106,20 @@ impl NetworkBeaconProcessor { peer_id: PeerId, payload_attestation_message: Box, ) { - let result = match self + let message_slot = payload_attestation_message.data.slot; + let result = self .chain - .verify_payload_attestation_message_for_gossip(*payload_attestation_message.clone()) - { - Ok(verified) => Ok(verified), - Err(error) => Err(RejectedPayloadAttestation { - payload_attestation_message: payload_attestation_message.clone(), - error, - }), - }; + .verify_payload_attestation_message_for_gossip(*payload_attestation_message); - self.process_gossip_payload_attestation_result(result, message_id, peer_id); + self.process_gossip_payload_attestation_result(result, message_id, peer_id, message_slot); } fn process_gossip_payload_attestation_result( self: &Arc, - result: Result, RejectedPayloadAttestation>, + result: Result, PayloadAttestationError>, message_id: MessageId, peer_id: PeerId, + message_slot: Slot, ) { match result { Ok(verified) => { @@ -4165,15 +4155,12 @@ impl NetworkBeaconProcessor { ); } } - Err(RejectedPayloadAttestation { - payload_attestation_message, - error, - }) => { + Err(error) => { self.handle_payload_attestation_verification_failure( peer_id, message_id, error, - payload_attestation_message.data.slot, + message_slot, ); } } diff --git a/beacon_node/operation_pool/src/lib.rs b/beacon_node/operation_pool/src/lib.rs index 5f1a4cb95f..a94414f734 100644 --- a/beacon_node/operation_pool/src/lib.rs +++ b/beacon_node/operation_pool/src/lib.rs @@ -217,16 +217,20 @@ impl OperationPool { Ok(()) } - /// Build aggregated `PayloadAttestation`s from stored messages for block production. + /// Build `PayloadAttestation`s from stored messages for block production. /// /// `parent_block_root` is the root of the parent block (the block PTC members attested to). - /// Returns up to `MAX_PAYLOAD_ATTESTATIONS` attestations for the previous slot. + /// Returns one `PayloadAttestation` per distinct `PayloadAttestationData`. With two boolean + /// fields this yields at most 4, which equals `MAX_PAYLOAD_ATTESTATIONS`. pub fn get_payload_attestations( &self, state: &BeaconState, parent_block_root: Hash256, spec: &ChainSpec, ) -> Result>, OpPoolError> { + if state.slot() == 0 { + return Ok(vec![]); + } let target_slot = state.slot().saturating_sub(1u64); let ptc = state @@ -249,13 +253,12 @@ impl OperationPool { .0 .iter() .position(|&idx| idx == msg.validator_index as usize) + && !aggregation_bits.get(pos).unwrap_or(false) { - if !aggregation_bits.get(pos).unwrap_or(false) { - aggregation_bits - .set(pos, true) - .map_err(|_| OpPoolError::PayloadAttestationBitError)?; - aggregate_sig.add_assign(&msg.signature); - } + aggregation_bits + .set(pos, true) + .map_err(|_| OpPoolError::PayloadAttestationBitError)?; + aggregate_sig.add_assign(&msg.signature); } }