mirror of
https://github.com/sigp/lighthouse.git
synced 2026-05-30 04:37:13 +00:00
Remove future slot rejection
This commit is contained in:
@@ -185,11 +185,6 @@ pub enum InvalidAttestation {
|
||||
/// Post-Gloas: attestation with index == 1 (payload_present) requires the block's
|
||||
/// payload to have been received (`root in store.payload_states`).
|
||||
PayloadNotReceived { beacon_block_root: Hash256 },
|
||||
/// The attestation slot is not yet in the past (current_slot < attestation_slot + 1).
|
||||
FutureSlot {
|
||||
attestation_slot: Slot,
|
||||
current_slot: Slot,
|
||||
},
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, PartialEq)]
|
||||
@@ -1123,15 +1118,6 @@ where
|
||||
|
||||
if matches!(is_from_block, AttestationFromBlock::False) {
|
||||
self.validate_target_epoch_against_current_time(target.epoch)?;
|
||||
|
||||
// Per spec: attestations can only affect the fork choice of subsequent slots.
|
||||
// Reject attestations whose slot is not yet in the past.
|
||||
if self.fc_store.get_current_slot() < indexed_attestation.data().slot + 1 {
|
||||
return Err(InvalidAttestation::FutureSlot {
|
||||
attestation_slot: indexed_attestation.data().slot,
|
||||
current_slot: self.fc_store.get_current_slot(),
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
if target.epoch != indexed_attestation.data().slot.epoch(E::slots_per_epoch()) {
|
||||
|
||||
@@ -402,12 +402,24 @@ impl<E: EthSpec> Case for ForkChoiceTest<E> {
|
||||
match valid {
|
||||
Some(false) => {
|
||||
if result.is_ok() {
|
||||
// We allow acceptance of future slot attestations which the spec
|
||||
// deems invalid (we just queue them).
|
||||
let current_slot = tester
|
||||
.harness
|
||||
.chain
|
||||
.canonical_head
|
||||
.fork_choice_read_lock()
|
||||
.fc_store()
|
||||
.get_current_slot();
|
||||
let future_attestation = attestation.data().slot >= current_slot;
|
||||
if !future_attestation {
|
||||
return Err(Error::DidntFail(
|
||||
"attestation marked valid=false should have been rejected"
|
||||
.into(),
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
_ => result?,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1100,6 +1100,7 @@ fn fork_choice_compliance_block_weight_test() {
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[ignore]
|
||||
fn fork_choice_compliance_invalid_message_test() {
|
||||
ForkChoiceComplianceHandler::<MinimalEthSpec>::new("invalid_message_test").run();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user