|
@ -221,7 +221,8 @@ type Evidence interface { |
|
|
|
|
|
|
|
|
All evidence can be encoded and decoded to and from Protobuf with the `EvidenceToProto()` |
|
|
All evidence can be encoded and decoded to and from Protobuf with the `EvidenceToProto()` |
|
|
and `EvidenceFromProto()` functions. The [Fork Accountability](../consensus/light-client/accountability.md) |
|
|
and `EvidenceFromProto()` functions. The [Fork Accountability](../consensus/light-client/accountability.md) |
|
|
document provides a good overview for the types of evidence and how they occur. |
|
|
|
|
|
|
|
|
document provides a good overview for the types of evidence and how they occur. Each evidence uses |
|
|
|
|
|
the timestamp of the block that the evidence occured at to indicate the age of the evidence. |
|
|
|
|
|
|
|
|
`DuplicateVoteEvidence` represents a validator that has voted for two different blocks |
|
|
`DuplicateVoteEvidence` represents a validator that has voted for two different blocks |
|
|
in the same round of the same height. Votes are lexicographically sorted on `BlockID`. |
|
|
in the same round of the same height. Votes are lexicographically sorted on `BlockID`. |
|
@ -230,6 +231,8 @@ in the same round of the same height. Votes are lexicographically sorted on `Blo |
|
|
type DuplicateVoteEvidence struct { |
|
|
type DuplicateVoteEvidence struct { |
|
|
VoteA *Vote |
|
|
VoteA *Vote |
|
|
VoteB *Vote |
|
|
VoteB *Vote |
|
|
|
|
|
|
|
|
|
|
|
Timestamp time.Time |
|
|
} |
|
|
} |
|
|
``` |
|
|
``` |
|
|
|
|
|
|
|
@ -253,6 +256,8 @@ type LunaticValidatorEvidence struct { |
|
|
Header *Header |
|
|
Header *Header |
|
|
Vote *Vote |
|
|
Vote *Vote |
|
|
InvalidHeaderField string |
|
|
InvalidHeaderField string |
|
|
|
|
|
|
|
|
|
|
|
Timestamp time.Time |
|
|
} |
|
|
} |
|
|
``` |
|
|
``` |
|
|
|
|
|
|
|
|