mirror of
https://github.com/sigp/lighthouse.git
synced 2026-03-06 10:11:44 +00:00
Maintain attestations that reference unknown blocks (#2319)
## Issue Addressed #635 ## Proposed Changes - Keep attestations that reference a block we have not seen for 30secs before being re processed - If we do import the block before that time elapses, it is reprocessed in that moment - The first time it fails, do nothing wrt to gossipsub propagation or peer downscoring. If after being re processed it fails, downscore with a `LowToleranceError` and ignore the message.
This commit is contained in:
@@ -1790,8 +1790,8 @@ pub fn serve<T: BeaconChainTypes>(
|
||||
let mut failures = Vec::new();
|
||||
|
||||
// Verify that all messages in the post are valid before processing further
|
||||
for (index, aggregate) in aggregates.as_slice().iter().enumerate() {
|
||||
match chain.verify_aggregated_attestation_for_gossip(aggregate.clone()) {
|
||||
for (index, aggregate) in aggregates.into_iter().enumerate() {
|
||||
match chain.verify_aggregated_attestation_for_gossip(aggregate) {
|
||||
Ok(verified_aggregate) => {
|
||||
messages.push(PubsubMessage::AggregateAndProofAttestation(Box::new(
|
||||
verified_aggregate.aggregate().clone(),
|
||||
@@ -1816,8 +1816,8 @@ pub fn serve<T: BeaconChainTypes>(
|
||||
// It's reasonably likely that two different validators produce
|
||||
// identical aggregates, especially if they're using the same beacon
|
||||
// node.
|
||||
Err(AttnError::AttestationAlreadyKnown(_)) => continue,
|
||||
Err(e) => {
|
||||
Err((AttnError::AttestationAlreadyKnown(_), _)) => continue,
|
||||
Err((e, aggregate)) => {
|
||||
error!(log,
|
||||
"Failure verifying aggregate and proofs";
|
||||
"error" => format!("{:?}", e),
|
||||
|
||||
Reference in New Issue
Block a user