syntax = "proto3"; package ibc.core.client.v1; option go_package = "github.com/cosmos/cosmos-sdk/x/ibc/core/02-client/types"; import "gogoproto/gogo.proto"; import "google/protobuf/any.proto"; // IdentifiedClientState defines a client state with an additional client // identifier field. message IdentifiedClientState { // client identifier string client_id = 1 [(gogoproto.moretags) = "yaml:\"client_id\""]; // client state google.protobuf.Any client_state = 2 [(gogoproto.moretags) = "yaml:\"client_state\""]; } // ConsensusStateWithHeight defines a consensus state with an additional height field. message ConsensusStateWithHeight { // consensus state height Height height = 1 [(gogoproto.nullable) = false]; // consensus state google.protobuf.Any consensus_state = 2 [(gogoproto.moretags) = "yaml\"consensus_state\""]; } // ClientConsensusStates defines all the stored consensus states for a given // client. message ClientConsensusStates { // client identifier string client_id = 1 [(gogoproto.moretags) = "yaml:\"client_id\""]; // consensus states and their heights associated with the client repeated ConsensusStateWithHeight consensus_states = 2 [(gogoproto.moretags) = "yaml:\"consensus_states\"", (gogoproto.nullable) = false]; } // ClientUpdateProposal is a governance proposal. If it passes, the client is // updated with the provided header. The update may fail if the header is not // valid given certain conditions specified by the client implementation. message ClientUpdateProposal { option (gogoproto.goproto_getters) = false; // the title of the update proposal string title = 1; // the description of the proposal string description = 2; // the client identifier for the client to be updated if the proposal passes string client_id = 3 [(gogoproto.moretags) = "yaml:\"client_id\""]; // the header used to update the client if the proposal passes google.protobuf.Any header = 4; } // Height is a monotonically increasing data type // that can be compared against another Height for the purposes of updating and // freezing clients // // Normally the RevisionHeight is incremented at each height while keeping RevisionNumber // the same. However some consensus algorithms may choose to reset the // height in certain conditions e.g. hard forks, state-machine breaking changes // In these cases, the RevisionNumber is incremented so that height continues to // be monitonically increasing even as the RevisionHeight gets reset message Height { option (gogoproto.goproto_getters) = false; option (gogoproto.goproto_stringer) = false; // the revision that the client is currently on uint64 revision_number = 1 [(gogoproto.moretags) = "yaml:\"revision_number\""]; // the height within the given revision uint64 revision_height = 2 [(gogoproto.moretags) = "yaml:\"revision_height\""]; } // Params defines the set of IBC light client parameters. message Params { // allowed_clients defines the list of allowed client state types. repeated string allowed_clients = 1 [(gogoproto.moretags) = "yaml:\"allowed_clients\""]; }