github.com/franono/tendermint@v0.32.2-0.20200527150959-749313264ce9/proto/types/evidence.proto (about) 1 syntax = "proto3"; 2 package tendermint.proto.types; 3 4 option go_package = "github.com/franono/tendermint/proto/types"; 5 6 import "third_party/proto/gogoproto/gogo.proto"; 7 import "proto/types/types.proto"; 8 import "google/protobuf/timestamp.proto"; 9 import "proto/crypto/keys/types.proto"; 10 11 // DuplicateVoteEvidence contains evidence a validator signed two conflicting 12 // votes. 13 message DuplicateVoteEvidence { 14 Vote vote_a = 1; 15 Vote vote_b = 2; 16 } 17 18 message PotentialAmnesiaEvidence { 19 Vote vote_a = 1; 20 Vote vote_b = 2; 21 } 22 23 // MockEvidence is used for testing pruposes 24 message MockEvidence { 25 int64 evidence_height = 1; 26 google.protobuf.Timestamp evidence_time = 2 27 [(gogoproto.nullable) = false, (gogoproto.stdtime) = true]; 28 bytes evidence_address = 3; 29 } 30 message MockRandomEvidence { 31 int64 evidence_height = 1; 32 google.protobuf.Timestamp evidence_time = 2 33 [(gogoproto.nullable) = false, (gogoproto.stdtime) = true]; 34 bytes evidence_address = 3; 35 bytes rand_bytes = 4; 36 } 37 38 message ConflictingHeadersEvidence { 39 SignedHeader h1 = 1; 40 SignedHeader h2 = 2; 41 } 42 43 message LunaticValidatorEvidence { 44 Header header = 1; 45 Vote vote = 2; 46 string invalid_header_field = 3; 47 } 48 49 message Evidence { 50 oneof sum { 51 DuplicateVoteEvidence duplicate_vote_evidence = 1; 52 ConflictingHeadersEvidence conflicting_headers_evidence = 2; 53 LunaticValidatorEvidence lunatic_validator_evidence = 3; 54 PotentialAmnesiaEvidence potential_amnesia_evidence = 4; 55 56 MockEvidence mock_evidence = 5; 57 MockRandomEvidence mock_random_evidence = 6; 58 } 59 } 60 61 // EvidenceData contains any evidence of malicious wrong-doing by validators 62 message EvidenceData { 63 repeated Evidence evidence = 1 [(gogoproto.nullable) = false]; 64 bytes hash = 2; 65 } 66 67 message ProofOfLockChange { 68 repeated Vote votes = 1 [(gogoproto.nullable) = false]; 69 tendermint.proto.crypto.keys.PublicKey pub_key = 2 [(gogoproto.nullable) = false]; 70 }