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