Suppose a validator needs to do attestation for slot N. It sends the attestation but later discovers that there was a fork or reorg on slot N-1 (and that he attested for the wrong fork). Should he produce another attestation for the correct fork?
1 Answer
No, a validator should never produce two concurrent attestations to avoid being slashed for Double vote.
Here is the condition that would slash a double vote where the first vote is data_1
and the second vote is data_2
:
# Double vote
(data_1 != data_2 and data_1.target.epoch == data_2.target.epoch)
As you can see, a validator should not make two different attestations for the same epoch.