syntax = "proto3";
|
|
package tendermint.types;
|
|
|
|
option go_package = "github.com/tendermint/tendermint/proto/types";
|
|
|
|
import "third_party/proto/gogoproto/gogo.proto";
|
|
import "proto/types/types.proto";
|
|
import "google/protobuf/timestamp.proto";
|
|
import "proto/crypto/keys/types.proto";
|
|
|
|
// DuplicateVoteEvidence contains evidence a validator signed two conflicting
|
|
// votes.
|
|
message DuplicateVoteEvidence {
|
|
Vote vote_a = 1;
|
|
Vote vote_b = 2;
|
|
}
|
|
|
|
message PotentialAmnesiaEvidence {
|
|
Vote vote_a = 1;
|
|
Vote vote_b = 2;
|
|
|
|
int64 height_stamp = 3;
|
|
}
|
|
|
|
message AmnesiaEvidence {
|
|
PotentialAmnesiaEvidence potential_amnesia_evidence = 1;
|
|
ProofOfLockChange polc = 2;
|
|
}
|
|
|
|
// MockEvidence is used for testing pruposes
|
|
message MockEvidence {
|
|
int64 evidence_height = 1;
|
|
google.protobuf.Timestamp evidence_time = 2
|
|
[(gogoproto.nullable) = false, (gogoproto.stdtime) = true];
|
|
bytes evidence_address = 3;
|
|
}
|
|
message MockRandomEvidence {
|
|
int64 evidence_height = 1;
|
|
google.protobuf.Timestamp evidence_time = 2
|
|
[(gogoproto.nullable) = false, (gogoproto.stdtime) = true];
|
|
bytes evidence_address = 3;
|
|
bytes rand_bytes = 4;
|
|
}
|
|
|
|
message ConflictingHeadersEvidence {
|
|
SignedHeader h1 = 1;
|
|
SignedHeader h2 = 2;
|
|
}
|
|
|
|
message LunaticValidatorEvidence {
|
|
Header header = 1;
|
|
Vote vote = 2;
|
|
string invalid_header_field = 3;
|
|
}
|
|
|
|
message PhantomValidatorEvidence {
|
|
Vote vote = 1;
|
|
int64 last_height_validator_was_in_set = 2;
|
|
}
|
|
|
|
message Evidence {
|
|
oneof sum {
|
|
DuplicateVoteEvidence duplicate_vote_evidence = 1;
|
|
ConflictingHeadersEvidence conflicting_headers_evidence = 2;
|
|
LunaticValidatorEvidence lunatic_validator_evidence = 3;
|
|
PotentialAmnesiaEvidence potential_amnesia_evidence = 4;
|
|
AmnesiaEvidence amnesia_evidence = 5;
|
|
PhantomValidatorEvidence phantom_validator_evidence = 6;
|
|
|
|
MockEvidence mock_evidence = 7;
|
|
MockRandomEvidence mock_random_evidence = 8;
|
|
}
|
|
}
|
|
|
|
// EvidenceData contains any evidence of malicious wrong-doing by validators
|
|
message EvidenceData {
|
|
repeated Evidence evidence = 1 [(gogoproto.nullable) = false];
|
|
bytes hash = 2;
|
|
}
|
|
|
|
message ProofOfLockChange {
|
|
repeated Vote votes = 1;
|
|
tendermint.crypto.keys.PublicKey pub_key = 2;
|
|
}
|