Add PendingAttestationInElectra

This commit is contained in:
dapplion
2024-06-17 20:01:19 +02:00
parent 5070ab254d
commit 45d007a71f
2 changed files with 24 additions and 26 deletions

View File

@@ -89,6 +89,7 @@ pub enum BlockProcessingError {
found: Hash256, found: Hash256,
}, },
WithdrawalCredentialsInvalid, WithdrawalCredentialsInvalid,
PendingAttestationInElectra,
} }
impl From<BeaconStateError> for BlockProcessingError { impl From<BeaconStateError> for BlockProcessingError {

View File

@@ -76,33 +76,30 @@ pub mod base {
) )
.map_err(|e| e.into_with_index(i))?; .map_err(|e| e.into_with_index(i))?;
match attestation { let AttestationRef::Base(attestation) = attestation else {
AttestationRef::Base(att) => { // Pending attestations have been deprecated in a altair, this branch should
let pending_attestation = PendingAttestation { // never happen
aggregation_bits: att.aggregation_bits.clone(), return Err(BlockProcessingError::PendingAttestationInElectra);
data: att.data.clone(),
inclusion_delay: state.slot().safe_sub(att.data.slot)?.as_u64(),
proposer_index,
};
if attestation.data().target.epoch == state.current_epoch() {
state
.as_base_mut()?
.current_epoch_attestations
.push(pending_attestation)?;
} else {
state
.as_base_mut()?
.previous_epoch_attestations
.push(pending_attestation)?;
}
}
AttestationRef::Electra(_) => {
// TODO(electra) pending attestations are only phase 0
// so we should just raise a relevant error here
todo!()
}
}; };
let pending_attestation = PendingAttestation {
aggregation_bits: attestation.aggregation_bits.clone(),
data: attestation.data.clone(),
inclusion_delay: state.slot().safe_sub(attestation.data.slot)?.as_u64(),
proposer_index,
};
if attestation.data.target.epoch == state.current_epoch() {
state
.as_base_mut()?
.current_epoch_attestations
.push(pending_attestation)?;
} else {
state
.as_base_mut()?
.previous_epoch_attestations
.push(pending_attestation)?;
}
} }
Ok(()) Ok(())