mirror of
https://github.com/status-im/eth2.0-specs.git
synced 2025-01-23 09:01:17 +00:00
Ignore attestations voting for the wrong finalized checkpoint
When nodes are syncing but have not yet reached the canonical `head`, they cannot determine whether nodes they are connected to serve a valid history or are making bogus claims in their `Status` advertisement. Thus, the best course of action that a client can take is to vote for its "current" best synced head, regardless of whether it's connected to peers that claim to have other heads or not. However, in the p2p spec, we penalize such peers with a `REJECT` - this should be an `IGNORE` instead because this vote is correct per the spec, albeit "late" according to the validating clients' view of the chain.
This commit is contained in:
parent
8ae93b8265
commit
9fb2dd16c1
@ -424,7 +424,7 @@ The following validations MUST pass before forwarding the `attestation` on the s
|
||||
- _[REJECT]_ The block being voted for (`attestation.data.beacon_block_root`) passes validation.
|
||||
- _[REJECT]_ The attestation's target block is an ancestor of the block named in the LMD vote -- i.e.
|
||||
`get_ancestor(store, attestation.data.beacon_block_root, compute_start_slot_at_epoch(attestation.data.target.epoch)) == attestation.data.target.root`
|
||||
- _[REJECT]_ The current `finalized_checkpoint` is an ancestor of the `block` defined by `attestation.data.beacon_block_root` -- i.e.
|
||||
- _[IGNORE]_ The current `finalized_checkpoint` is an ancestor of the `block` defined by `attestation.data.beacon_block_root` -- i.e.
|
||||
`get_ancestor(store, attestation.data.beacon_block_root, compute_start_slot_at_epoch(store.finalized_checkpoint.epoch))
|
||||
== store.finalized_checkpoint.root`
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user