syntax = "proto3"; package ibc.lightclients.solomachine.v1; option go_package = "github.com/cosmos/cosmos-sdk/x/ibc/light-clients/solomachine/types"; import "cosmos/base/crypto/v1beta1/crypto.proto"; import "gogoproto/gogo.proto"; // ClientState defines a solo machine client that tracks the current consensus // state and if the client is frozen. message ClientState { option (gogoproto.goproto_getters) = false; // frozen sequence of the solo machine uint64 frozen_sequence = 1 [(gogoproto.moretags) = "yaml:\"frozen_sequence\""]; ConsensusState consensus_state = 2 [(gogoproto.moretags) = "yaml:\"consensus_state\""]; } // ConsensusState defines a solo machine consensus state message ConsensusState { option (gogoproto.goproto_getters) = false; // current sequence of the consensus state uint64 sequence = 1; // public key of the solo machine cosmos.base.crypto.v1beta1.PublicKey public_key = 2 [(gogoproto.moretags) = "yaml:\"public_key\""]; uint64 timestamp = 3; } // Header defines a solo machine consensus header message Header { option (gogoproto.goproto_getters) = false; // sequence to update solo machine public key at uint64 sequence = 1; bytes signature = 2; cosmos.base.crypto.v1beta1.PublicKey new_public_key = 3 [(gogoproto.moretags) = "yaml:\"new_public_key\""]; } // Evidence defines evidence of misbehaviour for a solo machine which consists // of a sequence and two signatures over different messages at that sequence. message Evidence { option (gogoproto.goproto_getters) = false; option (gogoproto.goproto_stringer) = false; string client_id = 1 [(gogoproto.moretags) = "yaml:\"client_id\""]; uint64 sequence = 2; SignatureAndData signature_one = 3 [(gogoproto.moretags) = "yaml:\"signature_one\""]; SignatureAndData signature_two = 4 [(gogoproto.moretags) = "yaml:\"signature_two\""]; } // SignatureAndData contains a signature and the data signed over to create that // signature. message SignatureAndData { option (gogoproto.goproto_getters) = false; bytes signature = 1; bytes data = 2; } // TimestampedSignature contains the signature and the timestamp of the // signature. message TimestampedSignature { option (gogoproto.goproto_getters) = false; bytes signature = 1; uint64 timestamp = 2; } // MsgCreateClient defines a message to create an IBC client message MsgCreateClient { option (gogoproto.goproto_getters) = false; string client_id = 1 [(gogoproto.moretags) = "yaml:\"client_id\""]; ConsensusState consensus_state = 2 [(gogoproto.moretags) = "yaml:\"consensus_state\""]; } // MsgUpdateClient defines a message to update an IBC client message MsgUpdateClient { option (gogoproto.goproto_getters) = false; string client_id = 1 [(gogoproto.moretags) = "yaml:\"client_id\""]; Header header = 2; } // MsgSubmitClientMisbehaviour defines an sdk.Msg type that supports submitting // arbitrary Evidence. message MsgSubmitClientMisbehaviour { option (gogoproto.goproto_getters) = false; bytes submitter = 1 [(gogoproto.casttype) = "github.com/cosmos/cosmos-sdk/types.AccAddress"]; Evidence evidence = 2; }