@ -250,61 +250,6 @@ Valid Duplicate Vote Evidence must adhere to the following rules:
- Time must be equal to the block time
### AmensiaEvidence
`AmnesiaEvidence` represents a validator that has incorrectly voted for another block in a
different round to the the block that the validator was previously locked on. This form
of evidence is generated differently from the rest. See this
[ADR](https://github.com/tendermint/tendermint/blob/master/docs/architecture/adr-056-proving-amnesia-attacks.md) for more information.
```go
type AmnesiaEvidence struct {
*PotentialAmnesiaEvidence
Polc *ProofOfLockChange
}
```
Valid Amnesia Evidence must adhere to the following rules:
- Validator Address and Height must be the same and the Round must be different.
- The BlockID's must be different and the BlockID of the first vote must not be nil.
- The vote signature must be valid (using the chainID).
- The evidence either must have a complete and valid `ProofOfLockChange` or have stood in the nodes evidence pool for the `ProofTrialPeriod`.
- The validator must have been in the validator set.
- Time must be equal to the corresponding block time.
### LunaticValidatorEvidence
`LunaticValidatorEvidence` represents a validator that has signed for an arbitrary application state.
This attack only applies to Light clients.
```go
type LunaticValidatorEvidence struct {
Header *Header
Vote *Vote
InvalidHeaderField string
Timestamp time.Time
}
```
Valid Lunatic Validator Evidence must adhere to the following rules:
- Header must have an invalid field compared to the correctly derived header that the node has in either the `ValidatorHash`, `NextValidatorHash`, `ConsensusHash`, `AppHash`, or `LastResultsHash`.
- The vote must be for the incorrect header (BlockID of the vote must match the hash of the header).
- The vote must be correcly signed (using the chainID).
- The validator must have been in a correct validator set within the bonding period.
- Time must be equal to the corresponding block time of the header that the node has (not the incorrect header).
## Validation
Here we describe the validation rules for every element in a block.