syntax = "proto3";
package tendermint.types;

option go_package = "github.com/tendermint/tendermint/proto/tendermint/types";

import "gogoproto/gogo.proto";
import "tendermint/types/types.proto";

// DuplicateVoteEvidence contains evidence a validator signed two conflicting
// votes.
message DuplicateVoteEvidence {
  Vote vote_a = 1;
  Vote vote_b = 2;
}

message LightClientAttackEvidence {
  LightBlock conflicting_block = 1;
  int64      common_height     = 2;
}

message Evidence {
  oneof sum {
    DuplicateVoteEvidence     duplicate_vote_evidence      = 1;
    LightClientAttackEvidence light_client_attack_evidence = 2;
  }
}

// EvidenceData contains any evidence of malicious wrong-doing by validators
message EvidenceData {
  repeated Evidence evidence = 1 [(gogoproto.nullable) = false];
}
