From 4ffb11ed5c39c8f5012c681a9b62bb4828431bd5 Mon Sep 17 00:00:00 2001 From: Jimmy Chen Date: Mon, 19 Jan 2026 16:17:52 +1100 Subject: [PATCH] Fix attestation participation logic error. --- .../src/common/get_attestation_participation.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/consensus/state_processing/src/common/get_attestation_participation.rs b/consensus/state_processing/src/common/get_attestation_participation.rs index aabd5003f4..b7e877c594 100644 --- a/consensus/state_processing/src/common/get_attestation_participation.rs +++ b/consensus/state_processing/src/common/get_attestation_participation.rs @@ -49,15 +49,16 @@ pub fn get_attestation_participation_flag_indices( true } else { // For non same-slot attestations, check execution payload availability - // TODO(EIP7732) Discuss if we want to return new error BeaconStateError::InvalidExecutionPayloadAvailabilityIndex here for bit out of bounds or use something like BeaconStateError::InvalidBitfield let slot_index = data .slot .as_usize() .safe_rem(E::slots_per_historical_root())?; - state + let payload_index = state .execution_payload_availability()? .get(slot_index) - .map_err(|_| Error::InvalidExecutionPayloadAvailabilityIndex(slot_index))? + .map(|avail| if avail { 1 } else { 0 } as u64) + .map_err(|_| Error::InvalidExecutionPayloadAvailabilityIndex(slot_index))?; + data.index == payload_index }; is_matching_target && head_root_matches && payload_matches } else {