Add standard acknowledgement to channels and apply usage in ibc transfer (#7263)

* gen ack proto type

* remove transfer ack

* change ics20 ack to use standard type

* update commented tests

* small typo fix

* revert back to module cdc

* update docs

* fix lint

* nit

* update ack event emission

* Update x/ibc-transfer/spec/01_concepts.md

* add comment for onacknowledgement

* Update proto/ibc/channel/channel.proto

Co-authored-by: Federico Kunze <31522760+fedekunze@users.noreply.github.com>
Co-authored-by: Christopher Goes <cwgoes@pluranimity.org>
This commit is contained in:
colin axnér 2020-09-09 12:01:28 +02:00 committed by GitHub
parent 1755bf3b46
commit b4f146b62d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
16 changed files with 666 additions and 442 deletions

View File

@ -340,7 +340,9 @@ receive acknowledegments with the IBC modules as byte strings.
Thus, modules must agree on how to encode/decode acknowledgements. The process of creating an
acknowledgement struct along with encoding and decoding it, is very similar to the packet data
example above.
example above. [ICS 04](https://github.com/cosmos/ics/tree/master/spec/ics-004-channel-and-packet-semantics#acknowledgement-envelope)
specifies a recommended format for acknowledgements. This acknowledgement type can be imported from
[channel types](https://github.com/cosmos/cosmos-sdk/tree/master/x/ibc/04-channel/types).
#### Acknowledging Packets

View File

@ -48,7 +48,7 @@ message MsgChannelOpenConfirm {
bytes signer = 5 [(gogoproto.casttype) = "github.com/cosmos/cosmos-sdk/types.AccAddress"];
}
// MsgChannelOpenConfirm defines a msg sent by a Relayer to Chain A
// MsgChannelCloseInit defines a msg sent by a Relayer to Chain A
// to close a channel with Chain B.
message MsgChannelCloseInit {
string port_id = 1 [(gogoproto.moretags) = "yaml:\"port_id\""];
@ -114,8 +114,8 @@ message Channel {
Order ordering = 2;
// counterparty channel end
Counterparty counterparty = 3 [(gogoproto.nullable) = false];
// list of connection identifiers, in order, along which packets sent on this
// channel will travel
// list of connection identifiers, in order, along which packets sent on
// this channel will travel
repeated string connection_hops = 4 [(gogoproto.moretags) = "yaml:\"connection_hops\""];
// opaque channel version, which is agreed upon during the handshake
string version = 5;
@ -132,8 +132,8 @@ message IdentifiedChannel {
Order ordering = 2;
// counterparty channel end
Counterparty counterparty = 3 [(gogoproto.nullable) = false];
// list of connection identifiers, in order, along which packets sent on this
// channel will travel
// list of connection identifiers, in order, along which packets sent on
// this channel will travel
repeated string connection_hops = 4 [(gogoproto.moretags) = "yaml:\"connection_hops\""];
// opaque channel version, which is agreed upon during the handshake
string version = 5;
@ -189,9 +189,9 @@ message Counterparty {
message Packet {
option (gogoproto.goproto_getters) = false;
// number corresponds to the order of sends and receives, where a Packet with
// an earlier sequence number must be sent and received before a Packet with a
// later sequence number.
// number corresponds to the order of sends and receives, where a Packet
// with an earlier sequence number must be sent and received before a Packet
// with a later sequence number.
uint64 sequence = 1;
// identifies the port on the sending chain.
string source_port = 2 [(gogoproto.moretags) = "yaml:\"source_port\""];
@ -223,3 +223,18 @@ message PacketAckCommitment {
// packet commitment hash.
bytes hash = 4;
}
// Acknowledgement is the recommended acknowledgement format to be used by
// app-specific protocols.
// NOTE: The field numbers 21 and 22 were explicitly chosen to avoid accidental
// conflicts with other protobuf message formats used for acknowledgements.
// The first byte of any message with this format will be the non-ASCII values
// `0xaa` (result) or `0xb2` (error). Implemented as defined by ICS:
// https://github.com/cosmos/ics/tree/master/spec/ics-004-channel-and-packet-semantics#acknowledgement-envelope
message Acknowledgement {
// response contains either a result or an error and must be non-empty
oneof response {
bytes result = 21;
string error = 22;
}
}

View File

@ -43,31 +43,25 @@ message FungibleTokenPacketData {
string receiver = 4;
}
// FungibleTokenPacketAcknowledgement contains a boolean success flag and an
// optional error msg error msg is empty string on success See spec for
// onAcknowledgePacket:
// https://github.com/cosmos/ics/tree/master/spec/ics-020-fungible-token-transfer#packet-relay
message FungibleTokenPacketAcknowledgement {
bool success = 1;
string error = 2;
}
// DenomTrace contains the base denomination for ICS20 fungible tokens and the source tracing
// information path.
// DenomTrace contains the base denomination for ICS20 fungible tokens and the
// source tracing information path.
message DenomTrace {
// path defines the chain of port/channel identifiers used for tracing the source of the fungible
// token.
// path defines the chain of port/channel identifiers used for tracing the
// source of the fungible token.
string path = 1;
// base denomination of the relayed fungible token.
string base_denom = 2;
}
// Params defines the set of IBC transfer parameters.
// NOTE: To prevent a single token from being transferred, set the TransfersEnabled parameter to
// true and then set the bank module's SendEnabled parameter for the denomination to false.
// NOTE: To prevent a single token from being transferred, set the
// TransfersEnabled parameter to true and then set the bank module's SendEnabled
// parameter for the denomination to false.
message Params {
// send_enabled enables or disables all cross-chain token transfers from this chain.
// send_enabled enables or disables all cross-chain token transfers from this
// chain.
bool send_enabled = 1 [(gogoproto.moretags) = "yaml:\"send_enabled\""];
// receive_enabled enables or disables all cross-chain token transfers to this chain.
// receive_enabled enables or disables all cross-chain token transfers to this
// chain.
bool receive_enabled = 2 [(gogoproto.moretags) = "yaml:\"receive_enabled\""];
}

View File

@ -48,7 +48,7 @@ func (suite *TransferTestSuite) TestHandleMsgTransfer() {
// relay send
fungibleTokenPacket := types.NewFungibleTokenPacketData(coinToSendToB.Denom, coinToSendToB.Amount.Uint64(), suite.chainA.SenderAccount.GetAddress().String(), suite.chainB.SenderAccount.GetAddress().String())
packet := channeltypes.NewPacket(fungibleTokenPacket.GetBytes(), 1, channelA.PortID, channelA.ID, channelB.PortID, channelB.ID, timeoutHeight, 0)
ack := types.FungibleTokenPacketAcknowledgement{Success: true}
ack := channeltypes.NewResultAcknowledgement([]byte{byte(1)})
err = suite.coordinator.RelayPacket(suite.chainA, suite.chainB, clientA, clientB, packet, ack.GetBytes())
suite.Require().NoError(err) // relay committed

View File

@ -232,11 +232,15 @@ func (k Keeper) OnRecvPacket(ctx sdk.Context, packet channeltypes.Packet, data t
// acknowledgement written on the receiving chain. If the acknowledgement
// was a success then nothing occurs. If the acknowledgement failed, then
// the sender is refunded their tokens using the refundPacketToken function.
func (k Keeper) OnAcknowledgementPacket(ctx sdk.Context, packet channeltypes.Packet, data types.FungibleTokenPacketData, ack types.FungibleTokenPacketAcknowledgement) error {
if !ack.Success {
func (k Keeper) OnAcknowledgementPacket(ctx sdk.Context, packet channeltypes.Packet, data types.FungibleTokenPacketData, ack channeltypes.Acknowledgement) error {
switch ack.Response.(type) {
case *channeltypes.Acknowledgement_Error:
return k.refundPacketToken(ctx, packet, data)
default:
// the acknowledgement succeeded on the receiving chain so nothing
// needs to be executed and no error needs to be returned
return nil
}
return nil
}
// OnTimeoutPacket refunds the sender since the original packet sent was

View File

@ -192,7 +192,7 @@ func (suite *KeeperTestSuite) TestOnRecvPacket() {
// relay send packet
fungibleTokenPacket := types.NewFungibleTokenPacketData(coinFromBToA, suite.chainB.SenderAccount.GetAddress().String(), suite.chainA.SenderAccount.GetAddress().String())
packet := channeltypes.NewPacket(fungibleTokenPacket.GetBytes(), 1, channelB.PortID, channelB.ID, channelA.PortID, channelA.ID, 110, 0)
ack := types.FungibleTokenPacketAcknowledgement{Success: true}
ack := channeltypes.NewResultAcknowledgement([]byte{byte(1)})
err = suite.coordinator.RelayPacket(suite.chainB, suite.chainA, clientB, clientA, packet, ack.GetBytes())
suite.Require().NoError(err) // relay committed
@ -229,13 +229,8 @@ func (suite *KeeperTestSuite) TestOnRecvPacket() {
// to chainB.
func (suite *KeeperTestSuite) TestOnAcknowledgementPacket() {
var (
successAck = types.FungibleTokenPacketAcknowledgement{
Success: true,
}
failedAck = types.FungibleTokenPacketAcknowledgement{
Success: false,
Error: "failed packet transfer",
}
successAck = channeltypes.NewResultAcknowledgement([]byte{byte(1)})
failedAck = channeltypes.NewErrorAcknowledgement("failed packet transfer")
channelA, channelB ibctesting.TestChannel
coins sdk.Coins
@ -243,7 +238,7 @@ func (suite *KeeperTestSuite) TestOnAcknowledgementPacket() {
testCases := []struct {
msg string
ack types.FungibleTokenPacketAcknowledgement
ack channeltypes.Acknowledgement
malleate func()
source bool
success bool // success of ack

View File

@ -305,16 +305,11 @@ func (am AppModule) OnRecvPacket(
return nil, nil, sdkerrors.Wrapf(sdkerrors.ErrUnknownRequest, "cannot unmarshal ICS-20 transfer packet data: %s", err.Error())
}
acknowledgement := types.FungibleTokenPacketAcknowledgement{
Success: true,
Error: "",
}
acknowledgement := channeltypes.NewResultAcknowledgement([]byte{byte(1)})
if err := am.keeper.OnRecvPacket(ctx, packet, data); err != nil {
acknowledgement = types.FungibleTokenPacketAcknowledgement{
Success: false,
Error: err.Error(),
}
err := am.keeper.OnRecvPacket(ctx, packet, data)
if err != nil {
acknowledgement = channeltypes.NewErrorAcknowledgement(err.Error())
}
ctx.EventManager().EmitEvent(
@ -324,6 +319,7 @@ func (am AppModule) OnRecvPacket(
sdk.NewAttribute(types.AttributeKeyReceiver, data.Receiver),
sdk.NewAttribute(types.AttributeKeyDenom, data.Denom),
sdk.NewAttribute(types.AttributeKeyAmount, fmt.Sprintf("%d", data.Amount)),
sdk.NewAttribute(types.AttributeKeyAckSuccess, fmt.Sprintf("%t", err != nil)),
),
)
@ -338,7 +334,7 @@ func (am AppModule) OnAcknowledgementPacket(
packet channeltypes.Packet,
acknowledgement []byte,
) (*sdk.Result, error) {
var ack types.FungibleTokenPacketAcknowledgement
var ack channeltypes.Acknowledgement
if err := types.ModuleCdc.UnmarshalJSON(acknowledgement, &ack); err != nil {
return nil, sdkerrors.Wrapf(sdkerrors.ErrUnknownRequest, "cannot unmarshal ICS-20 transfer packet acknowledgement: %v", err)
}
@ -358,15 +354,23 @@ func (am AppModule) OnAcknowledgementPacket(
sdk.NewAttribute(types.AttributeKeyReceiver, data.Receiver),
sdk.NewAttribute(types.AttributeKeyDenom, data.Denom),
sdk.NewAttribute(types.AttributeKeyAmount, fmt.Sprintf("%d", data.Amount)),
sdk.NewAttribute(types.AttributeKeyAckSuccess, fmt.Sprintf("%t", ack.Success)),
sdk.NewAttribute(types.AttributeKeyAck, fmt.Sprintf("%v", ack)),
),
)
if !ack.Success {
switch resp := ack.Response.(type) {
case *channeltypes.Acknowledgement_Result:
ctx.EventManager().EmitEvent(
sdk.NewEvent(
types.EventTypePacket,
sdk.NewAttribute(types.AttributeKeyAckError, ack.Error),
sdk.NewAttribute(types.AttributeKeyAckSuccess, string(resp.Result)),
),
)
case *channeltypes.Acknowledgement_Error:
ctx.EventManager().EmitEvent(
sdk.NewEvent(
types.EventTypePacket,
sdk.NewAttribute(types.AttributeKeyAckError, resp.Error),
),
)
}

View File

@ -3,3 +3,13 @@ order: 1
-->
# Concepts
## Acknowledgements
ICS20 uses the recommended acknowledgement format as specified by [ICS 04](https://github.com/cosmos/ics/tree/master/spec/ics-004-channel-and-packet-semantics#acknowledgement-envelope).
A successful receive of a transfer packet will result in a Result Acknowledgement being written
with the value `[]byte(byte(1))` in the `Response` field.
An unsuccessful receive of a transfer packet will result in an Error Acknowledgement being written
with the error message in the `Response` field.

View File

@ -21,17 +21,18 @@ order: 5
| fungible_token_packet | receiver | {receiver} |
| fungible_token_packet | denom | {denom} |
| fungible_token_packet | amount | {amount} |
| fungible_token_packet | success | {ackSuccess} |
| denomination_trace | trace_hash | {hex_hash} |
## OnAcknowledgePacket callback
| Type | Attribute Key | Attribute Value |
|-----------------------|---------------|-----------------|
| fungible_token_packet | module | transfer |
| fungible_token_packet | receiver | {receiver} |
| fungible_token_packet | denom | {denom} |
| fungible_token_packet | amount | {amount} |
| fungible_token_packet | success | {ackSuccess} |
| Type | Attribute Key | Attribute Value |
|-----------------------|-----------------|-------------------|
| fungible_token_packet | module | transfer |
| fungible_token_packet | receiver | {receiver} |
| fungible_token_packet | denom | {denom} |
| fungible_token_packet | amount | {amount} |
| fungible_token_packet | success | error | {ack.Response} |
## OnTimeoutPacket callback

View File

@ -15,6 +15,7 @@ const (
AttributeKeyRefundDenom = "refund_denom"
AttributeKeyRefundAmount = "refund_amount"
AttributeKeyAckSuccess = "success"
AttributeKeyAck = "acknowledgement"
AttributeKeyAckError = "error"
AttributeKeyTraceHash = "trace_hash"
)

View File

@ -52,8 +52,3 @@ func (ftpd FungibleTokenPacketData) ValidateBasic() error {
func (ftpd FungibleTokenPacketData) GetBytes() []byte {
return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(&ftpd))
}
// GetBytes is a helper for serialising
func (ack FungibleTokenPacketAcknowledgement) GetBytes() []byte {
return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(&ack))
}

View File

@ -205,67 +205,11 @@ func (m *FungibleTokenPacketData) GetReceiver() string {
return ""
}
// FungibleTokenPacketAcknowledgement contains a boolean success flag and an
// optional error msg error msg is empty string on success See spec for
// onAcknowledgePacket:
// https://github.com/cosmos/ics/tree/master/spec/ics-020-fungible-token-transfer#packet-relay
type FungibleTokenPacketAcknowledgement struct {
Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`
Error string `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"`
}
func (m *FungibleTokenPacketAcknowledgement) Reset() { *m = FungibleTokenPacketAcknowledgement{} }
func (m *FungibleTokenPacketAcknowledgement) String() string { return proto.CompactTextString(m) }
func (*FungibleTokenPacketAcknowledgement) ProtoMessage() {}
func (*FungibleTokenPacketAcknowledgement) Descriptor() ([]byte, []int) {
return fileDescriptor_08134a70fd29e656, []int{2}
}
func (m *FungibleTokenPacketAcknowledgement) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
}
func (m *FungibleTokenPacketAcknowledgement) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
if deterministic {
return xxx_messageInfo_FungibleTokenPacketAcknowledgement.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 *FungibleTokenPacketAcknowledgement) XXX_Merge(src proto.Message) {
xxx_messageInfo_FungibleTokenPacketAcknowledgement.Merge(m, src)
}
func (m *FungibleTokenPacketAcknowledgement) XXX_Size() int {
return m.Size()
}
func (m *FungibleTokenPacketAcknowledgement) XXX_DiscardUnknown() {
xxx_messageInfo_FungibleTokenPacketAcknowledgement.DiscardUnknown(m)
}
var xxx_messageInfo_FungibleTokenPacketAcknowledgement proto.InternalMessageInfo
func (m *FungibleTokenPacketAcknowledgement) GetSuccess() bool {
if m != nil {
return m.Success
}
return false
}
func (m *FungibleTokenPacketAcknowledgement) GetError() string {
if m != nil {
return m.Error
}
return ""
}
// DenomTrace contains the base denomination for ICS20 fungible tokens and the source tracing
// information path.
// DenomTrace contains the base denomination for ICS20 fungible tokens and the
// source tracing information path.
type DenomTrace struct {
// path defines the chain of port/channel identifiers used for tracing the source of the fungible
// token.
// path defines the chain of port/channel identifiers used for tracing the
// source of the fungible token.
Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"`
// base denomination of the relayed fungible token.
BaseDenom string `protobuf:"bytes,2,opt,name=base_denom,json=baseDenom,proto3" json:"base_denom,omitempty"`
@ -275,7 +219,7 @@ func (m *DenomTrace) Reset() { *m = DenomTrace{} }
func (m *DenomTrace) String() string { return proto.CompactTextString(m) }
func (*DenomTrace) ProtoMessage() {}
func (*DenomTrace) Descriptor() ([]byte, []int) {
return fileDescriptor_08134a70fd29e656, []int{3}
return fileDescriptor_08134a70fd29e656, []int{2}
}
func (m *DenomTrace) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -319,12 +263,15 @@ func (m *DenomTrace) GetBaseDenom() string {
}
// Params defines the set of IBC transfer parameters.
// NOTE: To prevent a single token from being transferred, set the TransfersEnabled parameter to
// true and then set the bank module's SendEnabled parameter for the denomination to false.
// NOTE: To prevent a single token from being transferred, set the
// TransfersEnabled parameter to true and then set the bank module's SendEnabled
// parameter for the denomination to false.
type Params struct {
// send_enabled enables or disables all cross-chain token transfers from this chain.
// send_enabled enables or disables all cross-chain token transfers from this
// chain.
SendEnabled bool `protobuf:"varint,1,opt,name=send_enabled,json=sendEnabled,proto3" json:"send_enabled,omitempty" yaml:"send_enabled"`
// receive_enabled enables or disables all cross-chain token transfers to this chain.
// receive_enabled enables or disables all cross-chain token transfers to this
// chain.
ReceiveEnabled bool `protobuf:"varint,2,opt,name=receive_enabled,json=receiveEnabled,proto3" json:"receive_enabled,omitempty" yaml:"receive_enabled"`
}
@ -332,7 +279,7 @@ func (m *Params) Reset() { *m = Params{} }
func (m *Params) String() string { return proto.CompactTextString(m) }
func (*Params) ProtoMessage() {}
func (*Params) Descriptor() ([]byte, []int) {
return fileDescriptor_08134a70fd29e656, []int{4}
return fileDescriptor_08134a70fd29e656, []int{3}
}
func (m *Params) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -378,7 +325,6 @@ func (m *Params) GetReceiveEnabled() bool {
func init() {
proto.RegisterType((*MsgTransfer)(nil), "ibc.transfer.MsgTransfer")
proto.RegisterType((*FungibleTokenPacketData)(nil), "ibc.transfer.FungibleTokenPacketData")
proto.RegisterType((*FungibleTokenPacketAcknowledgement)(nil), "ibc.transfer.FungibleTokenPacketAcknowledgement")
proto.RegisterType((*DenomTrace)(nil), "ibc.transfer.DenomTrace")
proto.RegisterType((*Params)(nil), "ibc.transfer.Params")
}
@ -386,47 +332,44 @@ func init() {
func init() { proto.RegisterFile("ibc/transfer/transfer.proto", fileDescriptor_08134a70fd29e656) }
var fileDescriptor_08134a70fd29e656 = []byte{
// 629 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x54, 0x41, 0x4f, 0xdb, 0x4a,
0x10, 0x8e, 0x21, 0x04, 0xd8, 0x00, 0xef, 0xbd, 0x7d, 0x3c, 0x30, 0x79, 0x25, 0x8e, 0x7c, 0xca,
0x05, 0x5b, 0x69, 0x55, 0x55, 0xe2, 0xd2, 0x62, 0x68, 0x55, 0x54, 0x55, 0x42, 0x56, 0x0e, 0x55,
0x2f, 0xd1, 0x7a, 0x3d, 0x75, 0xac, 0xc4, 0xbb, 0xd1, 0xee, 0x86, 0x16, 0xf5, 0x17, 0xf4, 0xd6,
0x9f, 0x85, 0xd4, 0x0b, 0xc7, 0x9e, 0xac, 0x0a, 0xfe, 0x41, 0x8e, 0x3d, 0x55, 0xeb, 0x5d, 0x02,
0xa9, 0x50, 0x4f, 0xbb, 0xdf, 0x7c, 0xf3, 0x8d, 0xe7, 0x9b, 0x9d, 0x04, 0xfd, 0x9f, 0x27, 0x34,
0x54, 0x82, 0x30, 0xf9, 0x01, 0xc4, 0xfc, 0x12, 0x4c, 0x04, 0x57, 0x1c, 0x6f, 0xe4, 0x09, 0x0d,
0x6e, 0x63, 0xad, 0xed, 0x8c, 0x67, 0xbc, 0x22, 0x42, 0x7d, 0x33, 0x39, 0xad, 0x36, 0xe5, 0xb2,
0xe0, 0x32, 0x4c, 0x88, 0x84, 0xf0, 0xbc, 0x97, 0x80, 0x22, 0xbd, 0x90, 0xf2, 0x9c, 0x59, 0x7e,
0x57, 0x7f, 0x80, 0x8e, 0x73, 0x60, 0xca, 0x1e, 0x86, 0xf0, 0xbf, 0x2d, 0xa3, 0xe6, 0x5b, 0x99,
0xf5, 0x6d, 0x79, 0xfc, 0x0c, 0x35, 0x25, 0x9f, 0x0a, 0x0a, 0x83, 0x09, 0x17, 0xca, 0x75, 0x3a,
0x4e, 0x77, 0x3d, 0xda, 0x99, 0x95, 0x1e, 0xbe, 0x20, 0xc5, 0xf8, 0xd0, 0xbf, 0x47, 0xfa, 0x31,
0x32, 0xe8, 0x8c, 0x0b, 0x85, 0x5f, 0xa0, 0x2d, 0xcb, 0xd1, 0x21, 0x61, 0x0c, 0xc6, 0xee, 0x52,
0xa5, 0xdd, 0x9b, 0x95, 0xde, 0x7f, 0x0b, 0x5a, 0xcb, 0xfb, 0xf1, 0xa6, 0x09, 0x1c, 0x1b, 0x8c,
0x9f, 0xa2, 0x15, 0xc5, 0x47, 0xc0, 0xdc, 0xe5, 0x8e, 0xd3, 0x6d, 0x3e, 0xde, 0x0b, 0x8c, 0xa7,
0x40, 0x7b, 0x0a, 0xac, 0xa7, 0xe0, 0x98, 0xe7, 0x2c, 0xaa, 0x5f, 0x96, 0x5e, 0x2d, 0x36, 0xd9,
0xf8, 0x14, 0x35, 0x24, 0xb0, 0x14, 0x84, 0x5b, 0xef, 0x38, 0xdd, 0x8d, 0xa8, 0xf7, 0xb3, 0xf4,
0x0e, 0xb2, 0x5c, 0x0d, 0xa7, 0x49, 0x40, 0x79, 0x11, 0xda, 0xc9, 0x98, 0xe3, 0x40, 0xa6, 0xa3,
0x50, 0x5d, 0x4c, 0x40, 0x06, 0x47, 0x94, 0x1e, 0xa5, 0xa9, 0x00, 0x29, 0x63, 0x5b, 0x00, 0xb7,
0xd0, 0x9a, 0x00, 0x0a, 0xf9, 0x39, 0x08, 0x77, 0x45, 0x77, 0x1f, 0xcf, 0x31, 0x7e, 0x87, 0xb6,
0x54, 0x5e, 0x00, 0x9f, 0xaa, 0xc1, 0x10, 0xf2, 0x6c, 0xa8, 0xdc, 0x46, 0xd5, 0x26, 0x0e, 0xf4,
0xf3, 0xd8, 0x99, 0xbe, 0xae, 0x98, 0x68, 0x5f, 0xf7, 0x77, 0xe7, 0x7b, 0x51, 0xe7, 0xc7, 0x9b,
0x36, 0x60, 0xb2, 0xf1, 0x29, 0xfa, 0xe7, 0x36, 0x43, 0x9f, 0x52, 0x91, 0x62, 0xe2, 0xae, 0x76,
0x9c, 0x6e, 0x3d, 0x7a, 0x34, 0x2b, 0x3d, 0x77, 0xb1, 0xc8, 0x3c, 0xc5, 0x8f, 0xff, 0xb6, 0xb1,
0xfe, 0x3c, 0xf4, 0x19, 0xed, 0xbe, 0x9a, 0xb2, 0x2c, 0x4f, 0xc6, 0xd0, 0xd7, 0xc3, 0x39, 0x23,
0x74, 0x04, 0xea, 0x84, 0x28, 0x82, 0xb7, 0xd1, 0x4a, 0x0a, 0x8c, 0x17, 0xe6, 0x49, 0x63, 0x03,
0xf0, 0x0e, 0x6a, 0x90, 0x82, 0x4f, 0x99, 0xaa, 0x5e, 0xab, 0x1e, 0x5b, 0xa4, 0xe3, 0x76, 0xa8,
0xcb, 0x55, 0xfa, 0x43, 0x13, 0xaa, 0x2f, 0x4e, 0xc8, 0xef, 0x23, 0xff, 0x81, 0x8f, 0x1f, 0xd1,
0x11, 0xe3, 0x1f, 0xc7, 0x90, 0x66, 0x50, 0x00, 0x53, 0xd8, 0x45, 0xab, 0x72, 0x4a, 0x29, 0x48,
0x59, 0x75, 0xb2, 0x16, 0xdf, 0x42, 0xdd, 0x21, 0x08, 0xc1, 0x85, 0x59, 0x9c, 0xd8, 0x00, 0xff,
0x39, 0x42, 0x27, 0xba, 0xd5, 0xbe, 0x20, 0x14, 0x30, 0x46, 0xf5, 0x09, 0x51, 0x43, 0x6b, 0xa2,
0xba, 0xe3, 0x7d, 0x84, 0xf4, 0x8a, 0x0c, 0x8c, 0x3d, 0x23, 0x5e, 0xd7, 0x91, 0x4a, 0xe7, 0x7f,
0x71, 0x50, 0xe3, 0x8c, 0x08, 0x52, 0x48, 0x7c, 0x88, 0x36, 0xb4, 0x8f, 0x01, 0x30, 0x92, 0x8c,
0x21, 0x35, 0x0d, 0x44, 0xbb, 0xb3, 0xd2, 0xfb, 0xd7, 0x6e, 0xe8, 0x3d, 0xd6, 0x8f, 0x9b, 0x1a,
0xbe, 0x34, 0x08, 0x1f, 0xa3, 0xbf, 0xac, 0xd3, 0xb9, 0x7c, 0xa9, 0x92, 0xb7, 0x66, 0xa5, 0xb7,
0x63, 0xe4, 0xbf, 0x25, 0xf8, 0xf1, 0x96, 0x8d, 0xd8, 0x22, 0xd1, 0x9b, 0xcb, 0xeb, 0xb6, 0x73,
0x75, 0xdd, 0x76, 0x7e, 0x5c, 0xb7, 0x9d, 0xaf, 0x37, 0xed, 0xda, 0xd5, 0x4d, 0xbb, 0xf6, 0xfd,
0xa6, 0x5d, 0x7b, 0xdf, 0xfb, 0xe3, 0xc6, 0x7e, 0x0a, 0xf3, 0x84, 0x1e, 0xdc, 0xfd, 0x41, 0xe8,
0x05, 0x4e, 0x1a, 0xd5, 0x2f, 0xf8, 0xc9, 0xaf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xd2, 0x4b, 0xfa,
0xcf, 0x3d, 0x04, 0x00, 0x00,
// 587 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x53, 0x4d, 0x4f, 0x13, 0x41,
0x18, 0xee, 0x42, 0xa9, 0x30, 0x05, 0xd4, 0x11, 0x61, 0xa9, 0xb2, 0xdb, 0xec, 0xa9, 0x17, 0x76,
0x53, 0x8d, 0x31, 0xe1, 0xa2, 0x2c, 0x68, 0x24, 0xc6, 0x84, 0x4c, 0x7a, 0x30, 0x5e, 0x9a, 0xd9,
0xe9, 0xb8, 0xdd, 0xd0, 0x9d, 0x69, 0x66, 0xa6, 0x44, 0xe2, 0x2f, 0xf0, 0xe6, 0xcf, 0x22, 0xf1,
0xc2, 0xd1, 0xd3, 0xc6, 0xd0, 0x7f, 0xd0, 0xa3, 0x27, 0x33, 0x1f, 0x14, 0x6a, 0x8c, 0xa7, 0x99,
0xf7, 0x79, 0xde, 0xe7, 0x9d, 0xf7, 0x6b, 0xc0, 0x93, 0x22, 0x23, 0x89, 0x12, 0x98, 0xc9, 0xcf,
0x54, 0xcc, 0x2f, 0xf1, 0x58, 0x70, 0xc5, 0xe1, 0x7a, 0x91, 0x91, 0xf8, 0x06, 0x6b, 0x6d, 0xe5,
0x3c, 0xe7, 0x86, 0x48, 0xf4, 0xcd, 0xfa, 0xb4, 0x02, 0xc2, 0x65, 0xc9, 0x65, 0x92, 0x61, 0x49,
0x93, 0xf3, 0x6e, 0x46, 0x15, 0xee, 0x26, 0x84, 0x17, 0xcc, 0xf1, 0x3b, 0xfa, 0x01, 0x32, 0x2a,
0x28, 0x53, 0xee, 0xb0, 0x44, 0xf4, 0x63, 0x19, 0x34, 0x3f, 0xc8, 0xbc, 0xe7, 0xc2, 0xc3, 0x97,
0xa0, 0x29, 0xf9, 0x44, 0x10, 0xda, 0x1f, 0x73, 0xa1, 0x7c, 0xaf, 0xed, 0x75, 0xd6, 0xd2, 0xed,
0x59, 0x15, 0xc2, 0x0b, 0x5c, 0x8e, 0x0e, 0xa2, 0x3b, 0x64, 0x84, 0x80, 0xb5, 0x4e, 0xb9, 0x50,
0xf0, 0x35, 0xd8, 0x74, 0x1c, 0x19, 0x62, 0xc6, 0xe8, 0xc8, 0x5f, 0x32, 0xda, 0xdd, 0x59, 0x15,
0x3e, 0x5e, 0xd0, 0x3a, 0x3e, 0x42, 0x1b, 0x16, 0x38, 0xb2, 0x36, 0x7c, 0x01, 0x56, 0x14, 0x3f,
0xa3, 0xcc, 0x5f, 0x6e, 0x7b, 0x9d, 0xe6, 0xb3, 0xdd, 0xd8, 0xd6, 0x14, 0xeb, 0x9a, 0x62, 0x57,
0x53, 0x7c, 0xc4, 0x0b, 0x96, 0xd6, 0x2f, 0xab, 0xb0, 0x86, 0xac, 0x37, 0x3c, 0x01, 0x0d, 0x49,
0xd9, 0x80, 0x0a, 0xbf, 0xde, 0xf6, 0x3a, 0xeb, 0x69, 0xf7, 0x77, 0x15, 0xee, 0xe7, 0x85, 0x1a,
0x4e, 0xb2, 0x98, 0xf0, 0x32, 0x71, 0x9d, 0xb1, 0xc7, 0xbe, 0x1c, 0x9c, 0x25, 0xea, 0x62, 0x4c,
0x65, 0x7c, 0x48, 0xc8, 0xe1, 0x60, 0x20, 0xa8, 0x94, 0xc8, 0x05, 0x80, 0x2d, 0xb0, 0x2a, 0x28,
0xa1, 0xc5, 0x39, 0x15, 0xfe, 0x8a, 0xce, 0x1e, 0xcd, 0x6d, 0xf8, 0x11, 0x6c, 0xaa, 0xa2, 0xa4,
0x7c, 0xa2, 0xfa, 0x43, 0x5a, 0xe4, 0x43, 0xe5, 0x37, 0x4c, 0x9a, 0x30, 0xd6, 0xe3, 0x71, 0x3d,
0x7d, 0x67, 0x98, 0x74, 0x4f, 0xe7, 0x77, 0x5b, 0xf7, 0xa2, 0x2e, 0x42, 0x1b, 0x0e, 0xb0, 0xde,
0xf0, 0x04, 0x3c, 0xbc, 0xf1, 0xd0, 0xa7, 0x54, 0xb8, 0x1c, 0xfb, 0xf7, 0xda, 0x5e, 0xa7, 0x9e,
0x3e, 0x9d, 0x55, 0xa1, 0xbf, 0x18, 0x64, 0xee, 0x12, 0xa1, 0x07, 0x0e, 0xeb, 0xcd, 0xa1, 0xaf,
0x60, 0xe7, 0xed, 0x84, 0xe5, 0x45, 0x36, 0xa2, 0x3d, 0xdd, 0x9c, 0x53, 0x4c, 0xce, 0xa8, 0x3a,
0xc6, 0x0a, 0xc3, 0x2d, 0xb0, 0x32, 0xa0, 0x8c, 0x97, 0x76, 0xa4, 0xc8, 0x1a, 0x70, 0x1b, 0x34,
0x70, 0xc9, 0x27, 0x4c, 0x99, 0x69, 0xd5, 0x91, 0xb3, 0x34, 0xee, 0x9a, 0xba, 0x6c, 0xdc, 0xff,
0xd5, 0xa1, 0xfa, 0x62, 0x87, 0xa2, 0x57, 0x00, 0x1c, 0xeb, 0xa0, 0x3d, 0x81, 0x09, 0x85, 0x10,
0xd4, 0xc7, 0x58, 0x0d, 0xdd, 0x73, 0xe6, 0x0e, 0xf7, 0x00, 0xd0, 0xc3, 0xec, 0xdb, 0x44, 0xcc,
0x7e, 0xa0, 0x35, 0x8d, 0x18, 0x5d, 0xf4, 0xcd, 0x03, 0x8d, 0x53, 0x2c, 0x70, 0x29, 0xe1, 0x01,
0x58, 0xd7, 0x2f, 0xf6, 0x29, 0xc3, 0xd9, 0x88, 0x0e, 0x4c, 0x94, 0xd5, 0x74, 0x67, 0x56, 0x85,
0x8f, 0xdc, 0x2e, 0xdd, 0x61, 0x23, 0xd4, 0xd4, 0xe6, 0x1b, 0x6b, 0xc1, 0x23, 0x70, 0xdf, 0xe5,
0x34, 0x97, 0x2f, 0x19, 0x79, 0x6b, 0x56, 0x85, 0xdb, 0x56, 0xfe, 0x97, 0x43, 0x84, 0x36, 0x1d,
0xe2, 0x82, 0xa4, 0xef, 0x2f, 0xaf, 0x03, 0xef, 0xea, 0x3a, 0xf0, 0x7e, 0x5d, 0x07, 0xde, 0xf7,
0x69, 0x50, 0xbb, 0x9a, 0x06, 0xb5, 0x9f, 0xd3, 0xa0, 0xf6, 0xa9, 0xfb, 0xdf, 0xdd, 0xfa, 0x92,
0x14, 0x19, 0xd9, 0xbf, 0xfd, 0xca, 0x7a, 0xd5, 0xb2, 0x86, 0xf9, 0x6b, 0xcf, 0xff, 0x04, 0x00,
0x00, 0xff, 0xff, 0xf9, 0x9b, 0xd6, 0xb8, 0xe7, 0x03, 0x00, 0x00,
}
func (m *MsgTransfer) Marshal() (dAtA []byte, err error) {
@ -554,46 +497,6 @@ func (m *FungibleTokenPacketData) MarshalToSizedBuffer(dAtA []byte) (int, error)
return len(dAtA) - i, nil
}
func (m *FungibleTokenPacketAcknowledgement) 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 *FungibleTokenPacketAcknowledgement) MarshalTo(dAtA []byte) (int, error) {
size := m.Size()
return m.MarshalToSizedBuffer(dAtA[:size])
}
func (m *FungibleTokenPacketAcknowledgement) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i := len(dAtA)
_ = i
var l int
_ = l
if len(m.Error) > 0 {
i -= len(m.Error)
copy(dAtA[i:], m.Error)
i = encodeVarintTransfer(dAtA, i, uint64(len(m.Error)))
i--
dAtA[i] = 0x12
}
if m.Success {
i--
if m.Success {
dAtA[i] = 1
} else {
dAtA[i] = 0
}
i--
dAtA[i] = 0x8
}
return len(dAtA) - i, nil
}
func (m *DenomTrace) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
@ -741,22 +644,6 @@ func (m *FungibleTokenPacketData) Size() (n int) {
return n
}
func (m *FungibleTokenPacketAcknowledgement) Size() (n int) {
if m == nil {
return 0
}
var l int
_ = l
if m.Success {
n += 2
}
l = len(m.Error)
if l > 0 {
n += 1 + l + sovTransfer(uint64(l))
}
return n
}
func (m *DenomTrace) Size() (n int) {
if m == nil {
return 0
@ -1231,111 +1118,6 @@ func (m *FungibleTokenPacketData) Unmarshal(dAtA []byte) error {
}
return nil
}
func (m *FungibleTokenPacketAcknowledgement) 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 ErrIntOverflowTransfer
}
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: FungibleTokenPacketAcknowledgement: wiretype end group for non-group")
}
if fieldNum <= 0 {
return fmt.Errorf("proto: FungibleTokenPacketAcknowledgement: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1:
if wireType != 0 {
return fmt.Errorf("proto: wrong wireType = %d for field Success", wireType)
}
var v int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowTransfer
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
v |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
m.Success = bool(v != 0)
case 2:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Error", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowTransfer
}
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 ErrInvalidLengthTransfer
}
postIndex := iNdEx + intStringLen
if postIndex < 0 {
return ErrInvalidLengthTransfer
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.Error = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipTransfer(dAtA[iNdEx:])
if err != nil {
return err
}
if skippy < 0 {
return ErrInvalidLengthTransfer
}
if (iNdEx + skippy) < 0 {
return ErrInvalidLengthTransfer
}
if (iNdEx + skippy) > l {
return io.ErrUnexpectedEOF
}
iNdEx += skippy
}
}
if iNdEx > l {
return io.ErrUnexpectedEOF
}
return nil
}
func (m *DenomTrace) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0

View File

@ -1,6 +1,9 @@
package types
import (
"strings"
sdk "github.com/cosmos/cosmos-sdk/types"
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
host "github.com/cosmos/cosmos-sdk/x/ibc/24-host"
"github.com/cosmos/cosmos-sdk/x/ibc/exported"
@ -123,3 +126,45 @@ func (ic IdentifiedChannel) ValidateBasic() error {
channel := NewChannel(ic.State, ic.Ordering, ic.Counterparty, ic.ConnectionHops, ic.Version)
return channel.ValidateBasic()
}
// NewResultAcknowledgement returns a new instance of Acknowledgement using an Acknowledgement_Result
// type in the Response field.
func NewResultAcknowledgement(result []byte) Acknowledgement {
return Acknowledgement{
Response: &Acknowledgement_Result{
Result: result,
},
}
}
// NewErrorAcknowledgement returns a new instance of Acknowledgement using an Acknowledgement_Error
// type in the Response field.
func NewErrorAcknowledgement(err string) Acknowledgement {
return Acknowledgement{
Response: &Acknowledgement_Error{
Error: err,
},
}
}
// GetBytes is a helper for serialising acknowledgements
func (ack Acknowledgement) GetBytes() []byte {
return sdk.MustSortJSON(SubModuleCdc.MustMarshalJSON(&ack))
}
// ValidateBasic performs a basic validation of the acknowledgement
func (ack Acknowledgement) ValidateBasic() error {
switch resp := ack.Response.(type) {
case *Acknowledgement_Result:
if len(resp.Result) == 0 {
return sdkerrors.Wrap(ErrInvalidAcknowledgement, "acknowledgement result cannot be empty")
}
case *Acknowledgement_Error:
if strings.TrimSpace(resp.Error) == "" {
return sdkerrors.Wrap(ErrInvalidAcknowledgement, "acknowledgement error cannot be empty")
}
default:
return sdkerrors.Wrapf(ErrInvalidAcknowledgement, "unsupported acknowledgement response field type %T", resp)
}
return nil
}

View File

@ -429,7 +429,7 @@ func (m *MsgChannelOpenConfirm) GetSigner() github_com_cosmos_cosmos_sdk_types.A
return nil
}
// MsgChannelOpenConfirm defines a msg sent by a Relayer to Chain A
// MsgChannelCloseInit defines a msg sent by a Relayer to Chain A
// to close a channel with Chain B.
type MsgChannelCloseInit struct {
PortId string `protobuf:"bytes,1,opt,name=port_id,json=portId,proto3" json:"port_id,omitempty" yaml:"port_id"`
@ -887,8 +887,8 @@ type Channel struct {
Ordering Order `protobuf:"varint,2,opt,name=ordering,proto3,enum=ibc.channel.Order" json:"ordering,omitempty"`
// counterparty channel end
Counterparty Counterparty `protobuf:"bytes,3,opt,name=counterparty,proto3" json:"counterparty"`
// list of connection identifiers, in order, along which packets sent on this
// channel will travel
// list of connection identifiers, in order, along which packets sent on
// this channel will travel
ConnectionHops []string `protobuf:"bytes,4,rep,name=connection_hops,json=connectionHops,proto3" json:"connection_hops,omitempty" yaml:"connection_hops"`
// opaque channel version, which is agreed upon during the handshake
Version string `protobuf:"bytes,5,opt,name=version,proto3" json:"version,omitempty"`
@ -936,8 +936,8 @@ type IdentifiedChannel struct {
Ordering Order `protobuf:"varint,2,opt,name=ordering,proto3,enum=ibc.channel.Order" json:"ordering,omitempty"`
// counterparty channel end
Counterparty Counterparty `protobuf:"bytes,3,opt,name=counterparty,proto3" json:"counterparty"`
// list of connection identifiers, in order, along which packets sent on this
// channel will travel
// list of connection identifiers, in order, along which packets sent on
// this channel will travel
ConnectionHops []string `protobuf:"bytes,4,rep,name=connection_hops,json=connectionHops,proto3" json:"connection_hops,omitempty" yaml:"connection_hops"`
// opaque channel version, which is agreed upon during the handshake
Version string `protobuf:"bytes,5,opt,name=version,proto3" json:"version,omitempty"`
@ -1023,9 +1023,9 @@ var xxx_messageInfo_Counterparty proto.InternalMessageInfo
// Packet defines a type that carries data across different chains through IBC
type Packet struct {
// number corresponds to the order of sends and receives, where a Packet with
// an earlier sequence number must be sent and received before a Packet with a
// later sequence number.
// number corresponds to the order of sends and receives, where a Packet
// with an earlier sequence number must be sent and received before a Packet
// with a later sequence number.
Sequence uint64 `protobuf:"varint,1,opt,name=sequence,proto3" json:"sequence,omitempty"`
// identifies the port on the sending chain.
SourcePort string `protobuf:"bytes,2,opt,name=source_port,json=sourcePort,proto3" json:"source_port,omitempty" yaml:"source_port"`
@ -1122,6 +1122,100 @@ func (m *PacketAckCommitment) XXX_DiscardUnknown() {
var xxx_messageInfo_PacketAckCommitment proto.InternalMessageInfo
// Acknowledgement is the recommended acknowledgement format to be used by
// app-specifc protocols.
// NOTE: The field numbers 21 and 22 were explicitly chosen to avoid accidental
// conflicts with other protobuf message formats used for acknowledgements.
// The first byte of any message with this format will be the non-ASCII values
// `0xaa` (result) or `0xb2` (error). Implemented as defined by ICS:
// https://github.com/cosmos/ics/tree/master/spec/ics-004-channel-and-packet-semantics#acknowledgement-envelope
type Acknowledgement struct {
// response contains either a result or an error and must be non-empty
//
// Types that are valid to be assigned to Response:
// *Acknowledgement_Result
// *Acknowledgement_Error
Response isAcknowledgement_Response `protobuf_oneof:"response"`
}
func (m *Acknowledgement) Reset() { *m = Acknowledgement{} }
func (m *Acknowledgement) String() string { return proto.CompactTextString(m) }
func (*Acknowledgement) ProtoMessage() {}
func (*Acknowledgement) Descriptor() ([]byte, []int) {
return fileDescriptor_9277922ccfb7f043, []int{15}
}
func (m *Acknowledgement) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
}
func (m *Acknowledgement) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
if deterministic {
return xxx_messageInfo_Acknowledgement.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 *Acknowledgement) XXX_Merge(src proto.Message) {
xxx_messageInfo_Acknowledgement.Merge(m, src)
}
func (m *Acknowledgement) XXX_Size() int {
return m.Size()
}
func (m *Acknowledgement) XXX_DiscardUnknown() {
xxx_messageInfo_Acknowledgement.DiscardUnknown(m)
}
var xxx_messageInfo_Acknowledgement proto.InternalMessageInfo
type isAcknowledgement_Response interface {
isAcknowledgement_Response()
MarshalTo([]byte) (int, error)
Size() int
}
type Acknowledgement_Result struct {
Result []byte `protobuf:"bytes,21,opt,name=result,proto3,oneof" json:"result,omitempty"`
}
type Acknowledgement_Error struct {
Error string `protobuf:"bytes,22,opt,name=error,proto3,oneof" json:"error,omitempty"`
}
func (*Acknowledgement_Result) isAcknowledgement_Response() {}
func (*Acknowledgement_Error) isAcknowledgement_Response() {}
func (m *Acknowledgement) GetResponse() isAcknowledgement_Response {
if m != nil {
return m.Response
}
return nil
}
func (m *Acknowledgement) GetResult() []byte {
if x, ok := m.GetResponse().(*Acknowledgement_Result); ok {
return x.Result
}
return nil
}
func (m *Acknowledgement) GetError() string {
if x, ok := m.GetResponse().(*Acknowledgement_Error); ok {
return x.Error
}
return ""
}
// XXX_OneofWrappers is for the internal use of the proto package.
func (*Acknowledgement) XXX_OneofWrappers() []interface{} {
return []interface{}{
(*Acknowledgement_Result)(nil),
(*Acknowledgement_Error)(nil),
}
}
func init() {
proto.RegisterEnum("ibc.channel.State", State_name, State_value)
proto.RegisterEnum("ibc.channel.Order", Order_name, Order_value)
@ -1140,96 +1234,99 @@ func init() {
proto.RegisterType((*Counterparty)(nil), "ibc.channel.Counterparty")
proto.RegisterType((*Packet)(nil), "ibc.channel.Packet")
proto.RegisterType((*PacketAckCommitment)(nil), "ibc.channel.PacketAckCommitment")
proto.RegisterType((*Acknowledgement)(nil), "ibc.channel.Acknowledgement")
}
func init() { proto.RegisterFile("ibc/channel/channel.proto", fileDescriptor_9277922ccfb7f043) }
var fileDescriptor_9277922ccfb7f043 = []byte{
// 1330 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x58, 0xcd, 0x6b, 0x1b, 0x47,
0x14, 0xd7, 0xea, 0xd3, 0x7a, 0xfe, 0x92, 0xc7, 0x8e, 0x23, 0x2b, 0x89, 0x56, 0x2c, 0x3d, 0x98,
0x94, 0xc8, 0xcd, 0x07, 0x2d, 0xe4, 0x54, 0x49, 0x56, 0x88, 0x68, 0x2c, 0x99, 0xb1, 0x52, 0xda,
0x5c, 0xc4, 0x7a, 0x35, 0x91, 0x16, 0x59, 0x3b, 0xea, 0xee, 0x38, 0x89, 0x8f, 0xbd, 0x05, 0x43,
0xa1, 0x7f, 0x40, 0x0d, 0x85, 0x42, 0x8f, 0xbd, 0xf6, 0x5c, 0x7a, 0xc9, 0xa1, 0xd0, 0x5c, 0x0a,
0x3d, 0x2d, 0x25, 0xf9, 0x0f, 0x74, 0x49, 0xe9, 0xa9, 0xec, 0xcc, 0xac, 0xb4, 0x2b, 0x3b, 0x39,
0x44, 0xae, 0xf0, 0xa1, 0xa7, 0x9d, 0x79, 0xef, 0x37, 0x33, 0xef, 0xfd, 0xde, 0x9b, 0x37, 0x4f,
0x82, 0x0d, 0x73, 0xdf, 0xd8, 0x32, 0xba, 0xba, 0x65, 0x91, 0x03, 0xff, 0x5b, 0x1c, 0xd8, 0x94,
0x51, 0x34, 0x6f, 0xee, 0x1b, 0x45, 0x29, 0xca, 0xad, 0x75, 0x68, 0x87, 0x72, 0xf9, 0x96, 0x37,
0x12, 0x90, 0xdc, 0x65, 0xbe, 0xfa, 0xc0, 0x24, 0x16, 0x93, 0x1f, 0xa1, 0xd0, 0xfe, 0x56, 0x00,
// 1373 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x58, 0x3b, 0x6f, 0x1b, 0x47,
0x10, 0xe6, 0xf1, 0x29, 0x8e, 0x5e, 0xd4, 0xea, 0x61, 0x8a, 0xb6, 0x79, 0xc4, 0x21, 0x85, 0xe0,
0xc0, 0x54, 0xfc, 0x40, 0x02, 0xb8, 0x0a, 0x49, 0xd1, 0x10, 0x11, 0x8b, 0x14, 0x56, 0x74, 0x90,
0xb8, 0x21, 0x4e, 0xc7, 0x35, 0x79, 0xa0, 0x78, 0xcb, 0xdc, 0xad, 0x6c, 0xab, 0x4c, 0x67, 0x08,
0x08, 0x90, 0x1f, 0x10, 0x01, 0x01, 0x02, 0xa4, 0x4c, 0x9b, 0x3a, 0x48, 0xe3, 0x22, 0x40, 0xdc,
0x04, 0x48, 0x75, 0x08, 0xec, 0x7f, 0xc0, 0xc6, 0x41, 0xaa, 0xe0, 0x76, 0xf7, 0xc8, 0x3b, 0x4a,
0x76, 0x61, 0x2a, 0x82, 0x8a, 0x54, 0x77, 0x33, 0xf3, 0xed, 0xee, 0xcc, 0x37, 0x73, 0xb3, 0x43,
0xc2, 0xba, 0xb9, 0x6f, 0x6c, 0x1a, 0x5d, 0xdd, 0xb2, 0xc8, 0x81, 0xff, 0x2c, 0x0e, 0x6c, 0xca,
0x28, 0x9a, 0x35, 0xf7, 0x8d, 0xa2, 0x54, 0xe5, 0x56, 0x3a, 0xb4, 0x43, 0xb9, 0x7e, 0xd3, 0x7b,
0x13, 0x90, 0xdc, 0x15, 0xbe, 0xfa, 0xc0, 0x24, 0x16, 0x93, 0x0f, 0x61, 0xd0, 0xfe, 0x56, 0x00,
0xed, 0x38, 0x9d, 0x8a, 0x58, 0xdd, 0x18, 0x10, 0xab, 0x66, 0x99, 0x0c, 0x7d, 0x08, 0xa9, 0x01,
0xb5, 0x59, 0xcb, 0x6c, 0x67, 0x95, 0x82, 0xb2, 0x99, 0x2e, 0xa3, 0xa1, 0xab, 0x2e, 0x1d, 0xe9,
0xfd, 0x83, 0xbb, 0x9a, 0x54, 0x68, 0x38, 0xe9, 0x8d, 0x6a, 0x6d, 0x74, 0x07, 0x40, 0x9e, 0xee,
0xe1, 0xa3, 0x1c, 0x7f, 0x69, 0xe8, 0xaa, 0x2b, 0x02, 0x3f, 0xd6, 0x69, 0x38, 0x2d, 0x27, 0x7c,
0x55, 0x4a, 0x4e, 0xb2, 0xb1, 0x82, 0xb2, 0x39, 0x7f, 0x6b, 0xad, 0x18, 0xf0, 0xa3, 0x28, 0x2d,
0x2a, 0xc7, 0x5f, 0xb8, 0x6a, 0x04, 0xfb, 0x50, 0x54, 0x83, 0xa4, 0x63, 0x76, 0x2c, 0x62, 0x67,
0xe3, 0x05, 0x65, 0x73, 0xa1, 0x7c, 0xf3, 0x1f, 0x57, 0xbd, 0xd1, 0x31, 0x59, 0xf7, 0x70, 0xbf,
0x68, 0xd0, 0xfe, 0x96, 0x41, 0x9d, 0x3e, 0x75, 0xe4, 0xe7, 0x86, 0xd3, 0xee, 0x6d, 0xb1, 0xa3,
0x01, 0x71, 0x8a, 0x25, 0xc3, 0x28, 0xb5, 0xdb, 0x36, 0x71, 0x1c, 0x2c, 0x37, 0xd0, 0xfe, 0x88,
0xc1, 0x4a, 0xd8, 0xf5, 0xa6, 0x7d, 0x74, 0x71, 0x3d, 0xc7, 0xb0, 0x66, 0xd0, 0x43, 0x8b, 0x11,
0x7b, 0xa0, 0xdb, 0xec, 0xa8, 0xf5, 0x84, 0xd8, 0x8e, 0x49, 0x2d, 0xce, 0x43, 0xba, 0xac, 0x0e,
0x5d, 0xf5, 0x8a, 0x3c, 0xf5, 0x0c, 0x94, 0x86, 0x57, 0x83, 0xe2, 0xcf, 0x85, 0xd4, 0xb3, 0x7f,
0x60, 0x53, 0xfa, 0xb8, 0x65, 0x5a, 0x26, 0xcb, 0x26, 0x38, 0xa3, 0x01, 0xfb, 0xc7, 0x3a, 0x0d,
0xa7, 0xf9, 0x84, 0x27, 0x07, 0x86, 0x05, 0xa1, 0xe9, 0x12, 0xb3, 0xd3, 0x65, 0xd9, 0x24, 0x77,
0x02, 0x09, 0x27, 0x44, 0x72, 0xdd, 0xe7, 0x9a, 0xf2, 0x15, 0xcf, 0x85, 0xa1, 0xab, 0xae, 0x06,
0xf7, 0x13, 0xab, 0x34, 0x3c, 0xcf, 0xa7, 0x02, 0x19, 0x88, 0x6b, 0x6a, 0xda, 0xb8, 0x7e, 0x77,
0x2a, 0xae, 0x25, 0xa3, 0x37, 0x8b, 0xb8, 0xbe, 0x2d, 0x42, 0xb1, 0x29, 0x22, 0x74, 0x13, 0x04,
0xf1, 0x2d, 0x66, 0x1f, 0xc9, 0x94, 0x5f, 0x1b, 0xba, 0x6a, 0x26, 0x48, 0x28, 0xb3, 0x8f, 0x34,
0x3c, 0xc7, 0xc7, 0x5e, 0x06, 0x4f, 0x86, 0x27, 0x71, 0xae, 0xe1, 0x49, 0x4e, 0x1b, 0x9e, 0xdf,
0xa2, 0x70, 0x29, 0x1c, 0x9e, 0x0a, 0xb5, 0x1e, 0x9b, 0x76, 0x7f, 0x16, 0x21, 0x1a, 0xd1, 0xa9,
0x1b, 0x3d, 0x1e, 0x97, 0x33, 0xe8, 0xd4, 0x8d, 0x9e, 0x4f, 0xa7, 0x97, 0x38, 0x93, 0x74, 0xc6,
0xcf, 0x95, 0xce, 0xc4, 0xb4, 0x74, 0xfe, 0xaa, 0xc0, 0xea, 0x98, 0xce, 0xca, 0x01, 0x75, 0xc8,
0xac, 0x2a, 0xf8, 0xd8, 0x8b, 0xd8, 0xb4, 0x5e, 0xbc, 0x8c, 0xc2, 0xfa, 0x84, 0x17, 0x33, 0xcc,
0x8a, 0x70, 0x19, 0x8c, 0xbd, 0x67, 0x19, 0xbc, 0x60, 0x89, 0xf1, 0x46, 0x81, 0xc5, 0x1d, 0xa7,
0x83, 0x89, 0xf1, 0x64, 0x57, 0x37, 0x7a, 0x84, 0xa1, 0x9b, 0x90, 0x1c, 0xf0, 0x11, 0x27, 0x72,
0xfe, 0xd6, 0x6a, 0xe8, 0xd9, 0x11, 0x20, 0xf9, 0xea, 0x48, 0x20, 0x5a, 0x83, 0x04, 0x37, 0x8f,
0x53, 0xb9, 0x80, 0xc5, 0xe4, 0x94, 0xe7, 0xb1, 0x73, 0xf5, 0x7c, 0xea, 0x87, 0xfd, 0x97, 0x28,
0xc0, 0x8e, 0xd3, 0x69, 0x9a, 0x7d, 0x42, 0x0f, 0x2f, 0xb8, 0xdb, 0x9f, 0x01, 0xb2, 0xc8, 0x33,
0xd6, 0x72, 0xc8, 0x57, 0x87, 0xc4, 0x32, 0x48, 0xcb, 0x26, 0xc6, 0x13, 0x4e, 0x41, 0xbc, 0x7c,
0x6d, 0xe8, 0xaa, 0x1b, 0x62, 0x87, 0xd3, 0x18, 0x0d, 0x67, 0x3c, 0xe1, 0x9e, 0x94, 0x79, 0x61,
0x3e, 0xcf, 0xec, 0xf9, 0x5a, 0x3c, 0xa2, 0x92, 0xc3, 0x86, 0xc5, 0xaf, 0xe4, 0xf9, 0x51, 0xf9,
0x09, 0x08, 0x16, 0x5a, 0x86, 0xb7, 0xaf, 0xbc, 0x72, 0xeb, 0x43, 0x57, 0x45, 0x41, 0xc6, 0xb8,
0x52, 0xc3, 0xe2, 0x72, 0x0a, 0x0b, 0xfe, 0x8b, 0x4b, 0x77, 0x76, 0x0c, 0x12, 0xd3, 0xc6, 0x60,
0xea, 0x97, 0xf2, 0xc7, 0x28, 0xef, 0xcd, 0x4b, 0x46, 0xcf, 0xa2, 0x4f, 0x0f, 0x48, 0xbb, 0x43,
0xfa, 0xc4, 0x7a, 0xaf, 0x7c, 0xde, 0x84, 0x65, 0x3d, 0xbc, 0x8b, 0x0c, 0xc7, 0xa4, 0x78, 0x1c,
0xae, 0xd8, 0xbb, 0x32, 0xff, 0x82, 0x95, 0xba, 0x6f, 0xa2, 0x90, 0x92, 0x4f, 0x07, 0xda, 0x84,
0x84, 0xc3, 0x74, 0x46, 0x38, 0x39, 0x4b, 0xbe, 0x8d, 0x92, 0x9c, 0x3d, 0x4f, 0x83, 0x05, 0x00,
0x15, 0x61, 0x8e, 0xda, 0x6d, 0x62, 0x9b, 0x56, 0x87, 0xb3, 0x31, 0x09, 0x6e, 0x78, 0x4a, 0x3c,
0xc2, 0xa0, 0x0a, 0x2c, 0x04, 0x3b, 0x34, 0x79, 0xfd, 0x37, 0xc2, 0xbd, 0x7b, 0x00, 0x20, 0x63,
0x10, 0x5a, 0x84, 0x2a, 0xb0, 0x6c, 0x50, 0xcb, 0x22, 0x06, 0x33, 0xa9, 0xd5, 0xea, 0xd2, 0x81,
0x93, 0x8d, 0x17, 0x62, 0x9b, 0xe9, 0x72, 0x6e, 0xe8, 0xaa, 0xeb, 0x7e, 0x7b, 0x18, 0x02, 0x68,
0x78, 0x69, 0x2c, 0xb9, 0x4f, 0x07, 0x0e, 0xca, 0x42, 0xca, 0xef, 0x2d, 0x3d, 0xee, 0xd2, 0xd8,
0x9f, 0xde, 0x8d, 0x3f, 0xff, 0x5e, 0x8d, 0x68, 0xbf, 0x47, 0x61, 0xa5, 0xd6, 0x26, 0x16, 0x33,
0x1f, 0x9b, 0xa4, 0xfd, 0x3f, 0x33, 0x5e, 0x23, 0x7d, 0x79, 0xdc, 0x46, 0x24, 0xb9, 0xc6, 0x6f,
0x19, 0xae, 0x85, 0x5a, 0x86, 0x14, 0xd7, 0x8d, 0x7b, 0x03, 0xc9, 0xe8, 0x53, 0x58, 0x08, 0x3a,
0x30, 0x83, 0xa6, 0x44, 0x1e, 0xfc, 0x26, 0x06, 0x49, 0xf9, 0x7c, 0xe7, 0x60, 0xce, 0xaf, 0x3e,
0xfc, 0xd0, 0x38, 0x1e, 0xcd, 0xbd, 0x7a, 0xea, 0xd0, 0x43, 0xdb, 0x20, 0x2d, 0xef, 0x4c, 0x79,
0x46, 0xa0, 0x9e, 0x06, 0x94, 0x1a, 0x06, 0x31, 0xdb, 0xa5, 0x36, 0x43, 0x9f, 0xc2, 0x92, 0xd4,
0x05, 0x7f, 0x92, 0xa6, 0xcb, 0x1b, 0x43, 0x57, 0xbd, 0x14, 0x5a, 0x2b, 0xf5, 0x1a, 0x5e, 0x14,
0x02, 0x3f, 0xad, 0xee, 0x41, 0xa6, 0x4d, 0x1c, 0x66, 0x5a, 0x3a, 0x8f, 0x0b, 0x3f, 0x5f, 0xfc,
0x26, 0xbd, 0x32, 0x74, 0xd5, 0xcb, 0x62, 0x8f, 0x49, 0x84, 0x86, 0x97, 0x03, 0x22, 0x6e, 0x49,
0x03, 0x56, 0x83, 0x28, 0xdf, 0x1c, 0x1e, 0xc6, 0x72, 0x7e, 0xe8, 0xaa, 0xb9, 0xd3, 0x5b, 0x8d,
0x6c, 0x42, 0x01, 0xa9, 0x6f, 0x18, 0x82, 0x78, 0x5b, 0x67, 0xba, 0xa8, 0xc3, 0x98, 0x8f, 0xd1,
0x17, 0xb0, 0xc4, 0xc4, 0x93, 0xe6, 0x97, 0xb2, 0xd4, 0x5b, 0x4b, 0xd9, 0x35, 0x59, 0xca, 0x24,
0x0d, 0xe1, 0x75, 0x1a, 0x5e, 0x94, 0x82, 0x51, 0x39, 0x5b, 0xf1, 0x11, 0xde, 0xd7, 0x61, 0x7a,
0x7f, 0x90, 0x9d, 0xe3, 0x6f, 0xc8, 0xd5, 0xa1, 0xab, 0x66, 0xc3, 0x9b, 0x8c, 0x20, 0x1a, 0xce,
0x48, 0x59, 0xd3, 0x17, 0xc9, 0xc8, 0xff, 0xa4, 0xc0, 0xaa, 0x88, 0x7c, 0xc9, 0xe8, 0x55, 0x68,
0xbf, 0x6f, 0x32, 0x5e, 0xa1, 0x67, 0xd0, 0x0f, 0x07, 0x33, 0x2d, 0x36, 0x91, 0x69, 0x08, 0xe2,
0x5d, 0xdd, 0xe9, 0x8a, 0x2e, 0x0d, 0xf3, 0xb1, 0x30, 0xf8, 0xfa, 0xcf, 0x0a, 0x24, 0x78, 0x19,
0x41, 0x1f, 0x83, 0xba, 0xd7, 0x2c, 0x35, 0xab, 0xad, 0x87, 0xf5, 0x5a, 0xbd, 0xd6, 0xac, 0x95,
0x1e, 0xd4, 0x1e, 0x55, 0xb7, 0x5b, 0x0f, 0xeb, 0x7b, 0xbb, 0xd5, 0x4a, 0xed, 0x5e, 0xad, 0xba,
0x9d, 0x89, 0xe4, 0x56, 0x8e, 0x4f, 0x0a, 0x8b, 0x21, 0x00, 0xca, 0x02, 0x88, 0x75, 0x9e, 0x30,
0xa3, 0xe4, 0xe6, 0x8e, 0x4f, 0x0a, 0x71, 0x6f, 0x8c, 0xf2, 0xb0, 0x28, 0x34, 0x4d, 0xfc, 0x65,
0x63, 0xb7, 0x5a, 0xcf, 0x44, 0x73, 0xf3, 0xc7, 0x27, 0x85, 0x94, 0x9c, 0x8e, 0x57, 0x72, 0x65,
0x4c, 0xac, 0xe4, 0x9a, 0xab, 0xb0, 0x20, 0x34, 0x95, 0x07, 0x8d, 0xbd, 0xea, 0x76, 0x26, 0x9e,
0x83, 0xe3, 0x93, 0x42, 0x52, 0xcc, 0x72, 0xf1, 0xe7, 0x3f, 0xe4, 0x23, 0xd7, 0x9f, 0x42, 0x82,
0x97, 0x34, 0xf4, 0x01, 0xac, 0x37, 0xf0, 0x76, 0x15, 0xb7, 0xea, 0x8d, 0x7a, 0x75, 0xc2, 0x5e,
0xbe, 0xa5, 0x27, 0x47, 0x1a, 0x2c, 0x0b, 0xd4, 0xc3, 0x3a, 0xff, 0x56, 0xb7, 0x33, 0x4a, 0x6e,
0xf1, 0xf8, 0xa4, 0x90, 0x1e, 0x09, 0x3c, 0x83, 0x05, 0xc6, 0x47, 0x48, 0x83, 0xe5, 0x54, 0x1c,
0x5c, 0xde, 0x79, 0xf1, 0x2a, 0xaf, 0xbc, 0x7c, 0x95, 0x57, 0xfe, 0x7a, 0x95, 0x57, 0xbe, 0x7d,
0x9d, 0x8f, 0xbc, 0x7c, 0x9d, 0x8f, 0xfc, 0xf9, 0x3a, 0x1f, 0x79, 0x74, 0xfb, 0x9d, 0x2f, 0xe1,
0xb3, 0x2d, 0x73, 0xdf, 0xd8, 0xfa, 0xe8, 0xce, 0x0d, 0xff, 0x0f, 0x41, 0xfe, 0x34, 0xee, 0x27,
0xf9, 0x7f, 0x7a, 0xb7, 0xff, 0x0d, 0x00, 0x00, 0xff, 0xff, 0xb5, 0x07, 0x62, 0x39, 0x2c, 0x14,
0x00, 0x00,
0xb5, 0x59, 0xcb, 0x6c, 0x67, 0x95, 0x82, 0xb2, 0x91, 0x2e, 0xa3, 0xa1, 0xab, 0x2e, 0x1c, 0xe9,
0xfd, 0x83, 0x7b, 0x9a, 0x34, 0x68, 0x38, 0xe9, 0xbd, 0xd5, 0xda, 0xe8, 0x2e, 0x80, 0x3c, 0xdd,
0xc3, 0x47, 0x39, 0x7e, 0x75, 0xe8, 0xaa, 0x4b, 0x02, 0x3f, 0xb6, 0x69, 0x38, 0x2d, 0x05, 0xbe,
0x2a, 0x25, 0x85, 0x6c, 0xac, 0xa0, 0x6c, 0xcc, 0xde, 0x5e, 0x29, 0x06, 0xe2, 0x28, 0x4a, 0x8f,
0xca, 0xf1, 0x17, 0xae, 0x1a, 0xc1, 0x3e, 0x14, 0xd5, 0x20, 0xe9, 0x98, 0x1d, 0x8b, 0xd8, 0xd9,
0x78, 0x41, 0xd9, 0x98, 0x2b, 0xdf, 0xfa, 0xc7, 0x55, 0x6f, 0x76, 0x4c, 0xd6, 0x3d, 0xdc, 0x2f,
0x1a, 0xb4, 0xbf, 0x69, 0x50, 0xa7, 0x4f, 0x1d, 0xf9, 0xb8, 0xe9, 0xb4, 0x7b, 0x9b, 0xec, 0x68,
0x40, 0x9c, 0x62, 0xc9, 0x30, 0x4a, 0xed, 0xb6, 0x4d, 0x1c, 0x07, 0xcb, 0x0d, 0xb4, 0x3f, 0x62,
0xb0, 0x14, 0x0e, 0xbd, 0x69, 0x1f, 0x5d, 0xde, 0xc8, 0x31, 0xac, 0x18, 0xf4, 0xd0, 0x62, 0xc4,
0x1e, 0xe8, 0x36, 0x3b, 0x6a, 0x3d, 0x21, 0xb6, 0x63, 0x52, 0x8b, 0xf3, 0x90, 0x2e, 0xab, 0x43,
0x57, 0xbd, 0x2a, 0x4f, 0x3d, 0x03, 0xa5, 0xe1, 0xe5, 0xa0, 0xfa, 0x73, 0xa1, 0xf5, 0xfc, 0x1f,
0xd8, 0x94, 0x3e, 0x6e, 0x99, 0x96, 0xc9, 0xb2, 0x09, 0xce, 0x68, 0xc0, 0xff, 0xb1, 0x4d, 0xc3,
0x69, 0x2e, 0xf0, 0xe2, 0xc0, 0x30, 0x27, 0x2c, 0x5d, 0x62, 0x76, 0xba, 0x2c, 0x9b, 0xe4, 0x41,
0x20, 0x11, 0x84, 0x28, 0xae, 0x6d, 0x6e, 0x29, 0x5f, 0xf5, 0x42, 0x18, 0xba, 0xea, 0x72, 0x70,
0x3f, 0xb1, 0x4a, 0xc3, 0xb3, 0x5c, 0x14, 0xc8, 0x40, 0x5e, 0x53, 0xd3, 0xe6, 0xf5, 0xbb, 0x53,
0x79, 0x2d, 0x19, 0xbd, 0x8b, 0xc8, 0xeb, 0xdb, 0x32, 0x14, 0x9b, 0x22, 0x43, 0xb7, 0x40, 0x10,
0xdf, 0x62, 0xf6, 0x91, 0x2c, 0xf9, 0x95, 0xa1, 0xab, 0x66, 0x82, 0x84, 0x32, 0xfb, 0x48, 0xc3,
0x33, 0xfc, 0xdd, 0xab, 0xe0, 0xc9, 0xf4, 0x24, 0xce, 0x35, 0x3d, 0xc9, 0x69, 0xd3, 0xf3, 0x5b,
0x14, 0x56, 0xc3, 0xe9, 0xa9, 0x50, 0xeb, 0xb1, 0x69, 0xf7, 0x2f, 0x22, 0x45, 0x23, 0x3a, 0x75,
0xa3, 0xc7, 0xf3, 0x72, 0x06, 0x9d, 0xba, 0xd1, 0xf3, 0xe9, 0xf4, 0x0a, 0x67, 0x92, 0xce, 0xf8,
0xb9, 0xd2, 0x99, 0x98, 0x96, 0xce, 0x5f, 0x15, 0x58, 0x1e, 0xd3, 0x59, 0x39, 0xa0, 0x0e, 0xb9,
0xa8, 0x0e, 0x3e, 0x8e, 0x22, 0x36, 0x6d, 0x14, 0x2f, 0xa3, 0xb0, 0x36, 0x11, 0xc5, 0x05, 0x56,
0x45, 0xb8, 0x0d, 0xc6, 0xde, 0xb3, 0x0d, 0x5e, 0xb2, 0xc2, 0x78, 0xa3, 0xc0, 0xfc, 0x8e, 0xd3,
0xc1, 0xc4, 0x78, 0xb2, 0xab, 0x1b, 0x3d, 0xc2, 0xd0, 0x2d, 0x48, 0x0e, 0xf8, 0x1b, 0x27, 0x72,
0xf6, 0xf6, 0x72, 0xe8, 0xda, 0x11, 0x20, 0x79, 0xeb, 0x48, 0x20, 0x5a, 0x81, 0x04, 0x77, 0x8f,
0x53, 0x39, 0x87, 0x85, 0x70, 0x2a, 0xf2, 0xd8, 0xb9, 0x46, 0x3e, 0xf5, 0xc5, 0xfe, 0x4b, 0x14,
0x60, 0xc7, 0xe9, 0x34, 0xcd, 0x3e, 0xa1, 0x87, 0x97, 0x3c, 0xec, 0xcf, 0x00, 0x59, 0xe4, 0x19,
0x6b, 0x39, 0xe4, 0xab, 0x43, 0x62, 0x19, 0xa4, 0x65, 0x13, 0xe3, 0x09, 0xa7, 0x20, 0x5e, 0xbe,
0x3e, 0x74, 0xd5, 0x75, 0xb1, 0xc3, 0x69, 0x8c, 0x86, 0x33, 0x9e, 0x72, 0x4f, 0xea, 0xbc, 0x34,
0x9f, 0x67, 0xf5, 0x7c, 0x2d, 0x2e, 0x51, 0xc9, 0x61, 0xc3, 0xe2, 0x9f, 0xe4, 0xf9, 0x51, 0xf9,
0x09, 0x08, 0x16, 0x5a, 0x86, 0xb7, 0xaf, 0xfc, 0xe4, 0xd6, 0x86, 0xae, 0x8a, 0x82, 0x8c, 0x71,
0xa3, 0x86, 0xc5, 0xc7, 0x29, 0x3c, 0xf8, 0x2f, 0x3e, 0xba, 0xb3, 0x73, 0x90, 0x98, 0x36, 0x07,
0x53, 0xdf, 0x94, 0x3f, 0x46, 0xf9, 0x6c, 0x5e, 0x32, 0x7a, 0x16, 0x7d, 0x7a, 0x40, 0xda, 0x1d,
0xd2, 0x27, 0xd6, 0x7b, 0xd5, 0xf3, 0x06, 0x2c, 0xea, 0xe1, 0x5d, 0x64, 0x3a, 0x26, 0xd5, 0xe3,
0x74, 0xc5, 0xde, 0x55, 0xf9, 0x97, 0xac, 0xd5, 0x7d, 0x13, 0x85, 0x94, 0xbc, 0x3a, 0xd0, 0x06,
0x24, 0x1c, 0xa6, 0x33, 0xc2, 0xc9, 0x59, 0xf0, 0x7d, 0x94, 0xe4, 0xec, 0x79, 0x16, 0x2c, 0x00,
0xa8, 0x08, 0x33, 0xd4, 0x6e, 0x13, 0xdb, 0xb4, 0x3a, 0x9c, 0x8d, 0x49, 0x70, 0xc3, 0x33, 0xe2,
0x11, 0x06, 0x55, 0x60, 0x2e, 0x38, 0xa1, 0xc9, 0xcf, 0x7f, 0x3d, 0x3c, 0xbb, 0x07, 0x00, 0x32,
0x07, 0xa1, 0x45, 0xa8, 0x02, 0x8b, 0x06, 0xb5, 0x2c, 0x62, 0x30, 0x93, 0x5a, 0xad, 0x2e, 0x1d,
0x38, 0xd9, 0x78, 0x21, 0xb6, 0x91, 0x2e, 0xe7, 0x86, 0xae, 0xba, 0xe6, 0x8f, 0x87, 0x21, 0x80,
0x86, 0x17, 0xc6, 0x9a, 0x6d, 0x3a, 0x70, 0x50, 0x16, 0x52, 0xfe, 0x6c, 0xe9, 0x71, 0x97, 0xc6,
0xbe, 0x78, 0x2f, 0xfe, 0xfc, 0x7b, 0x35, 0xa2, 0xfd, 0x1e, 0x85, 0xa5, 0x5a, 0x9b, 0x58, 0xcc,
0x7c, 0x6c, 0x92, 0xf6, 0xff, 0xcc, 0x78, 0x83, 0xf4, 0x95, 0xf1, 0x18, 0x91, 0xe4, 0x16, 0x7f,
0x64, 0xb8, 0x1e, 0x1a, 0x19, 0x52, 0xdc, 0x36, 0x9e, 0x0d, 0x24, 0xa3, 0x4f, 0x61, 0x2e, 0x18,
0xc0, 0x05, 0x0c, 0x25, 0xf2, 0xe0, 0x37, 0x31, 0x48, 0xca, 0xeb, 0x3b, 0x07, 0x33, 0x7e, 0xf7,
0xe1, 0x87, 0xc6, 0xf1, 0x48, 0xf6, 0xfa, 0xa9, 0x43, 0x0f, 0x6d, 0x83, 0xb4, 0xbc, 0x33, 0xe5,
0x19, 0x81, 0x7e, 0x1a, 0x30, 0x6a, 0x18, 0x84, 0xb4, 0x4b, 0x6d, 0x86, 0x3e, 0x85, 0x05, 0x69,
0x0b, 0xfe, 0x24, 0x4d, 0x97, 0xd7, 0x87, 0xae, 0xba, 0x1a, 0x5a, 0x2b, 0xed, 0x1a, 0x9e, 0x17,
0x0a, 0xbf, 0xac, 0xee, 0x43, 0xa6, 0x4d, 0x1c, 0x66, 0x5a, 0x3a, 0xcf, 0x0b, 0x3f, 0x5f, 0xfc,
0x26, 0xbd, 0x3a, 0x74, 0xd5, 0x2b, 0x62, 0x8f, 0x49, 0x84, 0x86, 0x17, 0x03, 0x2a, 0xee, 0x49,
0x03, 0x96, 0x83, 0x28, 0xdf, 0x1d, 0x9e, 0xc6, 0x72, 0x7e, 0xe8, 0xaa, 0xb9, 0xd3, 0x5b, 0x8d,
0x7c, 0x42, 0x01, 0xad, 0xef, 0x18, 0x82, 0x78, 0x5b, 0x67, 0xba, 0xe8, 0xc3, 0x98, 0xbf, 0xa3,
0x2f, 0x60, 0x81, 0x89, 0x2b, 0xcd, 0x6f, 0x65, 0xa9, 0xb7, 0xb6, 0xb2, 0xeb, 0xb2, 0x95, 0x49,
0x1a, 0xc2, 0xeb, 0x34, 0x3c, 0x2f, 0x15, 0xa3, 0x76, 0xb6, 0xe4, 0x23, 0xbc, 0xa7, 0xc3, 0xf4,
0xfe, 0x20, 0x3b, 0xc3, 0xef, 0x90, 0x6b, 0x43, 0x57, 0xcd, 0x86, 0x37, 0x19, 0x41, 0x34, 0x9c,
0x91, 0xba, 0xa6, 0xaf, 0x92, 0x99, 0xff, 0x49, 0x81, 0x65, 0x91, 0xf9, 0x92, 0xd1, 0xab, 0xd0,
0x7e, 0xdf, 0x64, 0xbc, 0x43, 0x5f, 0xc0, 0x3c, 0x1c, 0xac, 0xb4, 0xd8, 0x44, 0xa5, 0x21, 0x88,
0x77, 0x75, 0xa7, 0x2b, 0xa6, 0x34, 0xcc, 0xdf, 0xa5, 0xc3, 0x0d, 0x58, 0x9c, 0xbc, 0xaa, 0xb2,
0x90, 0xb4, 0x89, 0x73, 0x78, 0xc0, 0xb2, 0xab, 0x1e, 0x7c, 0x3b, 0x82, 0xa5, 0x8c, 0xd6, 0x20,
0x41, 0x6c, 0x9b, 0xda, 0xd9, 0x35, 0xcf, 0xa7, 0xed, 0x08, 0x16, 0x62, 0x19, 0x60, 0xc6, 0x26,
0xce, 0x80, 0x5a, 0x0e, 0xb9, 0xf1, 0xb3, 0x02, 0x09, 0xde, 0x97, 0xd0, 0xc7, 0xa0, 0xee, 0x35,
0x4b, 0xcd, 0x6a, 0xeb, 0x61, 0xbd, 0x56, 0xaf, 0x35, 0x6b, 0xa5, 0x07, 0xb5, 0x47, 0xd5, 0xad,
0xd6, 0xc3, 0xfa, 0xde, 0x6e, 0xb5, 0x52, 0xbb, 0x5f, 0xab, 0x6e, 0x65, 0x22, 0xb9, 0xa5, 0xe3,
0x93, 0xc2, 0x7c, 0x08, 0x80, 0xb2, 0x00, 0x62, 0x9d, 0xa7, 0xcc, 0x28, 0xb9, 0x99, 0xe3, 0x93,
0x42, 0xdc, 0x7b, 0x47, 0x79, 0x98, 0x17, 0x96, 0x26, 0xfe, 0xb2, 0xb1, 0x5b, 0xad, 0x67, 0xa2,
0xb9, 0xd9, 0xe3, 0x93, 0x42, 0x4a, 0x8a, 0xe3, 0x95, 0xdc, 0x18, 0x13, 0x2b, 0xb9, 0xe5, 0x1a,
0xcc, 0x09, 0x4b, 0xe5, 0x41, 0x63, 0xaf, 0xba, 0x95, 0x89, 0xe7, 0xe0, 0xf8, 0xa4, 0x90, 0x14,
0x52, 0x2e, 0xfe, 0xfc, 0x87, 0x7c, 0xe4, 0xc6, 0x53, 0x48, 0xf0, 0x1e, 0x89, 0x3e, 0x80, 0xb5,
0x06, 0xde, 0xaa, 0xe2, 0x56, 0xbd, 0x51, 0xaf, 0x4e, 0xf8, 0xcb, 0xb7, 0xf4, 0xf4, 0x48, 0x83,
0x45, 0x81, 0x7a, 0x58, 0xe7, 0xcf, 0xea, 0x56, 0x46, 0xc9, 0xcd, 0x1f, 0x9f, 0x14, 0xd2, 0x23,
0x85, 0xe7, 0xb0, 0xc0, 0xf8, 0x08, 0xe9, 0xb0, 0x14, 0xc5, 0xc1, 0xe5, 0x9d, 0x17, 0xaf, 0xf2,
0xca, 0xcb, 0x57, 0x79, 0xe5, 0xaf, 0x57, 0x79, 0xe5, 0xdb, 0xd7, 0xf9, 0xc8, 0xcb, 0xd7, 0xf9,
0xc8, 0x9f, 0xaf, 0xf3, 0x91, 0x47, 0x77, 0xde, 0x79, 0xb5, 0x3e, 0xdb, 0x34, 0xf7, 0x8d, 0xcd,
0x8f, 0xee, 0xde, 0xf4, 0xff, 0x61, 0xe4, 0x77, 0xed, 0x7e, 0x92, 0xff, 0x49, 0x78, 0xe7, 0xdf,
0x00, 0x00, 0x00, 0xff, 0xff, 0x2a, 0x78, 0x52, 0x52, 0x7d, 0x14, 0x00, 0x00,
}
func (m *MsgChannelOpenInit) Marshal() (dAtA []byte, err error) {
@ -2146,6 +2243,72 @@ func (m *PacketAckCommitment) MarshalToSizedBuffer(dAtA []byte) (int, error) {
return len(dAtA) - i, nil
}
func (m *Acknowledgement) 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 *Acknowledgement) MarshalTo(dAtA []byte) (int, error) {
size := m.Size()
return m.MarshalToSizedBuffer(dAtA[:size])
}
func (m *Acknowledgement) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i := len(dAtA)
_ = i
var l int
_ = l
if m.Response != nil {
{
size := m.Response.Size()
i -= size
if _, err := m.Response.MarshalTo(dAtA[i:]); err != nil {
return 0, err
}
}
}
return len(dAtA) - i, nil
}
func (m *Acknowledgement_Result) MarshalTo(dAtA []byte) (int, error) {
size := m.Size()
return m.MarshalToSizedBuffer(dAtA[:size])
}
func (m *Acknowledgement_Result) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i := len(dAtA)
if m.Result != nil {
i -= len(m.Result)
copy(dAtA[i:], m.Result)
i = encodeVarintChannel(dAtA, i, uint64(len(m.Result)))
i--
dAtA[i] = 0x1
i--
dAtA[i] = 0xaa
}
return len(dAtA) - i, nil
}
func (m *Acknowledgement_Error) MarshalTo(dAtA []byte) (int, error) {
size := m.Size()
return m.MarshalToSizedBuffer(dAtA[:size])
}
func (m *Acknowledgement_Error) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i := len(dAtA)
i -= len(m.Error)
copy(dAtA[i:], m.Error)
i = encodeVarintChannel(dAtA, i, uint64(len(m.Error)))
i--
dAtA[i] = 0x1
i--
dAtA[i] = 0xb2
return len(dAtA) - i, nil
}
func encodeVarintChannel(dAtA []byte, offset int, v uint64) int {
offset -= sovChannel(v)
base := offset
@ -2557,6 +2720,41 @@ func (m *PacketAckCommitment) Size() (n int) {
return n
}
func (m *Acknowledgement) Size() (n int) {
if m == nil {
return 0
}
var l int
_ = l
if m.Response != nil {
n += m.Response.Size()
}
return n
}
func (m *Acknowledgement_Result) Size() (n int) {
if m == nil {
return 0
}
var l int
_ = l
if m.Result != nil {
l = len(m.Result)
n += 2 + l + sovChannel(uint64(l))
}
return n
}
func (m *Acknowledgement_Error) Size() (n int) {
if m == nil {
return 0
}
var l int
_ = l
l = len(m.Error)
n += 2 + l + sovChannel(uint64(l))
return n
}
func sovChannel(x uint64) (n int) {
return (math_bits.Len64(x|1) + 6) / 7
}
@ -5734,6 +5932,124 @@ func (m *PacketAckCommitment) Unmarshal(dAtA []byte) error {
}
return nil
}
func (m *Acknowledgement) 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 ErrIntOverflowChannel
}
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: Acknowledgement: wiretype end group for non-group")
}
if fieldNum <= 0 {
return fmt.Errorf("proto: Acknowledgement: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 21:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Result", wireType)
}
var byteLen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowChannel
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
byteLen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
if byteLen < 0 {
return ErrInvalidLengthChannel
}
postIndex := iNdEx + byteLen
if postIndex < 0 {
return ErrInvalidLengthChannel
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
v := make([]byte, postIndex-iNdEx)
copy(v, dAtA[iNdEx:postIndex])
m.Response = &Acknowledgement_Result{v}
iNdEx = postIndex
case 22:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Error", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowChannel
}
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 ErrInvalidLengthChannel
}
postIndex := iNdEx + intStringLen
if postIndex < 0 {
return ErrInvalidLengthChannel
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.Response = &Acknowledgement_Error{string(dAtA[iNdEx:postIndex])}
iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipChannel(dAtA[iNdEx:])
if err != nil {
return err
}
if skippy < 0 {
return ErrInvalidLengthChannel
}
if (iNdEx + skippy) < 0 {
return ErrInvalidLengthChannel
}
if (iNdEx + skippy) > l {
return io.ErrUnexpectedEOF
}
iNdEx += skippy
}
}
if iNdEx > l {
return io.ErrUnexpectedEOF
}
return nil
}
func skipChannel(dAtA []byte) (n int, err error) {
l := len(dAtA)
iNdEx := 0

View File

@ -30,3 +30,63 @@ func TestCounterpartyValidateBasic(t *testing.T) {
}
}
}
// tests acknowledgement.ValidateBasic and acknowledgement.GetBytes
func (suite TypesTestSuite) TestAcknowledgement() {
testCases := []struct {
name string
ack types.Acknowledgement
expPass bool
}{
{
"valid successful ack",
types.NewResultAcknowledgement([]byte("success")),
true,
},
{
"valid failed ack",
types.NewErrorAcknowledgement("error"),
true,
},
{
"empty successful ack",
types.NewResultAcknowledgement([]byte{}),
false,
},
{
"empty faied ack",
types.NewErrorAcknowledgement(" "),
false,
},
{
"nil response",
types.Acknowledgement{
Response: nil,
},
false,
},
}
for _, tc := range testCases {
tc := tc
suite.Run(tc.name, func() {
suite.SetupTest()
err := tc.ack.ValidateBasic()
if tc.expPass {
suite.Require().NoError(err)
} else {
suite.Require().Error(err)
}
// expect all acks to be able to be marshaled
suite.NotPanics(func() {
bz := tc.ack.GetBytes()
suite.Require().NotNil(bz)
})
})
}
}

View File

@ -67,13 +67,13 @@ var (
addr = sdk.AccAddress("testaddr")
)
type MsgTestSuite struct {
type TypesTestSuite struct {
suite.Suite
proof []byte
}
func (suite *MsgTestSuite) SetupTest() {
func (suite *TypesTestSuite) SetupTest() {
app := simapp.Setup(false)
db := dbm.NewMemDB()
store := rootmulti.NewStore(db)
@ -99,12 +99,12 @@ func (suite *MsgTestSuite) SetupTest() {
suite.proof = proof
}
func TestMsgTestSuite(t *testing.T) {
suite.Run(t, new(MsgTestSuite))
func TestTypesTestSuite(t *testing.T) {
suite.Run(t, new(TypesTestSuite))
}
// TestMsgChannelOpenInit tests ValidateBasic for MsgChannelOpenInit
func (suite *MsgTestSuite) TestMsgChannelOpenInit() {
func (suite *TypesTestSuite) TestMsgChannelOpenInit() {
testMsgs := []*types.MsgChannelOpenInit{
types.NewMsgChannelOpenInit("testportid", "testchannel", "1.0", types.ORDERED, connHops, "testcpport", "testcpchannel", addr), // valid msg
types.NewMsgChannelOpenInit(invalidShortPort, "testchannel", "1.0", types.ORDERED, connHops, "testcpport", "testcpchannel", addr), // too short port id
@ -156,7 +156,7 @@ func (suite *MsgTestSuite) TestMsgChannelOpenInit() {
}
// TestMsgChannelOpenTry tests ValidateBasic for MsgChannelOpenTry
func (suite *MsgTestSuite) TestMsgChannelOpenTry() {
func (suite *TypesTestSuite) TestMsgChannelOpenTry() {
testMsgs := []*types.MsgChannelOpenTry{
types.NewMsgChannelOpenTry("testportid", "testchannel", "1.0", types.ORDERED, connHops, "testcpport", "testcpchannel", "1.0", suite.proof, height, addr), // valid msg
types.NewMsgChannelOpenTry(invalidShortPort, "testchannel", "1.0", types.ORDERED, connHops, "testcpport", "testcpchannel", "1.0", suite.proof, height, addr), // too short port id
@ -214,7 +214,7 @@ func (suite *MsgTestSuite) TestMsgChannelOpenTry() {
}
// TestMsgChannelOpenAck tests ValidateBasic for MsgChannelOpenAck
func (suite *MsgTestSuite) TestMsgChannelOpenAck() {
func (suite *TypesTestSuite) TestMsgChannelOpenAck() {
testMsgs := []*types.MsgChannelOpenAck{
types.NewMsgChannelOpenAck("testportid", "testchannel", "1.0", suite.proof, height, addr), // valid msg
types.NewMsgChannelOpenAck(invalidShortPort, "testchannel", "1.0", suite.proof, height, addr), // too short port id
@ -256,7 +256,7 @@ func (suite *MsgTestSuite) TestMsgChannelOpenAck() {
}
// TestMsgChannelOpenConfirm tests ValidateBasic for MsgChannelOpenConfirm
func (suite *MsgTestSuite) TestMsgChannelOpenConfirm() {
func (suite *TypesTestSuite) TestMsgChannelOpenConfirm() {
testMsgs := []*types.MsgChannelOpenConfirm{
types.NewMsgChannelOpenConfirm("testportid", "testchannel", suite.proof, height, addr), // valid msg
types.NewMsgChannelOpenConfirm(invalidShortPort, "testchannel", suite.proof, height, addr), // too short port id
@ -296,7 +296,7 @@ func (suite *MsgTestSuite) TestMsgChannelOpenConfirm() {
}
// TestMsgChannelCloseInit tests ValidateBasic for MsgChannelCloseInit
func (suite *MsgTestSuite) TestMsgChannelCloseInit() {
func (suite *TypesTestSuite) TestMsgChannelCloseInit() {
testMsgs := []*types.MsgChannelCloseInit{
types.NewMsgChannelCloseInit("testportid", "testchannel", addr), // valid msg
types.NewMsgChannelCloseInit(invalidShortPort, "testchannel", addr), // too short port id
@ -332,7 +332,7 @@ func (suite *MsgTestSuite) TestMsgChannelCloseInit() {
}
// TestMsgChannelCloseConfirm tests ValidateBasic for MsgChannelCloseConfirm
func (suite *MsgTestSuite) TestMsgChannelCloseConfirm() {
func (suite *TypesTestSuite) TestMsgChannelCloseConfirm() {
testMsgs := []*types.MsgChannelCloseConfirm{
types.NewMsgChannelCloseConfirm("testportid", "testchannel", suite.proof, height, addr), // valid msg
types.NewMsgChannelCloseConfirm(invalidShortPort, "testchannel", suite.proof, height, addr), // too short port id
@ -372,14 +372,14 @@ func (suite *MsgTestSuite) TestMsgChannelCloseConfirm() {
}
// TestMsgRecvPacketType tests Type for MsgRecvPacket.
func (suite *MsgTestSuite) TestMsgRecvPacketType() {
func (suite *TypesTestSuite) TestMsgRecvPacketType() {
msg := types.NewMsgRecvPacket(packet, suite.proof, height, addr1)
suite.Equal("recv_packet", msg.Type())
}
// TestMsgRecvPacketValidation tests ValidateBasic for MsgRecvPacket
func (suite *MsgTestSuite) TestMsgRecvPacketValidation() {
func (suite *TypesTestSuite) TestMsgRecvPacketValidation() {
testMsgs := []*types.MsgRecvPacket{
types.NewMsgRecvPacket(packet, suite.proof, height, addr1), // valid msg
types.NewMsgRecvPacket(packet, suite.proof, clienttypes.Height{}, addr1), // proof height is zero
@ -411,7 +411,7 @@ func (suite *MsgTestSuite) TestMsgRecvPacketValidation() {
}
// TestMsgRecvPacketGetSignBytes tests GetSignBytes for MsgRecvPacket
func (suite *MsgTestSuite) TestMsgRecvPacketGetSignBytes() {
func (suite *TypesTestSuite) TestMsgRecvPacketGetSignBytes() {
msg := types.NewMsgRecvPacket(packet, suite.proof, height, addr1)
res := msg.GetSignBytes()
@ -423,7 +423,7 @@ func (suite *MsgTestSuite) TestMsgRecvPacketGetSignBytes() {
}
// TestMsgRecvPacketGetSigners tests GetSigners for MsgRecvPacket
func (suite *MsgTestSuite) TestMsgRecvPacketGetSigners() {
func (suite *TypesTestSuite) TestMsgRecvPacketGetSigners() {
msg := types.NewMsgRecvPacket(packet, suite.proof, height, addr1)
res := msg.GetSigners()
@ -432,7 +432,7 @@ func (suite *MsgTestSuite) TestMsgRecvPacketGetSigners() {
}
// TestMsgTimeout tests ValidateBasic for MsgTimeout
func (suite *MsgTestSuite) TestMsgTimeout() {
func (suite *TypesTestSuite) TestMsgTimeout() {
testMsgs := []*types.MsgTimeout{
types.NewMsgTimeout(packet, 1, suite.proof, height, addr),
types.NewMsgTimeout(packet, 1, suite.proof, clienttypes.Height{}, addr),
@ -464,7 +464,7 @@ func (suite *MsgTestSuite) TestMsgTimeout() {
}
// TestMsgTimeoutOnClose tests ValidateBasic for MsgTimeoutOnClose
func (suite *MsgTestSuite) TestMsgTimeoutOnClose() {
func (suite *TypesTestSuite) TestMsgTimeoutOnClose() {
testCases := []struct {
name string
msg sdk.Msg
@ -494,7 +494,7 @@ func (suite *MsgTestSuite) TestMsgTimeoutOnClose() {
}
// TestMsgAcknowledgement tests ValidateBasic for MsgAcknowledgement
func (suite *MsgTestSuite) TestMsgAcknowledgement() {
func (suite *TypesTestSuite) TestMsgAcknowledgement() {
testMsgs := []*types.MsgAcknowledgement{
types.NewMsgAcknowledgement(packet, packet.GetData(), suite.proof, height, addr),
types.NewMsgAcknowledgement(packet, packet.GetData(), suite.proof, clienttypes.Height{}, addr),