x/ibc: remove ID from ConnectionEnd (#6814)

* remove connection id

* various test and code fixes

* fix tests

* Update proto/ibc/connection/connection.proto

Co-authored-by: Federico Kunze <31522760+fedekunze@users.noreply.github.com>

* rename utils.go to parse.go in host

Co-authored-by: Federico Kunze <31522760+fedekunze@users.noreply.github.com>
This commit is contained in:
colin axner 2020-07-22 15:59:15 +02:00 committed by GitHub
parent e9627abc54
commit ef0a7344af
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
26 changed files with 563 additions and 177 deletions

View File

@ -34,9 +34,8 @@ message MsgConnectionOpenTry {
(gogoproto.moretags) = "yaml:\"connection_id\""
];
Counterparty counterparty = 3 [(gogoproto.nullable) = false];
repeated string counterparty_versions = 4 [
(gogoproto.moretags) = "yaml:\"counterparty_versions\""
];
repeated string counterparty_versions = 4
[(gogoproto.moretags) = "yaml:\"counterparty_versions\""];
// proof of the initialization the connection on Chain A: `UNITIALIZED ->
// INIT`
bytes proof_init = 5 [(gogoproto.moretags) = "yaml:\"proof_init\""];
@ -90,6 +89,24 @@ message MsgConnectionOpenConfirm {
// 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.customname) = "ClientID",
(gogoproto.moretags) = "yaml:\"client_id\""
];
// IBC version which can be utilised to determine encodings or protocols for
// channels or packets utilising this connection
repeated string versions = 2;
// current state of the connection end.
State state = 3;
// counterparty chain associated with this connection.
Counterparty counterparty = 4 [(gogoproto.nullable) = false];
}
// IdentifiedConnection defines a connection with additional connection
// identifier field.
message IdentifiedConnection {
option (gogoproto.goproto_getters) = false;
// connection identifier.
string id = 1

View File

@ -47,7 +47,7 @@ message QueryConnectionsRequest {
// QueryConnectionsResponse is the response type for the Query/Connections RPC method.
message QueryConnectionsResponse {
// list of stored connections of the chain.
repeated ibc.connection.ConnectionEnd connections = 1;
repeated ibc.connection.IdentifiedConnection connections = 1;
// pagination response
cosmos.query.PageResponse pagination = 2;
// query block height
@ -72,4 +72,4 @@ message QueryClientConnectionsResponse {
string proof_path = 3;
// height at which the proof was generated
uint64 proof_height = 4;
}
}

View File

@ -56,7 +56,7 @@ func queryConnectionABCI(clientCtx client.Context, connectionID string) (*types.
return nil, err
}
return types.NewQueryConnectionResponse(connection, proofBz, res.Height), nil
return types.NewQueryConnectionResponse(connectionID, connection, proofBz, res.Height), nil
}
// QueryClientConnections queries the connection paths registered for a particular client.

View File

@ -6,7 +6,6 @@ import (
// ConnectionI describes the required methods for a connection.
type ConnectionI interface {
GetID() string
GetClientID() string
GetState() int32
GetCounterparty() CounterpartyI

View File

@ -10,7 +10,8 @@ import (
// state.
func InitGenesis(ctx sdk.Context, k keeper.Keeper, gs types.GenesisState) {
for _, connection := range gs.Connections {
k.SetConnection(ctx, connection.ID, connection)
conn := types.NewConnectionEnd(connection.State, connection.ClientID, connection.Counterparty, connection.Versions)
k.SetConnection(ctx, connection.ID, conn)
}
for _, connPaths := range gs.ClientConnectionPaths {
k.SetClientConnectionPaths(ctx, connPaths.ClientID, connPaths.Paths)

View File

@ -49,16 +49,22 @@ func (q Keeper) Connections(c context.Context, req *types.QueryConnectionsReques
ctx := sdk.UnwrapSDKContext(c)
connections := []*types.ConnectionEnd{}
connections := []*types.IdentifiedConnection{}
store := prefix.NewStore(ctx.KVStore(q.storeKey), host.KeyConnectionPrefix)
pageRes, err := query.Paginate(store, req.Pagination, func(_, value []byte) error {
pageRes, err := query.Paginate(store, req.Pagination, func(key, value []byte) error {
var result types.ConnectionEnd
if err := q.cdc.UnmarshalBinaryBare(value, &result); err != nil {
return err
}
connections = append(connections, &result)
connectionID, err := host.ParseConnectionPath(string(key))
if err != nil {
return err
}
identifiedConnection := types.NewIdentifiedConnection(connectionID, result)
connections = append(connections, &identifiedConnection)
return nil
})

View File

@ -50,7 +50,7 @@ func (suite *KeeperTestSuite) TestQueryConnection() {
connB := suite.chainB.GetFirstTestConnection(clientB, clientA)
counterparty := types.NewCounterparty(clientB, connB.ID, suite.chainB.GetPrefix())
expConnection = types.NewConnectionEnd(types.INIT, connA.ID, clientA, counterparty, types.GetCompatibleEncodedVersions())
expConnection = types.NewConnectionEnd(types.INIT, clientA, counterparty, types.GetCompatibleEncodedVersions())
suite.chainA.App.IBCKeeper.ConnectionKeeper.SetConnection(suite.chainA.GetContext(), connA.ID, expConnection)
req = &types.QueryConnectionRequest{
@ -84,7 +84,7 @@ func (suite *KeeperTestSuite) TestQueryConnection() {
func (suite *KeeperTestSuite) TestQueryConnections() {
var (
req *types.QueryConnectionsRequest
expConnections = []*types.ConnectionEnd{}
expConnections = []*types.IdentifiedConnection{}
)
testCases := []struct {
@ -119,11 +119,15 @@ func (suite *KeeperTestSuite) TestQueryConnections() {
counterparty2 := types.NewCounterparty(clientB, connB1.ID, suite.chainB.GetPrefix())
counterparty3 := types.NewCounterparty(clientB1, connB2.ID, suite.chainB.GetPrefix())
conn1 := types.NewConnectionEnd(types.OPEN, connA0.ID, clientA, counterparty1, types.GetCompatibleEncodedVersions())
conn2 := types.NewConnectionEnd(types.INIT, connA1.ID, clientA, counterparty2, types.GetCompatibleEncodedVersions())
conn3 := types.NewConnectionEnd(types.OPEN, connA2.ID, clientA1, counterparty3, types.GetCompatibleEncodedVersions())
conn1 := types.NewConnectionEnd(types.OPEN, clientA, counterparty1, types.GetCompatibleEncodedVersions())
conn2 := types.NewConnectionEnd(types.INIT, clientA, counterparty2, types.GetCompatibleEncodedVersions())
conn3 := types.NewConnectionEnd(types.OPEN, clientA1, counterparty3, types.GetCompatibleEncodedVersions())
expConnections = []*types.ConnectionEnd{&conn1, &conn2, &conn3}
iconn1 := types.NewIdentifiedConnection(connA0.ID, conn1)
iconn2 := types.NewIdentifiedConnection(connA1.ID, conn2)
iconn3 := types.NewIdentifiedConnection(connA2.ID, conn3)
expConnections = []*types.IdentifiedConnection{&iconn1, &iconn2, &iconn3}
req = &types.QueryConnectionsRequest{
Pagination: &query.PageRequest{

View File

@ -26,7 +26,7 @@ func (k Keeper) ConnOpenInit(
}
// connection defines chain A's ConnectionEnd
connection := types.NewConnectionEnd(types.INIT, connectionID, clientID, counterparty, types.GetCompatibleEncodedVersions())
connection := types.NewConnectionEnd(types.INIT, clientID, counterparty, types.GetCompatibleEncodedVersions())
k.SetConnection(ctx, connectionID, connection)
if err := k.addConnectionToClient(ctx, clientID, connectionID); err != nil {
@ -70,7 +70,7 @@ func (k Keeper) ConnOpenTry(
// NOTE: chain A's counterparty is chain B (i.e where this code is executed)
prefix := k.GetCommitmentPrefix()
expectedCounterparty := types.NewCounterparty(clientID, connectionID, commitmenttypes.NewMerklePrefix(prefix.Bytes()))
expectedConnection := types.NewConnectionEnd(types.INIT, counterparty.ConnectionID, counterparty.ClientID, expectedCounterparty, counterpartyVersions)
expectedConnection := types.NewConnectionEnd(types.INIT, counterparty.ClientID, expectedCounterparty, counterpartyVersions)
// chain B picks a version from Chain A's available versions that is compatible
// with the supported IBC versions
@ -80,7 +80,7 @@ func (k Keeper) ConnOpenTry(
}
// connection defines chain B's ConnectionEnd
connection := types.NewConnectionEnd(types.UNINITIALIZED, connectionID, clientID, counterparty, []string{version})
connection := types.NewConnectionEnd(types.UNINITIALIZED, clientID, counterparty, []string{version})
// Check that ChainA committed expectedConnectionEnd to its state
if err := k.VerifyConnectionState(
@ -183,7 +183,7 @@ func (k Keeper) ConnOpenAck(
prefix := k.GetCommitmentPrefix()
expectedCounterparty := types.NewCounterparty(connection.ClientID, connectionID, commitmenttypes.NewMerklePrefix(prefix.Bytes()))
expectedConnection := types.NewConnectionEnd(types.TRYOPEN, connection.Counterparty.ConnectionID, connection.Counterparty.ClientID, expectedCounterparty, []string{encodedVersion})
expectedConnection := types.NewConnectionEnd(types.TRYOPEN, connection.Counterparty.ClientID, expectedCounterparty, []string{encodedVersion})
// Ensure that ChainB stored expected connectionEnd in its state during ConnOpenTry
if err := k.VerifyConnectionState(
@ -235,7 +235,7 @@ func (k Keeper) ConnOpenConfirm(
prefix := k.GetCommitmentPrefix()
expectedCounterparty := types.NewCounterparty(connection.ClientID, connectionID, commitmenttypes.NewMerklePrefix(prefix.Bytes()))
expectedConnection := types.NewConnectionEnd(types.OPEN, connection.Counterparty.ConnectionID, connection.Counterparty.ClientID, expectedCounterparty, connection.Versions)
expectedConnection := types.NewConnectionEnd(types.OPEN, connection.Counterparty.ClientID, expectedCounterparty, connection.Versions)
// Check that connection on ChainA is open
if err := k.VerifyConnectionState(

View File

@ -130,7 +130,7 @@ func (k Keeper) GetAllClientConnectionPaths(ctx sdk.Context) []types.ConnectionP
// IterateConnections provides an iterator over all ConnectionEnd objects.
// For each ConnectionEnd, cb will be called. If the cb returns true, the
// iterator will close and stop.
func (k Keeper) IterateConnections(ctx sdk.Context, cb func(types.ConnectionEnd) bool) {
func (k Keeper) IterateConnections(ctx sdk.Context, cb func(types.IdentifiedConnection) bool) {
store := ctx.KVStore(k.storeKey)
iterator := sdk.KVStorePrefixIterator(store, host.KeyConnectionPrefix)
@ -139,15 +139,17 @@ func (k Keeper) IterateConnections(ctx sdk.Context, cb func(types.ConnectionEnd)
var connection types.ConnectionEnd
k.cdc.MustUnmarshalBinaryBare(iterator.Value(), &connection)
if cb(connection) {
connectionID := host.MustParseConnectionPath(string(iterator.Key()))
identifiedConnection := types.NewIdentifiedConnection(connectionID, connection)
if cb(identifiedConnection) {
break
}
}
}
// GetAllConnections returns all stored ConnectionEnd objects.
func (k Keeper) GetAllConnections(ctx sdk.Context) (connections []types.ConnectionEnd) {
k.IterateConnections(ctx, func(connection types.ConnectionEnd) bool {
func (k Keeper) GetAllConnections(ctx sdk.Context) (connections []types.IdentifiedConnection) {
k.IterateConnections(ctx, func(connection types.IdentifiedConnection) bool {
connections = append(connections, connection)
return false
})

View File

@ -61,9 +61,13 @@ func (suite KeeperTestSuite) TestGetAllConnections() {
counterpartyB0 := types.NewCounterparty(clientB, connB0.ID, suite.chainB.GetPrefix()) // connection B0
counterpartyB1 := types.NewCounterparty(clientB, connB1.ID, suite.chainB.GetPrefix()) // connection B1
conn1 := types.NewConnectionEnd(types.OPEN, connA0.ID, clientA, counterpartyB0, types.GetCompatibleEncodedVersions()) // A0 - B0
conn2 := types.NewConnectionEnd(types.OPEN, connA1.ID, clientA, counterpartyB1, types.GetCompatibleEncodedVersions()) // A1 - B1
expConnections := []types.ConnectionEnd{conn1, conn2}
conn1 := types.NewConnectionEnd(types.OPEN, clientA, counterpartyB0, types.GetCompatibleEncodedVersions()) // A0 - B0
conn2 := types.NewConnectionEnd(types.OPEN, clientA, counterpartyB1, types.GetCompatibleEncodedVersions()) // A1 - B1
iconn1 := types.NewIdentifiedConnection(connA0.ID, conn1)
iconn2 := types.NewIdentifiedConnection(connA1.ID, conn2)
expConnections := []types.IdentifiedConnection{iconn1, iconn2}
connections := suite.chainA.App.IBCKeeper.ConnectionKeeper.GetAllConnections(suite.chainA.GetContext())
suite.Require().Len(connections, len(expConnections))

View File

@ -17,14 +17,15 @@ func TestDecodeStore(t *testing.T) {
app := simapp.Setup(false)
cdc := app.AppCodec()
connectionID := "connectionidone"
connection := types.ConnectionEnd{
ID: "connectionidone",
ClientID: "clientidone",
Versions: []string{"1.0"},
}
paths := types.ClientPaths{
Paths: []string{connection.ID},
Paths: []string{connectionID},
}
kvPairs := tmkv.Pairs{
@ -33,7 +34,7 @@ func TestDecodeStore(t *testing.T) {
Value: cdc.MustMarshalBinaryBare(&paths),
},
tmkv.Pair{
Key: host.KeyConnection(connection.ID),
Key: host.KeyConnection(connectionID),
Value: cdc.MustMarshalBinaryBare(&connection),
},
tmkv.Pair{

View File

@ -11,9 +11,8 @@ import (
var _ exported.ConnectionI = (*ConnectionEnd)(nil)
// NewConnectionEnd creates a new ConnectionEnd instance.
func NewConnectionEnd(state State, connectionID, clientID string, counterparty Counterparty, versions []string) ConnectionEnd {
func NewConnectionEnd(state State, clientID string, counterparty Counterparty, versions []string) ConnectionEnd {
return ConnectionEnd{
ID: connectionID,
ClientID: clientID,
Versions: versions,
State: state,
@ -26,11 +25,6 @@ func (c ConnectionEnd) GetState() int32 {
return int32(c.State)
}
// GetID implements the Connection interface
func (c ConnectionEnd) GetID() string {
return c.ID
}
// GetClientID implements the Connection interface
func (c ConnectionEnd) GetClientID() string {
return c.ClientID
@ -50,9 +44,6 @@ func (c ConnectionEnd) GetVersions() []string {
// NOTE: the protocol supports that the connection and client IDs match the
// counterparty's.
func (c ConnectionEnd) ValidateBasic() error {
if err := host.ConnectionIdentifierValidator(c.ID); err != nil {
return sdkerrors.Wrap(err, "invalid connection ID")
}
if err := host.ClientIdentifierValidator(c.ClientID); err != nil {
return sdkerrors.Wrap(err, "invalid client ID")
}
@ -106,3 +97,23 @@ func (c Counterparty) ValidateBasic() error {
}
return nil
}
// NewIdentifiedConnection creates a new IdentifiedConnection instance
func NewIdentifiedConnection(connectionID string, conn ConnectionEnd) IdentifiedConnection {
return IdentifiedConnection{
ID: connectionID,
ClientID: conn.ClientID,
Versions: conn.Versions,
State: conn.State,
Counterparty: conn.Counterparty,
}
}
// ValidateBasic performs a basic validation of the connection identifier and connection fields.
func (ic IdentifiedConnection) ValidateBasic() error {
if err := host.ConnectionIdentifierValidator(ic.ID); err != nil {
return sdkerrors.Wrap(err, "invalid connection ID")
}
connection := NewConnectionEnd(ic.State, ic.ClientID, ic.Counterparty, ic.Versions)
return connection.ValidateBasic()
}

View File

@ -418,8 +418,6 @@ func (m *MsgConnectionOpenConfirm) GetSigner() github_com_cosmos_cosmos_sdk_type
// separate one. NOTE: there must only be 2 defined ConnectionEnds to establish
// a connection between two chains.
type ConnectionEnd struct {
// connection identifier.
ID string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" yaml:"id"`
// client associated with this connection.
ClientID string `protobuf:"bytes,2,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty" yaml:"client_id"`
// IBC version which can be utilised to determine encodings or protocols for
@ -464,6 +462,55 @@ func (m *ConnectionEnd) XXX_DiscardUnknown() {
var xxx_messageInfo_ConnectionEnd proto.InternalMessageInfo
// IdentifiedConnection defines a connection with additional connection
// identifier field.
type IdentifiedConnection struct {
// connection identifier.
ID string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" yaml:"id"`
// client associated with this connection.
ClientID string `protobuf:"bytes,2,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty" yaml:"client_id"`
// IBC version which can be utilised to determine encodings or protocols for
// channels or packets utilising this connection
Versions []string `protobuf:"bytes,3,rep,name=versions,proto3" json:"versions,omitempty"`
// current state of the connection end.
State State `protobuf:"varint,4,opt,name=state,proto3,enum=ibc.connection.State" json:"state,omitempty"`
// counterparty chain associated with this connection.
Counterparty Counterparty `protobuf:"bytes,5,opt,name=counterparty,proto3" json:"counterparty"`
}
func (m *IdentifiedConnection) Reset() { *m = IdentifiedConnection{} }
func (m *IdentifiedConnection) String() string { return proto.CompactTextString(m) }
func (*IdentifiedConnection) ProtoMessage() {}
func (*IdentifiedConnection) Descriptor() ([]byte, []int) {
return fileDescriptor_3bf62bacf5a27ee9, []int{5}
}
func (m *IdentifiedConnection) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
}
func (m *IdentifiedConnection) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
if deterministic {
return xxx_messageInfo_IdentifiedConnection.Marshal(b, m, deterministic)
} else {
b = b[:cap(b)]
n, err := m.MarshalToSizedBuffer(b)
if err != nil {
return nil, err
}
return b[:n], nil
}
}
func (m *IdentifiedConnection) XXX_Merge(src proto.Message) {
xxx_messageInfo_IdentifiedConnection.Merge(m, src)
}
func (m *IdentifiedConnection) XXX_Size() int {
return m.Size()
}
func (m *IdentifiedConnection) XXX_DiscardUnknown() {
xxx_messageInfo_IdentifiedConnection.DiscardUnknown(m)
}
var xxx_messageInfo_IdentifiedConnection proto.InternalMessageInfo
// Counterparty defines the counterparty chain associated with a connection end.
type Counterparty struct {
// identifies the client on the counterparty chain associated with a given
@ -480,7 +527,7 @@ func (m *Counterparty) Reset() { *m = Counterparty{} }
func (m *Counterparty) String() string { return proto.CompactTextString(m) }
func (*Counterparty) ProtoMessage() {}
func (*Counterparty) Descriptor() ([]byte, []int) {
return fileDescriptor_3bf62bacf5a27ee9, []int{5}
return fileDescriptor_3bf62bacf5a27ee9, []int{6}
}
func (m *Counterparty) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -519,7 +566,7 @@ func (m *ClientPaths) Reset() { *m = ClientPaths{} }
func (m *ClientPaths) String() string { return proto.CompactTextString(m) }
func (*ClientPaths) ProtoMessage() {}
func (*ClientPaths) Descriptor() ([]byte, []int) {
return fileDescriptor_3bf62bacf5a27ee9, []int{6}
return fileDescriptor_3bf62bacf5a27ee9, []int{7}
}
func (m *ClientPaths) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -567,7 +614,7 @@ func (m *ConnectionPaths) Reset() { *m = ConnectionPaths{} }
func (m *ConnectionPaths) String() string { return proto.CompactTextString(m) }
func (*ConnectionPaths) ProtoMessage() {}
func (*ConnectionPaths) Descriptor() ([]byte, []int) {
return fileDescriptor_3bf62bacf5a27ee9, []int{7}
return fileDescriptor_3bf62bacf5a27ee9, []int{8}
}
func (m *ConnectionPaths) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -623,7 +670,7 @@ func (m *Version) Reset() { *m = Version{} }
func (m *Version) String() string { return proto.CompactTextString(m) }
func (*Version) ProtoMessage() {}
func (*Version) Descriptor() ([]byte, []int) {
return fileDescriptor_3bf62bacf5a27ee9, []int{8}
return fileDescriptor_3bf62bacf5a27ee9, []int{9}
}
func (m *Version) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -659,6 +706,7 @@ func init() {
proto.RegisterType((*MsgConnectionOpenAck)(nil), "ibc.connection.MsgConnectionOpenAck")
proto.RegisterType((*MsgConnectionOpenConfirm)(nil), "ibc.connection.MsgConnectionOpenConfirm")
proto.RegisterType((*ConnectionEnd)(nil), "ibc.connection.ConnectionEnd")
proto.RegisterType((*IdentifiedConnection)(nil), "ibc.connection.IdentifiedConnection")
proto.RegisterType((*Counterparty)(nil), "ibc.connection.Counterparty")
proto.RegisterType((*ClientPaths)(nil), "ibc.connection.ClientPaths")
proto.RegisterType((*ConnectionPaths)(nil), "ibc.connection.ConnectionPaths")
@ -668,65 +716,65 @@ func init() {
func init() { proto.RegisterFile("ibc/connection/connection.proto", fileDescriptor_3bf62bacf5a27ee9) }
var fileDescriptor_3bf62bacf5a27ee9 = []byte{
// 914 bytes of a gzipped FileDescriptorProto
// 926 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x56, 0xcd, 0x6e, 0xdb, 0x46,
0x10, 0x16, 0x29, 0xea, 0x6f, 0x2c, 0xdb, 0x0a, 0x23, 0x37, 0x04, 0x1b, 0x90, 0x2c, 0x73, 0x11,
0x10, 0x16, 0x29, 0xea, 0x6f, 0x2c, 0xdb, 0x0a, 0x23, 0x37, 0x84, 0x1a, 0x90, 0x2c, 0x73, 0x11,
0x5a, 0x58, 0x6a, 0x92, 0x22, 0x07, 0x03, 0x3d, 0x48, 0xb2, 0x8c, 0x12, 0xad, 0x1d, 0x81, 0x96,
0x0b, 0x34, 0x17, 0x41, 0x26, 0x57, 0xf2, 0x42, 0x16, 0x29, 0x90, 0xeb, 0x22, 0x7e, 0x83, 0xc0,
0xa7, 0x5e, 0x7b, 0x30, 0x50, 0x20, 0x2f, 0xd1, 0x27, 0x28, 0x72, 0xcc, 0xb1, 0x27, 0xa2, 0x90,
0xdf, 0x40, 0xe8, 0xa9, 0xa7, 0x82, 0xbb, 0x14, 0x49, 0x59, 0x46, 0x8b, 0x54, 0x3e, 0x14, 0x39,
0x71, 0x7e, 0xbe, 0x9d, 0xdd, 0x99, 0x6f, 0x38, 0xbb, 0xa0, 0xe2, 0x53, 0xab, 0x61, 0xb9, 0x8e,
0x83, 0x2c, 0x82, 0x5d, 0x27, 0x25, 0xd6, 0xa7, 0x9e, 0x4b, 0x5c, 0x71, 0x0b, 0x9f, 0x5a, 0xf5,
0xc4, 0x2a, 0x57, 0x47, 0xee, 0xc8, 0xa5, 0xae, 0x46, 0x28, 0x31, 0x94, 0x1c, 0x85, 0x99, 0x4c,
0x30, 0x99, 0x20, 0x87, 0xa4, 0x44, 0x06, 0xd0, 0x7f, 0xe5, 0x61, 0xe7, 0xd0, 0x1f, 0xb5, 0xe3,
0x40, 0x2f, 0xa7, 0xc8, 0x31, 0x1c, 0x4c, 0xc4, 0xaf, 0xa1, 0x64, 0x9d, 0x63, 0xe4, 0x90, 0x3e,
0xb6, 0x25, 0x4e, 0xe3, 0x6a, 0xa5, 0x96, 0x36, 0x0b, 0xd4, 0x62, 0x9b, 0x1a, 0x8d, 0xfd, 0x79,
0xa0, 0x56, 0x2e, 0x07, 0x93, 0xf3, 0x3d, 0x3d, 0x86, 0xe9, 0x66, 0x91, 0xc9, 0x86, 0x2d, 0x1e,
0xc2, 0x66, 0x72, 0xba, 0x30, 0x04, 0x4f, 0x43, 0xd4, 0x66, 0x81, 0x5a, 0x4e, 0x76, 0xa3, 0x61,
0xaa, 0x51, 0x98, 0x34, 0x5c, 0x37, 0xcb, 0x89, 0x6e, 0xd8, 0xe2, 0x01, 0x94, 0x2d, 0xf7, 0xc2,
0x21, 0xc8, 0x9b, 0x0e, 0x3c, 0x72, 0x29, 0x65, 0x35, 0xae, 0xb6, 0xf1, 0xec, 0x71, 0x7d, 0xb9,
0x0a, 0xf5, 0x76, 0x0a, 0xd3, 0x12, 0xde, 0x05, 0x6a, 0xc6, 0x5c, 0x5a, 0x27, 0x1a, 0x90, 0xf7,
0xf1, 0xc8, 0x41, 0x9e, 0x24, 0x68, 0x5c, 0xad, 0xdc, 0x7a, 0xfa, 0x57, 0xa0, 0xee, 0x8e, 0x30,
0x39, 0xbb, 0x38, 0xad, 0x5b, 0xee, 0xa4, 0x61, 0xb9, 0xfe, 0xc4, 0xf5, 0xa3, 0xcf, 0xae, 0x6f,
0x8f, 0x1b, 0xe4, 0x72, 0x8a, 0xfc, 0x7a, 0xd3, 0xb2, 0x9a, 0xb6, 0xed, 0x21, 0xdf, 0x37, 0xa3,
0x00, 0xfa, 0x9f, 0x02, 0x54, 0x57, 0x4a, 0xd7, 0xf3, 0x2e, 0x3f, 0xd2, 0xca, 0x9d, 0xc0, 0x4e,
0x5a, 0xef, 0xff, 0x88, 0x3c, 0x1f, 0xbb, 0x8e, 0x2f, 0x09, 0x5a, 0x36, 0xcc, 0x70, 0x1e, 0xa8,
0x8f, 0x17, 0xc7, 0xb9, 0x03, 0xa6, 0x9b, 0xd5, 0xb4, 0xfd, 0xfb, 0xc8, 0x2c, 0x7e, 0x05, 0x30,
0xf5, 0x5c, 0x77, 0xd8, 0xc7, 0x0e, 0x26, 0x52, 0x8e, 0x92, 0xb2, 0x33, 0x0f, 0xd4, 0x07, 0x2c,
0x56, 0xe2, 0xd3, 0xcd, 0x12, 0x55, 0x68, 0x73, 0x7e, 0x06, 0x65, 0xe6, 0x39, 0x43, 0x78, 0x74,
0x46, 0xa4, 0xbc, 0xc6, 0xd5, 0x04, 0x73, 0x83, 0xda, 0xbe, 0xa1, 0x26, 0xb1, 0x0d, 0xdb, 0x0c,
0x62, 0xb9, 0x8e, 0x8f, 0x1c, 0xff, 0xc2, 0x97, 0x0a, 0x34, 0xba, 0x3c, 0x0f, 0xd4, 0x4f, 0xd2,
0xd1, 0x63, 0x80, 0x6e, 0x6e, 0x51, 0x4b, 0x7b, 0x61, 0x10, 0x0f, 0xa0, 0x12, 0x7b, 0x17, 0x7b,
0x15, 0xc3, 0xbd, 0x5a, 0x9f, 0xce, 0x03, 0xf5, 0x51, 0x5c, 0xfe, 0x25, 0x84, 0x6e, 0x6e, 0xc7,
0xa6, 0xe8, 0x30, 0x49, 0xdb, 0x95, 0xd6, 0x6d, 0xbb, 0xdf, 0xb2, 0x77, 0xb4, 0x5d, 0xd3, 0x1a,
0xaf, 0xf6, 0x0d, 0xb7, 0x56, 0xdf, 0x48, 0x50, 0x88, 0xb8, 0x63, 0x0d, 0x68, 0x2e, 0x54, 0xf1,
0x29, 0x30, 0x26, 0xfa, 0xc4, 0x63, 0xed, 0x54, 0x6e, 0x55, 0x93, 0x9e, 0x8e, 0x5d, 0xba, 0x59,
0xa4, 0x72, 0xf8, 0x4b, 0xec, 0xdd, 0xe2, 0x4b, 0xa0, 0x35, 0x7c, 0x34, 0x0f, 0xd4, 0x87, 0xe9,
0x55, 0x8b, 0xfa, 0xfd, 0x1b, 0x91, 0xb9, 0x7b, 0x21, 0x32, 0xbf, 0x16, 0x91, 0x85, 0x75, 0x89,
0x7c, 0xcb, 0x83, 0xb4, 0x42, 0x64, 0xdb, 0x75, 0x86, 0xd8, 0x9b, 0xdc, 0x37, 0x99, 0x31, 0x65,
0x03, 0x6b, 0x4c, 0xe9, 0xbc, 0x83, 0xb2, 0x81, 0x35, 0x5e, 0x50, 0x16, 0xb6, 0xd3, 0x6d, 0xca,
0xb2, 0x1f, 0x40, 0xd9, 0x3d, 0x4e, 0xd9, 0x2b, 0x1e, 0x36, 0x93, 0x84, 0x3b, 0x8e, 0x2d, 0x3e,
0x01, 0x3e, 0xae, 0xc7, 0xc3, 0x59, 0xa0, 0xf2, 0xb4, 0x0a, 0x25, 0x76, 0xa8, 0x30, 0x75, 0x1e,
0xdb, 0xcb, 0x33, 0x98, 0xff, 0xe0, 0x19, 0x2c, 0x43, 0x31, 0x9e, 0x6f, 0xd9, 0x70, 0xbe, 0x99,
0xb1, 0x2e, 0x7e, 0x01, 0x39, 0x9f, 0x0c, 0x08, 0xa2, 0xb9, 0x6d, 0x3d, 0xdb, 0xb9, 0x3d, 0x49,
0x8f, 0x43, 0xa7, 0xc9, 0x30, 0x2b, 0xd3, 0x37, 0xf7, 0xdf, 0xa6, 0xef, 0x9e, 0xf0, 0xe6, 0x17,
0x35, 0xa3, 0x07, 0x1c, 0x94, 0xd3, 0xd0, 0xff, 0xd9, 0x55, 0xb3, 0x07, 0xf9, 0xa9, 0x87, 0x86,
0xf8, 0xf5, 0xad, 0x4b, 0x26, 0x7e, 0x73, 0x1c, 0x22, 0x6f, 0x7c, 0x8e, 0xba, 0x14, 0x13, 0xa5,
0x19, 0xad, 0x88, 0x12, 0x7c, 0x02, 0x1b, 0xec, 0xe8, 0xdd, 0x01, 0x39, 0xf3, 0xc5, 0x2a, 0xe4,
0xa6, 0xa1, 0x20, 0x71, 0x94, 0x03, 0xa6, 0xe8, 0x43, 0xd8, 0x4e, 0x0e, 0xc7, 0x80, 0x6b, 0xd6,
0x21, 0xde, 0x87, 0x4f, 0xef, 0xf3, 0x2d, 0x14, 0xa2, 0x6b, 0x4a, 0x54, 0x00, 0xb0, 0x8d, 0x1c,
0x82, 0x87, 0x18, 0x79, 0x6c, 0x03, 0x33, 0x65, 0x09, 0xfb, 0x65, 0x88, 0x06, 0xe4, 0xc2, 0x43,
0x8b, 0x18, 0xb1, 0xce, 0x32, 0xfb, 0xfc, 0x67, 0x0e, 0x72, 0xb4, 0x33, 0xc4, 0x17, 0xa0, 0x1e,
0xf7, 0x9a, 0xbd, 0x4e, 0xff, 0xe4, 0xc8, 0x38, 0x32, 0x7a, 0x46, 0xf3, 0x3b, 0xe3, 0x55, 0x67,
0xbf, 0x7f, 0x72, 0x74, 0xdc, 0xed, 0xb4, 0x8d, 0x03, 0xa3, 0xb3, 0x5f, 0xc9, 0xc8, 0x0f, 0xae,
0xae, 0xb5, 0xcd, 0x25, 0x80, 0x28, 0x01, 0xb0, 0x75, 0xa1, 0xb1, 0xc2, 0xc9, 0xc5, 0xab, 0x6b,
0x4d, 0x08, 0x65, 0x51, 0x81, 0x4d, 0xe6, 0xe9, 0x99, 0x3f, 0xbc, 0xec, 0x76, 0x8e, 0x2a, 0xbc,
0xbc, 0x71, 0x75, 0xad, 0x15, 0x22, 0x35, 0x59, 0x49, 0x9d, 0x59, 0xb6, 0x32, 0x94, 0x65, 0xe1,
0xcd, 0x5b, 0x25, 0xd3, 0xea, 0xbe, 0x9b, 0x29, 0xdc, 0xfb, 0x99, 0xc2, 0xfd, 0x31, 0x53, 0xb8,
0x9f, 0x6e, 0x94, 0xcc, 0xfb, 0x1b, 0x25, 0xf3, 0xfb, 0x8d, 0x92, 0x79, 0xf5, 0xe2, 0x1f, 0x7f,
0xda, 0xd7, 0x8d, 0xf0, 0x79, 0xf9, 0xe5, 0xf3, 0xdd, 0xd4, 0x43, 0x95, 0xfe, 0xc8, 0xa7, 0x79,
0xfa, 0xba, 0x7c, 0xfe, 0x77, 0x00, 0x00, 0x00, 0xff, 0xff, 0xaf, 0x4e, 0x8d, 0xdb, 0xc7, 0x0a,
0x00, 0x00,
0xa7, 0xf6, 0xd8, 0x83, 0x81, 0x02, 0x79, 0x89, 0x3e, 0x41, 0x91, 0x63, 0x8e, 0x3d, 0x11, 0x85,
0x8c, 0xbe, 0x80, 0xd0, 0x53, 0x4f, 0x05, 0x77, 0xf9, 0x27, 0xdb, 0x68, 0x91, 0xca, 0x87, 0xc2,
0x27, 0xcd, 0xcf, 0xb7, 0xb3, 0x33, 0xf3, 0x8d, 0x86, 0x0b, 0x0a, 0x3e, 0x36, 0x9b, 0xa6, 0x63,
0xdb, 0xc8, 0x24, 0xd8, 0xb1, 0x53, 0x62, 0x63, 0xe6, 0x3a, 0xc4, 0x11, 0x37, 0xf0, 0xb1, 0xd9,
0x48, 0xac, 0xb5, 0xea, 0xd8, 0x19, 0x3b, 0xd4, 0xd5, 0x0c, 0x24, 0x86, 0xaa, 0x85, 0x61, 0xa6,
0x53, 0x4c, 0xa6, 0xc8, 0x26, 0x29, 0x91, 0x01, 0xb4, 0x5f, 0x78, 0xd8, 0xda, 0xf7, 0xc6, 0x9d,
0x38, 0xd0, 0xcb, 0x19, 0xb2, 0x75, 0x1b, 0x13, 0xf1, 0x4b, 0x28, 0x99, 0xa7, 0x18, 0xd9, 0x64,
0x80, 0x2d, 0x89, 0x53, 0xb9, 0x7a, 0xa9, 0xad, 0xce, 0x7d, 0xa5, 0xd8, 0xa1, 0x46, 0x7d, 0x77,
0xe1, 0x2b, 0x95, 0xf3, 0xe1, 0xf4, 0x74, 0x47, 0x8b, 0x61, 0x9a, 0x51, 0x64, 0xb2, 0x6e, 0x89,
0xfb, 0xb0, 0x9e, 0x64, 0x17, 0x84, 0xe0, 0x69, 0x88, 0xfa, 0xdc, 0x57, 0xca, 0xc9, 0x6d, 0x34,
0x4c, 0x35, 0x0c, 0x93, 0x86, 0x6b, 0x46, 0x39, 0xd1, 0x75, 0x4b, 0xdc, 0x83, 0xb2, 0xe9, 0x9c,
0xd9, 0x04, 0xb9, 0xb3, 0xa1, 0x4b, 0xce, 0xa5, 0xac, 0xca, 0xd5, 0xd7, 0x9e, 0x3d, 0x6e, 0x2c,
0x77, 0xa1, 0xd1, 0x49, 0x61, 0xda, 0xc2, 0x3b, 0x5f, 0xc9, 0x18, 0x4b, 0xe7, 0x44, 0x1d, 0xf2,
0x1e, 0x1e, 0xdb, 0xc8, 0x95, 0x04, 0x95, 0xab, 0x97, 0xdb, 0x4f, 0xff, 0xf2, 0x95, 0xed, 0x31,
0x26, 0x27, 0x67, 0xc7, 0x0d, 0xd3, 0x99, 0x36, 0x4d, 0xc7, 0x9b, 0x3a, 0x5e, 0xf8, 0xb3, 0xed,
0x59, 0x93, 0x26, 0x39, 0x9f, 0x21, 0xaf, 0xd1, 0x32, 0xcd, 0x96, 0x65, 0xb9, 0xc8, 0xf3, 0x8c,
0x30, 0x80, 0xf6, 0xa7, 0x00, 0xd5, 0x1b, 0xad, 0xeb, 0xbb, 0xe7, 0xf7, 0xb4, 0x73, 0x47, 0xb0,
0x95, 0xd6, 0x07, 0xdf, 0x23, 0xd7, 0xc3, 0x8e, 0xed, 0x49, 0x82, 0x9a, 0x0d, 0x2a, 0x5c, 0xf8,
0xca, 0xe3, 0x28, 0x9d, 0x5b, 0x60, 0x9a, 0x51, 0x4d, 0xdb, 0xbf, 0x0d, 0xcd, 0xe2, 0x17, 0x00,
0x33, 0xd7, 0x71, 0x46, 0x03, 0x6c, 0x63, 0x22, 0xe5, 0x28, 0x29, 0x5b, 0x0b, 0x5f, 0x79, 0xc0,
0x62, 0x25, 0x3e, 0xcd, 0x28, 0x51, 0x85, 0x0e, 0xe7, 0x27, 0x50, 0x66, 0x9e, 0x13, 0x84, 0xc7,
0x27, 0x44, 0xca, 0xab, 0x5c, 0x5d, 0x30, 0xd6, 0xa8, 0xed, 0x2b, 0x6a, 0x12, 0x3b, 0xb0, 0xc9,
0x20, 0xa6, 0x63, 0x7b, 0xc8, 0xf6, 0xce, 0x3c, 0xa9, 0x40, 0xa3, 0xd7, 0x16, 0xbe, 0xf2, 0x51,
0x3a, 0x7a, 0x0c, 0xd0, 0x8c, 0x0d, 0x6a, 0xe9, 0x44, 0x06, 0x71, 0x0f, 0x2a, 0xb1, 0x37, 0xba,
0xab, 0x18, 0xdc, 0xd5, 0xfe, 0x78, 0xe1, 0x2b, 0x8f, 0xe2, 0xf6, 0x2f, 0x21, 0x34, 0x63, 0x33,
0x36, 0x85, 0xc9, 0x24, 0x63, 0x57, 0x5a, 0x75, 0xec, 0x7e, 0xcd, 0xde, 0x32, 0x76, 0x2d, 0x73,
0x72, 0x73, 0x6e, 0xb8, 0x95, 0xe6, 0x46, 0x82, 0x42, 0xc8, 0x1d, 0x1b, 0x40, 0x23, 0x52, 0xc5,
0xa7, 0xc0, 0x98, 0x18, 0x10, 0x97, 0x8d, 0x53, 0xb9, 0x5d, 0x4d, 0x66, 0x3a, 0x76, 0x69, 0x46,
0x91, 0xca, 0xc1, 0x5f, 0x62, 0xe7, 0x1a, 0x5f, 0x02, 0xed, 0xe1, 0xa3, 0x85, 0xaf, 0x3c, 0x4c,
0x9f, 0x8a, 0xfa, 0xf7, 0x6f, 0x44, 0xe6, 0xee, 0x84, 0xc8, 0xfc, 0x4a, 0x44, 0x16, 0x56, 0x25,
0xf2, 0x2d, 0x0f, 0xd2, 0x0d, 0x22, 0x3b, 0x8e, 0x3d, 0xc2, 0xee, 0xf4, 0xae, 0xc9, 0x8c, 0x29,
0x1b, 0x9a, 0x13, 0x4a, 0xe7, 0x2d, 0x94, 0x0d, 0xcd, 0x49, 0x44, 0x59, 0x30, 0x4e, 0xd7, 0x29,
0xcb, 0x7e, 0x00, 0x65, 0x77, 0xb8, 0x65, 0xff, 0xe0, 0x60, 0x3d, 0x29, 0xb8, 0x6b, 0x5b, 0xcb,
0xeb, 0x95, 0xff, 0xe0, 0xf5, 0x5a, 0x83, 0x62, 0xbc, 0xba, 0xb2, 0xc1, 0xea, 0x32, 0x62, 0x5d,
0xfc, 0x0c, 0x72, 0x1e, 0x19, 0x12, 0x44, 0xd3, 0xde, 0x78, 0xb6, 0x75, 0x7d, 0x49, 0x1e, 0x06,
0x4e, 0x83, 0x61, 0x6e, 0x2c, 0xd6, 0xdc, 0x7f, 0x5b, 0xac, 0x3b, 0xc2, 0x9b, 0x9f, 0x95, 0x8c,
0xf6, 0x23, 0x0f, 0x55, 0xdd, 0x42, 0x36, 0xc1, 0x23, 0x8c, 0xac, 0xa4, 0x62, 0xf1, 0x09, 0xf0,
0x31, 0xfd, 0x0f, 0xe7, 0xbe, 0xc2, 0xd3, 0x0a, 0x4b, 0xac, 0xc2, 0xa0, 0x34, 0x1e, 0xdf, 0xd7,
0x9e, 0xf8, 0x1c, 0x94, 0xd3, 0xd0, 0xff, 0xd9, 0x97, 0x75, 0x07, 0xf2, 0x33, 0x17, 0x8d, 0xf0,
0xeb, 0x6b, 0xdf, 0xd4, 0xf8, 0x89, 0xb5, 0x8f, 0xdc, 0xc9, 0x29, 0xea, 0x51, 0x4c, 0x58, 0x66,
0x78, 0x22, 0x2c, 0xf0, 0x09, 0xac, 0xb1, 0xd4, 0x7b, 0x43, 0x72, 0xe2, 0x89, 0x55, 0xc8, 0xcd,
0x02, 0x41, 0xe2, 0x28, 0x07, 0x4c, 0xd1, 0x46, 0xb0, 0x99, 0x24, 0xc7, 0x80, 0x2b, 0xf6, 0x21,
0xbe, 0x87, 0x4f, 0xdf, 0xf3, 0x35, 0x14, 0xc2, 0xaf, 0xb2, 0x28, 0x03, 0xe0, 0x68, 0x16, 0x5d,
0x76, 0x81, 0x91, 0xb2, 0x04, 0xf3, 0x32, 0x42, 0x43, 0x72, 0xe6, 0xa2, 0x28, 0x46, 0xac, 0xb3,
0xca, 0x3e, 0xfd, 0x89, 0x83, 0x1c, 0x9d, 0x0c, 0xf1, 0x05, 0x28, 0x87, 0xfd, 0x56, 0xbf, 0x3b,
0x38, 0x3a, 0xd0, 0x0f, 0xf4, 0xbe, 0xde, 0xfa, 0x46, 0x7f, 0xd5, 0xdd, 0x1d, 0x1c, 0x1d, 0x1c,
0xf6, 0xba, 0x1d, 0x7d, 0x4f, 0xef, 0xee, 0x56, 0x32, 0xb5, 0x07, 0x17, 0x97, 0xea, 0xfa, 0x12,
0x40, 0x94, 0x00, 0xd8, 0xb9, 0xc0, 0x58, 0xe1, 0x6a, 0xc5, 0x8b, 0x4b, 0x55, 0x08, 0x64, 0x51,
0x86, 0x75, 0xe6, 0xe9, 0x1b, 0xdf, 0xbd, 0xec, 0x75, 0x0f, 0x2a, 0x7c, 0x6d, 0xed, 0xe2, 0x52,
0x2d, 0x84, 0x6a, 0x72, 0x92, 0x3a, 0xb3, 0xec, 0x64, 0x20, 0xd7, 0x84, 0x37, 0x6f, 0xe5, 0x4c,
0xbb, 0xf7, 0x6e, 0x2e, 0x73, 0xef, 0xe7, 0x32, 0xf7, 0xfb, 0x5c, 0xe6, 0x7e, 0xb8, 0x92, 0x33,
0xef, 0xaf, 0xe4, 0xcc, 0x6f, 0x57, 0x72, 0xe6, 0xd5, 0x8b, 0x7f, 0xdc, 0x51, 0xaf, 0x9b, 0xc1,
0x6b, 0xfa, 0xf3, 0xe7, 0xdb, 0xa9, 0x77, 0x39, 0xdd, 0x5b, 0xc7, 0x79, 0xfa, 0x98, 0x7e, 0xfe,
0x77, 0x00, 0x00, 0x00, 0xff, 0xff, 0x2c, 0xb0, 0xb2, 0x80, 0xb6, 0x0b, 0x00, 0x00,
}
func (m *MsgConnectionOpenInit) Marshal() (dAtA []byte, err error) {
@ -1003,6 +1051,60 @@ func (m *ConnectionEnd) MarshalTo(dAtA []byte) (int, error) {
}
func (m *ConnectionEnd) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i := len(dAtA)
_ = i
var l int
_ = l
{
size, err := m.Counterparty.MarshalToSizedBuffer(dAtA[:i])
if err != nil {
return 0, err
}
i -= size
i = encodeVarintConnection(dAtA, i, uint64(size))
}
i--
dAtA[i] = 0x2a
if m.State != 0 {
i = encodeVarintConnection(dAtA, i, uint64(m.State))
i--
dAtA[i] = 0x20
}
if len(m.Versions) > 0 {
for iNdEx := len(m.Versions) - 1; iNdEx >= 0; iNdEx-- {
i -= len(m.Versions[iNdEx])
copy(dAtA[i:], m.Versions[iNdEx])
i = encodeVarintConnection(dAtA, i, uint64(len(m.Versions[iNdEx])))
i--
dAtA[i] = 0x1a
}
}
if len(m.ClientID) > 0 {
i -= len(m.ClientID)
copy(dAtA[i:], m.ClientID)
i = encodeVarintConnection(dAtA, i, uint64(len(m.ClientID)))
i--
dAtA[i] = 0x12
}
return len(dAtA) - i, nil
}
func (m *IdentifiedConnection) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
n, err := m.MarshalToSizedBuffer(dAtA[:size])
if err != nil {
return nil, err
}
return dAtA[:n], nil
}
func (m *IdentifiedConnection) MarshalTo(dAtA []byte) (int, error) {
size := m.Size()
return m.MarshalToSizedBuffer(dAtA[:size])
}
func (m *IdentifiedConnection) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i := len(dAtA)
_ = i
var l int
@ -1342,6 +1444,30 @@ func (m *MsgConnectionOpenConfirm) Size() (n int) {
}
func (m *ConnectionEnd) Size() (n int) {
if m == nil {
return 0
}
var l int
_ = l
l = len(m.ClientID)
if l > 0 {
n += 1 + l + sovConnection(uint64(l))
}
if len(m.Versions) > 0 {
for _, s := range m.Versions {
l = len(s)
n += 1 + l + sovConnection(uint64(l))
}
}
if m.State != 0 {
n += 1 + sovConnection(uint64(m.State))
}
l = m.Counterparty.Size()
n += 1 + l + sovConnection(uint64(l))
return n
}
func (m *IdentifiedConnection) Size() (n int) {
if m == nil {
return 0
}
@ -2411,6 +2537,175 @@ func (m *ConnectionEnd) Unmarshal(dAtA []byte) error {
return fmt.Errorf("proto: ConnectionEnd: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 2:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field ClientID", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowConnection
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
stringLen |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
intStringLen := int(stringLen)
if intStringLen < 0 {
return ErrInvalidLengthConnection
}
postIndex := iNdEx + intStringLen
if postIndex < 0 {
return ErrInvalidLengthConnection
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.ClientID = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
case 3:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Versions", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowConnection
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
stringLen |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
intStringLen := int(stringLen)
if intStringLen < 0 {
return ErrInvalidLengthConnection
}
postIndex := iNdEx + intStringLen
if postIndex < 0 {
return ErrInvalidLengthConnection
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.Versions = append(m.Versions, string(dAtA[iNdEx:postIndex]))
iNdEx = postIndex
case 4:
if wireType != 0 {
return fmt.Errorf("proto: wrong wireType = %d for field State", wireType)
}
m.State = 0
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowConnection
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
m.State |= State(b&0x7F) << shift
if b < 0x80 {
break
}
}
case 5:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Counterparty", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowConnection
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
msglen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
if msglen < 0 {
return ErrInvalidLengthConnection
}
postIndex := iNdEx + msglen
if postIndex < 0 {
return ErrInvalidLengthConnection
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
if err := m.Counterparty.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
}
iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipConnection(dAtA[iNdEx:])
if err != nil {
return err
}
if skippy < 0 {
return ErrInvalidLengthConnection
}
if (iNdEx + skippy) < 0 {
return ErrInvalidLengthConnection
}
if (iNdEx + skippy) > l {
return io.ErrUnexpectedEOF
}
iNdEx += skippy
}
}
if iNdEx > l {
return io.ErrUnexpectedEOF
}
return nil
}
func (m *IdentifiedConnection) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
for iNdEx < l {
preIndex := iNdEx
var wire uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowConnection
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
wire |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
fieldNum := int32(wire >> 3)
wireType := int(wire & 0x7)
if wireType == 4 {
return fmt.Errorf("proto: IdentifiedConnection: wiretype end group for non-group")
}
if fieldNum <= 0 {
return fmt.Errorf("proto: IdentifiedConnection: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field ID", wireType)

View File

@ -25,32 +25,27 @@ func TestConnectionValidateBasic(t *testing.T) {
}{
{
"valid connection",
types.ConnectionEnd{connectionID, clientID, []string{ibctesting.ConnectionVersion}, types.INIT, types.Counterparty{clientID2, connectionID2, commitmenttypes.NewMerklePrefix([]byte("prefix"))}},
types.ConnectionEnd{clientID, []string{ibctesting.ConnectionVersion}, types.INIT, types.Counterparty{clientID2, connectionID2, commitmenttypes.NewMerklePrefix([]byte("prefix"))}},
true,
},
{
"invalid connection id",
types.ConnectionEnd{"(connectionIDONE)", clientID, []string{ibctesting.ConnectionVersion}, types.INIT, types.Counterparty{clientID2, connectionID2, commitmenttypes.NewMerklePrefix([]byte("prefix"))}},
false,
},
{
"invalid client id",
types.ConnectionEnd{connectionID, "(clientID1)", []string{ibctesting.ConnectionVersion}, types.INIT, types.Counterparty{clientID2, connectionID2, commitmenttypes.NewMerklePrefix([]byte("prefix"))}},
types.ConnectionEnd{"(clientID1)", []string{ibctesting.ConnectionVersion}, types.INIT, types.Counterparty{clientID2, connectionID2, commitmenttypes.NewMerklePrefix([]byte("prefix"))}},
false,
},
{
"empty versions",
types.ConnectionEnd{connectionID, clientID, nil, types.INIT, types.Counterparty{clientID2, connectionID2, commitmenttypes.NewMerklePrefix([]byte("prefix"))}},
types.ConnectionEnd{clientID, nil, types.INIT, types.Counterparty{clientID2, connectionID2, commitmenttypes.NewMerklePrefix([]byte("prefix"))}},
false,
},
{
"invalid version",
types.ConnectionEnd{connectionID, clientID, []string{"1.0.0"}, types.INIT, types.Counterparty{clientID2, connectionID2, commitmenttypes.NewMerklePrefix([]byte("prefix"))}},
types.ConnectionEnd{clientID, []string{"1.0.0"}, types.INIT, types.Counterparty{clientID2, connectionID2, commitmenttypes.NewMerklePrefix([]byte("prefix"))}},
false,
},
{
"invalid counterparty",
types.ConnectionEnd{connectionID, clientID, []string{ibctesting.ConnectionVersion}, types.INIT, types.Counterparty{clientID2, connectionID2, emptyPrefix}},
types.ConnectionEnd{clientID, []string{ibctesting.ConnectionVersion}, types.INIT, types.Counterparty{clientID2, connectionID2, emptyPrefix}},
false,
},
}
@ -90,3 +85,33 @@ func TestCounterpartyValidateBasic(t *testing.T) {
}
}
}
func TestIdentifiedConnectionValidateBasic(t *testing.T) {
testCases := []struct {
name string
connection types.IdentifiedConnection
expPass bool
}{
{
"valid connection",
types.NewIdentifiedConnection(clientID, types.ConnectionEnd{clientID, []string{ibctesting.ConnectionVersion}, types.INIT, types.Counterparty{clientID2, connectionID2, commitmenttypes.NewMerklePrefix([]byte("prefix"))}}),
true,
},
{
"invalid connection id",
types.NewIdentifiedConnection("(connectionIDONE)", types.ConnectionEnd{clientID, []string{ibctesting.ConnectionVersion}, types.INIT, types.Counterparty{clientID2, connectionID2, commitmenttypes.NewMerklePrefix([]byte("prefix"))}}),
false,
},
}
for i, tc := range testCases {
tc := tc
err := tc.connection.ValidateBasic()
if tc.expPass {
require.NoError(t, err, "valid test case %d failed: %s", i, tc.name)
} else {
require.Error(t, err, "invalid test case %d passed: %s", i, tc.name)
}
}
}

View File

@ -16,13 +16,13 @@ func NewConnectionPaths(id string, paths []string) ConnectionPaths {
// GenesisState defines the ibc connection submodule's genesis state.
type GenesisState struct {
Connections []ConnectionEnd `json:"connections" yaml:"connections"`
ClientConnectionPaths []ConnectionPaths `json:"client_connection_paths" yaml:"client_connection_paths"`
Connections []IdentifiedConnection `json:"connections" yaml:"connections"`
ClientConnectionPaths []ConnectionPaths `json:"client_connection_paths" yaml:"client_connection_paths"`
}
// NewGenesisState creates a GenesisState instance.
func NewGenesisState(
connections []ConnectionEnd, connPaths []ConnectionPaths,
connections []IdentifiedConnection, connPaths []ConnectionPaths,
) GenesisState {
return GenesisState{
Connections: connections,
@ -33,7 +33,7 @@ func NewGenesisState(
// DefaultGenesisState returns the ibc connection submodule's default genesis state.
func DefaultGenesisState() GenesisState {
return GenesisState{
Connections: []ConnectionEnd{},
Connections: []IdentifiedConnection{},
ClientConnectionPaths: []ConnectionPaths{},
}
}

View File

@ -26,8 +26,8 @@ func TestValidateGenesis(t *testing.T) {
{
name: "valid genesis",
genState: types.NewGenesisState(
[]types.ConnectionEnd{
types.NewConnectionEnd(types.INIT, connectionID, clientID, types.Counterparty{clientID2, connectionID2, commitmenttypes.NewMerklePrefix([]byte("prefix"))}, []string{ibctesting.ConnectionVersion}),
[]types.IdentifiedConnection{
types.NewIdentifiedConnection(connectionID, types.NewConnectionEnd(types.INIT, clientID, types.Counterparty{clientID2, connectionID2, commitmenttypes.NewMerklePrefix([]byte("prefix"))}, []string{ibctesting.ConnectionVersion})),
},
[]types.ConnectionPaths{
{clientID, []string{host.ConnectionPath(connectionID)}},
@ -38,8 +38,8 @@ func TestValidateGenesis(t *testing.T) {
{
name: "invalid connection",
genState: types.NewGenesisState(
[]types.ConnectionEnd{
types.NewConnectionEnd(types.INIT, connectionID, "(CLIENTIDONE)", types.Counterparty{clientID, connectionID, commitmenttypes.NewMerklePrefix([]byte("prefix"))}, []string{ibctesting.ConnectionVersion}),
[]types.IdentifiedConnection{
types.NewIdentifiedConnection(connectionID, types.NewConnectionEnd(types.INIT, "(CLIENTIDONE)", types.Counterparty{clientID, connectionID, commitmenttypes.NewMerklePrefix([]byte("prefix"))}, []string{ibctesting.ConnectionVersion})),
},
[]types.ConnectionPaths{
{clientID, []string{host.ConnectionPath(connectionID)}},
@ -50,8 +50,8 @@ func TestValidateGenesis(t *testing.T) {
{
name: "invalid client id",
genState: types.NewGenesisState(
[]types.ConnectionEnd{
types.NewConnectionEnd(types.INIT, connectionID, clientID, types.Counterparty{clientID2, connectionID2, commitmenttypes.NewMerklePrefix([]byte("prefix"))}, []string{ibctesting.ConnectionVersion}),
[]types.IdentifiedConnection{
types.NewIdentifiedConnection(connectionID, types.NewConnectionEnd(types.INIT, clientID, types.Counterparty{clientID2, connectionID2, commitmenttypes.NewMerklePrefix([]byte("prefix"))}, []string{ibctesting.ConnectionVersion})),
},
[]types.ConnectionPaths{
{"(CLIENTIDONE)", []string{host.ConnectionPath(connectionID)}},
@ -62,8 +62,8 @@ func TestValidateGenesis(t *testing.T) {
{
name: "invalid path",
genState: types.NewGenesisState(
[]types.ConnectionEnd{
types.NewConnectionEnd(types.INIT, connectionID, clientID, types.Counterparty{clientID2, connectionID2, commitmenttypes.NewMerklePrefix([]byte("prefix"))}, []string{ibctesting.ConnectionVersion}),
[]types.IdentifiedConnection{
types.NewIdentifiedConnection(connectionID, types.NewConnectionEnd(types.INIT, clientID, types.Counterparty{clientID2, connectionID2, commitmenttypes.NewMerklePrefix([]byte("prefix"))}, []string{ibctesting.ConnectionVersion})),
},
[]types.ConnectionPaths{
{clientID, []string{connectionID}},

View File

@ -9,9 +9,9 @@ import (
// NewQueryConnectionResponse creates a new QueryConnectionResponse instance
func NewQueryConnectionResponse(
connection ConnectionEnd, proof []byte, height int64,
connectionID string, connection ConnectionEnd, proof []byte, height int64,
) *QueryConnectionResponse {
path := commitmenttypes.NewMerklePath(strings.Split(host.ConnectionPath(connection.ID), "/"))
path := commitmenttypes.NewMerklePath(strings.Split(host.ConnectionPath(connectionID), "/"))
return &QueryConnectionResponse{
Connection: &connection,
Proof: proof,

View File

@ -198,7 +198,7 @@ func (m *QueryConnectionsRequest) GetPagination() *query.PageRequest {
// QueryConnectionsResponse is the response type for the Query/Connections RPC method.
type QueryConnectionsResponse struct {
// list of stored connections of the chain.
Connections []*ConnectionEnd `protobuf:"bytes,1,rep,name=connections,proto3" json:"connections,omitempty"`
Connections []*IdentifiedConnection `protobuf:"bytes,1,rep,name=connections,proto3" json:"connections,omitempty"`
// pagination response
Pagination *query.PageResponse `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"`
// query block height
@ -238,7 +238,7 @@ func (m *QueryConnectionsResponse) XXX_DiscardUnknown() {
var xxx_messageInfo_QueryConnectionsResponse proto.InternalMessageInfo
func (m *QueryConnectionsResponse) GetConnections() []*ConnectionEnd {
func (m *QueryConnectionsResponse) GetConnections() []*IdentifiedConnection {
if m != nil {
return m.Connections
}
@ -392,41 +392,41 @@ func init() {
func init() { proto.RegisterFile("ibc/connection/query.proto", fileDescriptor_5ee60d8b08ce3606) }
var fileDescriptor_5ee60d8b08ce3606 = []byte{
// 529 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x54, 0xcf, 0x6e, 0xd3, 0x4e,
0x10, 0xce, 0x26, 0x6d, 0xd5, 0x4c, 0xfc, 0xfb, 0x51, 0x56, 0x55, 0x31, 0x96, 0xe2, 0x04, 0x1f,
0x20, 0x3d, 0xc4, 0x46, 0xad, 0x40, 0x02, 0x09, 0x21, 0x95, 0x22, 0x11, 0x2e, 0x84, 0x15, 0x27,
0x2e, 0x91, 0xff, 0x2c, 0xb6, 0x05, 0xf5, 0xba, 0xd9, 0x8d, 0x44, 0xdf, 0x82, 0x77, 0xe0, 0x01,
0xe0, 0x19, 0x38, 0x71, 0xec, 0x91, 0x53, 0x85, 0x9c, 0x17, 0x41, 0xde, 0x75, 0xba, 0x6e, 0x93,
0x2a, 0x5c, 0x38, 0x65, 0x3d, 0xf3, 0x7d, 0x33, 0xdf, 0x7e, 0xb3, 0x19, 0xb0, 0xd2, 0x20, 0xf4,
0x42, 0x96, 0x65, 0x34, 0x14, 0x29, 0xcb, 0xbc, 0xd3, 0x19, 0x9d, 0x9e, 0xb9, 0xf9, 0x94, 0x09,
0x86, 0xff, 0x4f, 0x83, 0xd0, 0xd5, 0x39, 0x6b, 0x37, 0x66, 0x31, 0x93, 0x29, 0xaf, 0x3c, 0x29,
0x94, 0xd5, 0x0d, 0x19, 0x3f, 0x61, 0x5c, 0x31, 0xbd, 0xdc, 0x8f, 0xd3, 0xcc, 0x2f, 0xe1, 0x55,
0xba, 0x77, 0xad, 0x81, 0x3e, 0x2a, 0x80, 0xf3, 0x06, 0xf6, 0xde, 0x96, 0xd4, 0x17, 0x97, 0x09,
0x42, 0x4f, 0x67, 0x94, 0x0b, 0xfc, 0x08, 0xfe, 0xd3, 0xe8, 0x49, 0x1a, 0x99, 0xa8, 0x8f, 0x06,
0xed, 0xa3, 0x9d, 0xe2, 0xa2, 0x67, 0x68, 0xf4, 0xe8, 0x98, 0x18, 0x1a, 0x36, 0x8a, 0x9c, 0xef,
0x08, 0xee, 0x2c, 0x55, 0xe4, 0x39, 0xcb, 0x38, 0xc5, 0xcf, 0x00, 0x34, 0x56, 0xd6, 0xeb, 0x1c,
0x74, 0xdd, 0xab, 0xf7, 0x74, 0x35, 0xef, 0x65, 0x16, 0x91, 0x1a, 0x01, 0xef, 0xc2, 0x66, 0x3e,
0x65, 0xec, 0x83, 0xd9, 0xec, 0xa3, 0x81, 0x41, 0xd4, 0x07, 0xee, 0x02, 0xc8, 0xc3, 0x24, 0xf7,
0x45, 0x62, 0xb6, 0x4a, 0x91, 0xa4, 0x2d, 0x23, 0x63, 0x5f, 0x24, 0xf8, 0x1e, 0x18, 0x2a, 0x9d,
0xd0, 0x34, 0x4e, 0x84, 0xb9, 0xd1, 0x47, 0x83, 0x0d, 0xd2, 0x91, 0xb1, 0x57, 0x32, 0xe4, 0xbc,
0x5b, 0x52, 0xcc, 0x17, 0x26, 0x3c, 0x01, 0xd0, 0x9e, 0x56, 0x8a, 0xef, 0xba, 0xca, 0x73, 0x57,
0x4d, 0x6b, 0xec, 0xc7, 0xb4, 0x82, 0x93, 0x1a, 0xd8, 0xf9, 0x86, 0xc0, 0x5c, 0x2e, 0x5b, 0x39,
0xf1, 0x1c, 0x3a, 0xfa, 0x62, 0xdc, 0x44, 0xfd, 0xd6, 0x7a, 0x2b, 0xea, 0x0c, 0xfc, 0xf4, 0x8a,
0xb0, 0xa6, 0x14, 0x66, 0xad, 0x12, 0xa6, 0x1a, 0xd6, 0x95, 0xe1, 0x3d, 0xd8, 0xaa, 0xcc, 0x28,
0xdd, 0x6a, 0x91, 0xea, 0xcb, 0x79, 0x0d, 0x5d, 0x25, 0xf8, 0x53, 0x4a, 0x33, 0xb1, 0xc2, 0x8d,
0x7d, 0x68, 0x87, 0x32, 0xa7, 0x9f, 0x83, 0x51, 0x5c, 0xf4, 0xb6, 0x15, 0x61, 0x74, 0x4c, 0xb6,
0x55, 0x7a, 0x14, 0x39, 0x5f, 0x11, 0xd8, 0x37, 0x15, 0xab, 0x3c, 0xd8, 0x87, 0x9d, 0xda, 0x03,
0x2b, 0xa7, 0xa7, 0x8c, 0x68, 0x93, 0x5b, 0x3a, 0x5e, 0xce, 0x90, 0xff, 0xab, 0xc9, 0x1f, 0xfc,
0x68, 0xc2, 0xa6, 0x54, 0x89, 0x27, 0x00, 0x5a, 0x23, 0xbe, 0x7f, 0x7d, 0x12, 0xab, 0xff, 0x23,
0xd6, 0x83, 0xb5, 0x38, 0x75, 0x57, 0xa7, 0x81, 0x03, 0xe8, 0xd4, 0x4c, 0xc0, 0xeb, 0x98, 0x0b,
0xcf, 0xad, 0xc1, 0x7a, 0xe0, 0x65, 0x0f, 0x01, 0xb7, 0x97, 0xec, 0xc6, 0xc3, 0xd5, 0x05, 0x6e,
0x98, 0xb1, 0xe5, 0xfe, 0x2d, 0x7c, 0xd1, 0xf5, 0x68, 0xfc, 0xb3, 0xb0, 0xd1, 0x79, 0x61, 0xa3,
0xdf, 0x85, 0x8d, 0xbe, 0xcc, 0xed, 0xc6, 0xf9, 0xdc, 0x6e, 0xfc, 0x9a, 0xdb, 0x8d, 0xf7, 0x8f,
0xe3, 0x54, 0x24, 0xb3, 0xc0, 0x0d, 0xd9, 0x89, 0x57, 0xed, 0x29, 0xf5, 0x33, 0xe4, 0xd1, 0x47,
0xef, 0xb3, 0x57, 0x2e, 0xa7, 0x87, 0x87, 0xc3, 0xda, 0x7e, 0x12, 0x67, 0x39, 0xe5, 0xc1, 0x96,
0xdc, 0x4d, 0x87, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, 0xed, 0x4b, 0x0d, 0x29, 0x1f, 0x05, 0x00,
0x00,
// 542 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x54, 0xc1, 0x6e, 0xd3, 0x40,
0x10, 0xcd, 0x26, 0x6d, 0xd5, 0x4c, 0x02, 0x94, 0x55, 0x55, 0x8c, 0xa5, 0x38, 0xc1, 0x42, 0x90,
0x1e, 0x62, 0xa3, 0x54, 0x20, 0x81, 0xc4, 0xa5, 0x14, 0x44, 0xb8, 0x10, 0x56, 0x9c, 0xb8, 0x44,
0x89, 0xbd, 0x75, 0x56, 0x50, 0xaf, 0x9b, 0xdd, 0x48, 0xf4, 0x2f, 0xf8, 0x07, 0x7e, 0x80, 0x13,
0x1f, 0xc0, 0x89, 0x63, 0x8f, 0x9c, 0x2a, 0xe4, 0xfc, 0x08, 0xf2, 0xae, 0xd3, 0x75, 0x93, 0x54,
0xe1, 0xd2, 0x53, 0xd6, 0x33, 0xef, 0xcd, 0xbc, 0x7d, 0xb3, 0x19, 0xb0, 0xd9, 0x28, 0xf0, 0x03,
0x1e, 0xc7, 0x34, 0x90, 0x8c, 0xc7, 0xfe, 0xe9, 0x94, 0x4e, 0xce, 0xbc, 0x64, 0xc2, 0x25, 0xc7,
0xb7, 0xd9, 0x28, 0xf0, 0x4c, 0xce, 0xde, 0x8d, 0x78, 0xc4, 0x55, 0xca, 0xcf, 0x4e, 0x1a, 0x65,
0x37, 0x02, 0x2e, 0x4e, 0xb8, 0xd0, 0x4c, 0x3f, 0x19, 0x46, 0x2c, 0x1e, 0x66, 0xf0, 0x3c, 0xdd,
0x5c, 0x68, 0x60, 0x8e, 0x1a, 0xe0, 0xbe, 0x87, 0xbd, 0x0f, 0x19, 0xf5, 0xd5, 0x65, 0x82, 0xd0,
0xd3, 0x29, 0x15, 0x12, 0x3f, 0x85, 0x5b, 0x06, 0x3d, 0x60, 0xa1, 0x85, 0x5a, 0xa8, 0x5d, 0x3d,
0xdc, 0x49, 0x2f, 0x9a, 0x75, 0x83, 0xee, 0x1d, 0x91, 0xba, 0x81, 0xf5, 0x42, 0xf7, 0x07, 0x82,
0x7b, 0x4b, 0x15, 0x45, 0xc2, 0x63, 0x41, 0xf1, 0x4b, 0x00, 0x83, 0x55, 0xf5, 0x6a, 0xdd, 0x86,
0x77, 0xf5, 0x9e, 0x9e, 0xe1, 0xbd, 0x8e, 0x43, 0x52, 0x20, 0xe0, 0x5d, 0xd8, 0x4c, 0x26, 0x9c,
0x1f, 0x5b, 0xe5, 0x16, 0x6a, 0xd7, 0x89, 0xfe, 0xc0, 0x0d, 0x00, 0x75, 0x18, 0x24, 0x43, 0x39,
0xb6, 0x2a, 0x99, 0x48, 0x52, 0x55, 0x91, 0xfe, 0x50, 0x8e, 0xf1, 0x03, 0xa8, 0xeb, 0xf4, 0x98,
0xb2, 0x68, 0x2c, 0xad, 0x8d, 0x16, 0x6a, 0x6f, 0x90, 0x9a, 0x8a, 0xbd, 0x55, 0x21, 0xf7, 0xe3,
0x92, 0x62, 0x31, 0x37, 0xe1, 0x39, 0x80, 0xf1, 0x34, 0x57, 0x7c, 0xdf, 0xd3, 0x9e, 0x7b, 0x7a,
0x5a, 0xfd, 0x61, 0x44, 0x73, 0x38, 0x29, 0x80, 0xdd, 0x9f, 0x08, 0xac, 0xe5, 0xb2, 0xb9, 0x13,
0x6f, 0xa0, 0x66, 0x2e, 0x26, 0x2c, 0xd4, 0xaa, 0xb4, 0x6b, 0xdd, 0x87, 0x8b, 0x56, 0xf4, 0x42,
0x1a, 0x4b, 0x76, 0xcc, 0x68, 0x58, 0x30, 0xb3, 0x48, 0xc4, 0x2f, 0xae, 0xe8, 0x2b, 0x2b, 0x7d,
0xf6, 0x2a, 0x7d, 0xba, 0x6f, 0x51, 0x20, 0xde, 0x83, 0xad, 0xdc, 0x93, 0xcc, 0xb4, 0x0a, 0xc9,
0xbf, 0xdc, 0x77, 0xd0, 0xd0, 0xba, 0xbf, 0x30, 0x1a, 0xcb, 0x15, 0xa6, 0xec, 0x43, 0x35, 0x50,
0x39, 0xf3, 0x2a, 0xea, 0xe9, 0x45, 0x73, 0x5b, 0x13, 0x7a, 0x47, 0x64, 0x5b, 0xa7, 0x7b, 0xa1,
0xfb, 0x1d, 0x81, 0x73, 0x5d, 0xb1, 0xdc, 0x8a, 0x7d, 0xd8, 0x29, 0xbc, 0xb3, 0x6c, 0x88, 0xda,
0x8f, 0x2a, 0xb9, 0x63, 0xe2, 0xd9, 0x28, 0xc5, 0x4d, 0x3d, 0x80, 0xee, 0xaf, 0x32, 0x6c, 0x2a,
0x95, 0x78, 0x00, 0x60, 0x34, 0xe2, 0x47, 0x8b, 0x03, 0x59, 0xfd, 0x57, 0xb1, 0x1f, 0xaf, 0xc5,
0xe9, 0xbb, 0xba, 0x25, 0x3c, 0x82, 0x5a, 0xc1, 0x04, 0xbc, 0x8e, 0x39, 0xf7, 0xdc, 0x6e, 0xaf,
0x07, 0x5e, 0xf6, 0x90, 0x70, 0x77, 0xc9, 0x6e, 0xdc, 0x59, 0x5d, 0xe0, 0x9a, 0x19, 0xdb, 0xde,
0xff, 0xc2, 0xe7, 0x5d, 0x0f, 0xfb, 0xbf, 0x53, 0x07, 0x9d, 0xa7, 0x0e, 0xfa, 0x9b, 0x3a, 0xe8,
0xdb, 0xcc, 0x29, 0x9d, 0xcf, 0x9c, 0xd2, 0x9f, 0x99, 0x53, 0xfa, 0xf4, 0x2c, 0x62, 0x72, 0x3c,
0x1d, 0x79, 0x01, 0x3f, 0xf1, 0xf3, 0x75, 0xa5, 0x7f, 0x3a, 0x22, 0xfc, 0xec, 0x7f, 0xf5, 0xb3,
0x1d, 0xf5, 0xe4, 0xa0, 0x53, 0x58, 0x53, 0xf2, 0x2c, 0xa1, 0x62, 0xb4, 0xa5, 0x56, 0xd4, 0xc1,
0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x3a, 0x7c, 0xa2, 0x33, 0x26, 0x05, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
@ -1375,7 +1375,7 @@ func (m *QueryConnectionsResponse) Unmarshal(dAtA []byte) error {
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.Connections = append(m.Connections, &ConnectionEnd{})
m.Connections = append(m.Connections, &IdentifiedConnection{})
if err := m.Connections[len(m.Connections)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
}

View File

@ -51,7 +51,7 @@ func (suite *KeeperTestSuite) TestChanOpenInit() {
// set connection as UNINITIALIZED
counterparty := connectiontypes.NewCounterparty(clientIDB, connIDA, suite.chainB.GetPrefix())
connection := connectiontypes.NewConnectionEnd(connectiontypes.UNINITIALIZED, clientIDA, connIDA, counterparty, []string{ibctesting.ConnectionVersion})
connection := connectiontypes.NewConnectionEnd(connectiontypes.UNINITIALIZED, clientIDA, counterparty, []string{ibctesting.ConnectionVersion})
suite.chainA.App.IBCKeeper.ConnectionKeeper.SetConnection(suite.chainA.GetContext(), connA.ID, connection)
portCap = nil

View File

@ -105,7 +105,7 @@ func (suite *KeeperTestSuite) TestSendPacket() {
{"connection is UNINITIALIZED", func() {
// set connection as UNINITIALIZED
counterparty := connectiontypes.NewCounterparty(clientIDB, connIDA, suite.chainB.GetPrefix())
connection := connectiontypes.NewConnectionEnd(connectiontypes.UNINITIALIZED, clientIDA, connIDA, counterparty, []string{ibctesting.ConnectionVersion})
connection := connectiontypes.NewConnectionEnd(connectiontypes.UNINITIALIZED, clientIDA, counterparty, []string{ibctesting.ConnectionVersion})
suite.chainA.App.IBCKeeper.ConnectionKeeper.SetConnection(suite.chainA.GetContext(), connIDA, connection)
channelA := ibctesting.TestChannel{PortID: portID, ID: channelIDA}

View File

@ -164,7 +164,7 @@ func (suite *TendermintTestSuite) TestVerifyClientConsensusState() {
func (suite *TendermintTestSuite) TestVerifyConnectionState() {
counterparty := connectiontypes.NewCounterparty("clientB", testConnectionID, commitmenttypes.NewMerklePrefix([]byte("ibc")))
conn := connectiontypes.NewConnectionEnd(connectiontypes.OPEN, testConnectionID, "clientA", counterparty, []string{"1.0.0"})
conn := connectiontypes.NewConnectionEnd(connectiontypes.OPEN, "clientA", counterparty, []string{"1.0.0"})
testCases := []struct {
name string

View File

@ -87,7 +87,7 @@ func (suite *LocalhostTestSuite) TestVerifyClientConsensusState() {
func (suite *LocalhostTestSuite) TestVerifyConnectionState() {
counterparty := connectiontypes.NewCounterparty("clientB", testConnectionID, commitmenttypes.NewMerklePrefix([]byte("ibc")))
conn := connectiontypes.NewConnectionEnd(connectiontypes.OPEN, testConnectionID, "clientA", counterparty, []string{"1.0.0"})
conn := connectiontypes.NewConnectionEnd(connectiontypes.OPEN, "clientA", counterparty, []string{"1.0.0"})
testCases := []struct {
name string

View File

@ -93,7 +93,7 @@ func ClientConnectionsPath(clientID string) string {
// ConnectionPath defines the path under which connection paths are stored
func ConnectionPath(connectionID string) string {
return fmt.Sprintf("connections/%s", connectionID)
return fmt.Sprintf("%s/%s", KeyConnectionPrefix, connectionID)
}
// KeyClientConnections returns the store key for the connectios of a given client

View File

@ -16,6 +16,17 @@ func RemovePath(paths []string, path string) ([]string, bool) {
return paths, false
}
// ParseConnectionPath returns the connection ID from a full path. It returns
// an error if the provided path is invalid,
func ParseConnectionPath(path string) (string, error) {
split := strings.Split(path, "/")
if len(split) != 2 {
return "", sdkerrors.Wrapf(ErrInvalidPath, "cannot parse connection path %s", path)
}
return split[1], nil
}
// ParseChannelPath returns the port and channel ID from a full path. It returns
// an error if the provided path is invalid,
func ParseChannelPath(path string) (string, string, error) {
@ -31,6 +42,16 @@ func ParseChannelPath(path string) (string, string, error) {
return split[2], split[4], nil
}
// MustParseConnectionPath returns the connection ID from a full path. Panics
// if the provided path is invalid
func MustParseConnectionPath(path string) string {
connectionID, err := ParseConnectionPath(path)
if err != nil {
panic(err)
}
return connectionID
}
// MustParseChannelPath returns the port and channel ID from a full path. Panics
// if the provided path is invalid
func MustParseChannelPath(path string) (string, string) {

View File

@ -47,8 +47,8 @@ func (suite *IBCTestSuite) TestValidateGenesis() {
true,
),
ConnectionGenesis: connectiontypes.NewGenesisState(
[]connectiontypes.ConnectionEnd{
connectiontypes.NewConnectionEnd(connectiontypes.INIT, connectionID, clientID, connectiontypes.NewCounterparty(clientID2, connectionID2, commitmenttypes.NewMerklePrefix([]byte("prefix"))), []string{ibctesting.ConnectionVersion}),
[]connectiontypes.IdentifiedConnection{
connectiontypes.NewIdentifiedConnection(connectionID, connectiontypes.NewConnectionEnd(connectiontypes.INIT, clientID, connectiontypes.NewCounterparty(clientID2, connectionID2, commitmenttypes.NewMerklePrefix([]byte("prefix"))), []string{ibctesting.ConnectionVersion})),
},
[]connectiontypes.ConnectionPaths{
connectiontypes.NewConnectionPaths(clientID, []string{host.ConnectionPath(connectionID)}),
@ -102,8 +102,8 @@ func (suite *IBCTestSuite) TestValidateGenesis() {
genState: types.GenesisState{
ClientGenesis: clienttypes.DefaultGenesisState(),
ConnectionGenesis: connectiontypes.NewGenesisState(
[]connectiontypes.ConnectionEnd{
connectiontypes.NewConnectionEnd(connectiontypes.INIT, connectionID, "(CLIENTIDONE)", connectiontypes.NewCounterparty(clientID, connectionID2, commitmenttypes.NewMerklePrefix([]byte("prefix"))), []string{"1.0.0"}),
[]connectiontypes.IdentifiedConnection{
connectiontypes.NewIdentifiedConnection(connectionID, connectiontypes.NewConnectionEnd(connectiontypes.INIT, "(CLIENTIDONE)", connectiontypes.NewCounterparty(clientID, connectionID2, commitmenttypes.NewMerklePrefix([]byte("prefix"))), []string{"1.0.0"})),
},
[]connectiontypes.ConnectionPaths{
connectiontypes.NewConnectionPaths(clientID, []string{host.ConnectionPath(connectionID)}),

View File

@ -23,6 +23,7 @@ func TestDecodeStore(t *testing.T) {
dec := simulation.NewDecodeStore(app.IBCKeeper.Codecs())
clientID := "clientidone"
connectionID := "connectionidone"
channelID := "channelidone"
portID := "portidone"
@ -31,7 +32,6 @@ func TestDecodeStore(t *testing.T) {
FrozenHeight: 10,
}
connection := connectiontypes.ConnectionEnd{
ID: clientID,
ClientID: "clientidone",
Versions: []string{"1.0"},
}
@ -46,7 +46,7 @@ func TestDecodeStore(t *testing.T) {
Value: aminoCdc.MustMarshalBinaryBare(clientState),
},
tmkv.Pair{
Key: host.KeyConnection(connection.ID),
Key: host.KeyConnection(connectionID),
Value: cdc.MustMarshalBinaryBare(&connection),
},
tmkv.Pair{