diff --git a/eth2/state_processing/src/per_block_processing.rs b/eth2/state_processing/src/per_block_processing.rs index e79f5f08c3..6c52a26764 100644 --- a/eth2/state_processing/src/per_block_processing.rs +++ b/eth2/state_processing/src/per_block_processing.rs @@ -322,13 +322,7 @@ pub fn process_attestations( // Update the state in series. for attestation in attestations { - let pending_attestation = PendingAttestation { - data: attestation.data.clone(), - aggregation_bitfield: attestation.aggregation_bitfield.clone(), - custody_bitfield: attestation.custody_bitfield.clone(), - inclusion_slot: state.slot, - }; - + let pending_attestation = PendingAttestation::from_attestation(attestation, state.slot); let attestation_epoch = attestation.data.slot.epoch(spec.slots_per_epoch); if attestation_epoch == state.current_epoch(spec) { diff --git a/eth2/types/src/pending_attestation.rs b/eth2/types/src/pending_attestation.rs index ca50b6d1c4..938e59beff 100644 --- a/eth2/types/src/pending_attestation.rs +++ b/eth2/types/src/pending_attestation.rs @@ -1,5 +1,5 @@ use crate::test_utils::TestRandom; -use crate::{AttestationData, Bitfield, Slot}; +use crate::{Attestation, AttestationData, Bitfield, Slot}; use rand::RngCore; use serde_derive::{Deserialize, Serialize}; use ssz_derive::{Decode, Encode, TreeHash}; @@ -16,6 +16,18 @@ pub struct PendingAttestation { pub inclusion_slot: Slot, } +impl PendingAttestation { + /// Create a `PendingAttestation` from an `Attestation`, at the given `inclusion_slot`. + pub fn from_attestation(attestation: &Attestation, inclusion_slot: Slot) -> Self { + PendingAttestation { + data: attestation.data.clone(), + aggregation_bitfield: attestation.aggregation_bitfield.clone(), + custody_bitfield: attestation.custody_bitfield.clone(), + inclusion_slot, + } + } +} + #[cfg(test)] mod tests { use super::*;