105 lines
4.1 KiB
Protocol Buffer
105 lines
4.1 KiB
Protocol Buffer
syntax = "proto3";
|
|
package ibc.core.connection.v1;
|
|
|
|
option go_package = "github.com/cosmos/cosmos-sdk/x/ibc/core/03-connection/types";
|
|
|
|
import "gogoproto/gogo.proto";
|
|
import "ibc/core/commitment/v1/commitment.proto";
|
|
|
|
// ICS03 - Connection Data Structures as defined in
|
|
// https://github.com/cosmos/ics/tree/master/spec/ics-003-connection-semantics#data-structures
|
|
|
|
// ConnectionEnd defines a stateful object on a chain connected to another
|
|
// separate one.
|
|
// NOTE: there must only be 2 defined ConnectionEnds to establish
|
|
// a connection between two chains.
|
|
message ConnectionEnd {
|
|
option (gogoproto.goproto_getters) = false;
|
|
// client associated with this connection.
|
|
string client_id = 1 [(gogoproto.moretags) = "yaml:\"client_id\""];
|
|
// IBC version which can be utilised to determine encodings or protocols for
|
|
// channels or packets utilising this connection.
|
|
repeated Version versions = 2;
|
|
// current state of the connection end.
|
|
State state = 3;
|
|
// counterparty chain associated with this connection.
|
|
Counterparty counterparty = 4 [(gogoproto.nullable) = false];
|
|
// delay period that must pass before a consensus state can be used for packet-verification
|
|
// NOTE: delay period logic is only implemented by some clients.
|
|
uint64 delay_period = 5 [(gogoproto.moretags) = "yaml:\"delay_period\""];
|
|
}
|
|
|
|
// IdentifiedConnection defines a connection with additional connection
|
|
// identifier field.
|
|
message IdentifiedConnection {
|
|
option (gogoproto.goproto_getters) = false;
|
|
// connection identifier.
|
|
string id = 1 [(gogoproto.moretags) = "yaml:\"id\""];
|
|
// client associated with this connection.
|
|
string client_id = 2 [(gogoproto.moretags) = "yaml:\"client_id\""];
|
|
// IBC version which can be utilised to determine encodings or protocols for
|
|
// channels or packets utilising this connection
|
|
repeated Version versions = 3;
|
|
// current state of the connection end.
|
|
State state = 4;
|
|
// counterparty chain associated with this connection.
|
|
Counterparty counterparty = 5 [(gogoproto.nullable) = false];
|
|
// delay period associated with this connection.
|
|
uint64 delay_period = 6 [(gogoproto.moretags) = "yaml:\"delay_period\""];
|
|
}
|
|
|
|
// State defines if a connection is in one of the following states:
|
|
// INIT, TRYOPEN, OPEN or UNINITIALIZED.
|
|
enum State {
|
|
option (gogoproto.goproto_enum_prefix) = false;
|
|
|
|
// Default State
|
|
STATE_UNINITIALIZED_UNSPECIFIED = 0 [(gogoproto.enumvalue_customname) = "UNINITIALIZED"];
|
|
// A connection end has just started the opening handshake.
|
|
STATE_INIT = 1 [(gogoproto.enumvalue_customname) = "INIT"];
|
|
// A connection end has acknowledged the handshake step on the counterparty
|
|
// chain.
|
|
STATE_TRYOPEN = 2 [(gogoproto.enumvalue_customname) = "TRYOPEN"];
|
|
// A connection end has completed the handshake.
|
|
STATE_OPEN = 3 [(gogoproto.enumvalue_customname) = "OPEN"];
|
|
}
|
|
|
|
// Counterparty defines the counterparty chain associated with a connection end.
|
|
message Counterparty {
|
|
option (gogoproto.goproto_getters) = false;
|
|
|
|
// identifies the client on the counterparty chain associated with a given
|
|
// connection.
|
|
string client_id = 1 [(gogoproto.moretags) = "yaml:\"client_id\""];
|
|
// identifies the connection end on the counterparty chain associated with a
|
|
// given connection.
|
|
string connection_id = 2 [(gogoproto.moretags) = "yaml:\"connection_id\""];
|
|
// commitment merkle prefix of the counterparty chain.
|
|
ibc.core.commitment.v1.MerklePrefix prefix = 3 [(gogoproto.nullable) = false];
|
|
}
|
|
|
|
// ClientPaths define all the connection paths for a client state.
|
|
message ClientPaths {
|
|
// list of connection paths
|
|
repeated string paths = 1;
|
|
}
|
|
|
|
// ConnectionPaths define all the connection paths for a given client state.
|
|
message ConnectionPaths {
|
|
// client state unique identifier
|
|
string client_id = 1 [(gogoproto.moretags) = "yaml:\"client_id\""];
|
|
// list of connection paths
|
|
repeated string paths = 2;
|
|
}
|
|
|
|
// Version defines the versioning scheme used to negotiate the IBC verison in
|
|
// the connection handshake.
|
|
message Version {
|
|
option (gogoproto.goproto_getters) = false;
|
|
|
|
// unique version identifier
|
|
string identifier = 1;
|
|
// list of features compatible with the specified identifier
|
|
repeated string features = 2;
|
|
}
|