From dc47387f2174a6f1e15b26aa8b9541e1c072123e Mon Sep 17 00:00:00 2001 From: Nicolas Lara Date: Wed, 3 May 2023 19:09:59 +0200 Subject: [PATCH 01/31] added initial async ack support for wasm hooks --- proto/osmosis/ibc-hooks/tx.proto | 22 + tests/ibc-hooks/async_acks_test.go | 44 ++ tests/ibc-hooks/bytecode/echo.wasm | Bin 125095 -> 128452 bytes .../testutils/contracts/echo/src/lib.rs | 9 + x/ibc-hooks/keeper/keeper.go | 31 +- x/ibc-hooks/sdkmodule.go | 10 +- x/ibc-hooks/types/codec.go | 38 ++ x/ibc-hooks/types/keys.go | 2 + x/ibc-hooks/types/msgs.go | 32 + x/ibc-hooks/types/tx.pb.go | 635 ++++++++++++++++++ x/ibc-hooks/wasm_hook.go | 20 + 11 files changed, 836 insertions(+), 7 deletions(-) create mode 100644 proto/osmosis/ibc-hooks/tx.proto create mode 100644 tests/ibc-hooks/async_acks_test.go create mode 100644 x/ibc-hooks/types/codec.go create mode 100644 x/ibc-hooks/types/msgs.go create mode 100644 x/ibc-hooks/types/tx.pb.go diff --git a/proto/osmosis/ibc-hooks/tx.proto b/proto/osmosis/ibc-hooks/tx.proto new file mode 100644 index 00000000000..10f6a1495b6 --- /dev/null +++ b/proto/osmosis/ibc-hooks/tx.proto @@ -0,0 +1,22 @@ +syntax = "proto3"; +package osmosis.ibchooks; + +import "gogoproto/gogo.proto"; + +option go_package = "github.com/osmosis-labs/osmosis/v15/x/ibc-hooks/types"; + +// Msg defines the Msg service. +service Msg { + // EmitIBCAck checks the sender can emit the ack and writes the IBC + // acknowledgement + rpc EmitIBCAck(MsgEmitIBCAck) returns (MsgEmitIBCAckResponse); +} + +message MsgEmitIBCAck { + string sender = 1 [ (gogoproto.moretags) = "yaml:\"sender\"" ]; +} +message MsgEmitIBCAckResponse { + string contract_result = 1 + [ (gogoproto.moretags) = "yaml:\"contract_result\"" ]; + string ibc_ack = 2 [ (gogoproto.moretags) = "yaml:\"ibc_ack\"" ]; +} diff --git a/tests/ibc-hooks/async_acks_test.go b/tests/ibc-hooks/async_acks_test.go new file mode 100644 index 00000000000..92c9622e137 --- /dev/null +++ b/tests/ibc-hooks/async_acks_test.go @@ -0,0 +1,44 @@ +package ibc_hooks_test + +import ( + "fmt" + sdk "github.com/cosmos/cosmos-sdk/types" + ibctesting "github.com/cosmos/ibc-go/v4/testing" +) + +func (suite *HooksTestSuite) TestWasmHooksAsyncAcks() { + sender := suite.chainB.SenderAccount.GetAddress() + + // Instantiate a contract that knows how to send async Acks + suite.chainA.StoreContractCode(&suite.Suite, "./bytecode/echo.wasm") + contractAddr := suite.chainA.InstantiateContract(&suite.Suite, "{}", 1) + + // Calls that don't specify async acks work as expected + memo := fmt.Sprintf(`{"wasm": {"contract": "%s", "msg": {"async": {"use_async": false}}}}`, contractAddr) + suite.fundAccount(suite.chainB, sender) + transferMsg := NewMsgTransfer(sdk.NewCoin("token0", sdk.NewInt(2000)), sender.String(), contractAddr.String(), "channel-0", memo) + sendResult, receiveResult, ack, err := suite.FullSend(transferMsg, BtoA) + suite.Require().NoError(err) + suite.Require().NotNil(sendResult) + suite.Require().NotNil(receiveResult) + suite.Require().NotNil(ack) + + // Calls that specify async Acks work and no Acks are sent + memo = fmt.Sprintf(`{"wasm": {"contract": "%s", "msg": {"async": {"use_async": true}}}}`, contractAddr) + suite.fundAccount(suite.chainB, sender) + transferMsg = NewMsgTransfer(sdk.NewCoin("token0", sdk.NewInt(2000)), sender.String(), contractAddr.String(), "channel-0", memo) + + sendResult, err = suite.chainB.SendMsgsNoCheck(transferMsg) + suite.Require().NoError(err) + + packet, err := ibctesting.ParsePacketFromEvents(sendResult.GetEvents()) + suite.Require().NoError(err) + + receiveResult = suite.RelayPacketNoAck(packet, BtoA) + newAck, err := ibctesting.ParseAckFromEvents(receiveResult.GetEvents()) + suite.Require().Error(err) // No ack! + suite.Require().Nil(newAck) + + // We store that only that contract can send an ack for that packet sequence + +} diff --git a/tests/ibc-hooks/bytecode/echo.wasm b/tests/ibc-hooks/bytecode/echo.wasm index 4feb4554e7cc0a767abc60c28704dc458d016efd..482fc100500ce91527c6c7536c62245c4a7613c5 100644 GIT binary patch literal 128452 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 N5Agc{zpLk0{x1MnH?jZ# literal 125095 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 G>Hh$Rp~(pV diff --git a/tests/ibc-hooks/testutils/contracts/echo/src/lib.rs b/tests/ibc-hooks/testutils/contracts/echo/src/lib.rs index ab1d16a3aef..c3395ddab18 100644 --- a/tests/ibc-hooks/testutils/contracts/echo/src/lib.rs +++ b/tests/ibc-hooks/testutils/contracts/echo/src/lib.rs @@ -10,6 +10,8 @@ pub struct InstantiateMsg {} #[cw_serde] pub enum ExecuteMsg { Echo { msg: String }, + Async { use_async: bool }, + EmitAck { packet: } } // Instantiate @@ -38,5 +40,12 @@ pub fn execute( ) -> Result { match msg { ExecuteMsg::Echo { msg } => Ok(simple_response(msg)), + ExecuteMsg::Async { use_async } => { + if use_async { + Ok(Response::new().add_attribute("ibc_async_ack", "true")) + } else { + Ok(Response::default()) + } + } } } diff --git a/x/ibc-hooks/keeper/keeper.go b/x/ibc-hooks/keeper/keeper.go index 7562a0fd355..7cf9c3d3413 100644 --- a/x/ibc-hooks/keeper/keeper.go +++ b/x/ibc-hooks/keeper/keeper.go @@ -31,28 +31,51 @@ func (k Keeper) Logger(ctx sdk.Context) log.Logger { return ctx.Logger().With("module", fmt.Sprintf("x/%s", types.ModuleName)) } -func GetPacketKey(channel string, packetSequence uint64) []byte { +func GetPacketCallbackKey(channel string, packetSequence uint64) []byte { return []byte(fmt.Sprintf("%s::%d", channel, packetSequence)) } +func GetPacketAckKey(channel string, packetSequence uint64) []byte { + return []byte(fmt.Sprintf("%s::%d::ack", channel, packetSequence)) +} + // StorePacketCallback stores which contract will be listening for the ack or timeout of a packet func (k Keeper) StorePacketCallback(ctx sdk.Context, channel string, packetSequence uint64, contract string) { store := ctx.KVStore(k.storeKey) - store.Set(GetPacketKey(channel, packetSequence), []byte(contract)) + store.Set(GetPacketCallbackKey(channel, packetSequence), []byte(contract)) } // GetPacketCallback returns the bech32 addr of the contract that is expecting a callback from a packet func (k Keeper) GetPacketCallback(ctx sdk.Context, channel string, packetSequence uint64) string { store := ctx.KVStore(k.storeKey) - return string(store.Get(GetPacketKey(channel, packetSequence))) + return string(store.Get(GetPacketCallbackKey(channel, packetSequence))) } // DeletePacketCallback deletes the callback from storage once it has been processed func (k Keeper) DeletePacketCallback(ctx sdk.Context, channel string, packetSequence uint64) { store := ctx.KVStore(k.storeKey) - store.Delete(GetPacketKey(channel, packetSequence)) + store.Delete(GetPacketCallbackKey(channel, packetSequence)) +} + +// StorePacketAckActor stores which contract is allowed to send an ack for the packet +func (k Keeper) StorePacketAckActor(ctx sdk.Context, channel string, packetSequence uint64, contract string) { + store := ctx.KVStore(k.storeKey) + store.Set(GetPacketAckKey(channel, packetSequence), []byte(contract)) +} + +// GetPacketAckActor returns the bech32 addr of the contract that is allowed to send an ack for the packet +func (k Keeper) GetPacketAckActor(ctx sdk.Context, channel string, packetSequence uint64) string { + store := ctx.KVStore(k.storeKey) + return string(store.Get(GetPacketAckKey(channel, packetSequence))) +} + +// DeletePacketAckActor deletes the ack actor from storage once it has been used +func (k Keeper) DeletePacketAckActor(ctx sdk.Context, channel string, packetSequence uint64) { + store := ctx.KVStore(k.storeKey) + store.Delete(GetPacketAckKey(channel, packetSequence)) } +// DeriveIntermediateSender derives the sender address to be used when calling wasm hooks func DeriveIntermediateSender(channel, originalSender, bech32Prefix string) (string, error) { senderStr := fmt.Sprintf("%s/%s", channel, originalSender) senderHash32 := address.Hash(types.SenderPrefix, []byte(senderStr)) diff --git a/x/ibc-hooks/sdkmodule.go b/x/ibc-hooks/sdkmodule.go index 160e5945808..ee74c4e155b 100644 --- a/x/ibc-hooks/sdkmodule.go +++ b/x/ibc-hooks/sdkmodule.go @@ -38,10 +38,14 @@ func (AppModuleBasic) Name() string { } // RegisterLegacyAminoCodec registers the ibc-hooks module's types on the given LegacyAmino codec. -func (AppModuleBasic) RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) {} +func (AppModuleBasic) RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) { + types.RegisterCodec(cdc) +} -// RegisterInterfaces registers the module's interface types. -func (b AppModuleBasic) RegisterInterfaces(_ cdctypes.InterfaceRegistry) {} +// RegisterInterfaces registers the module's interface types +func (a AppModuleBasic) RegisterInterfaces(reg cdctypes.InterfaceRegistry) { + types.RegisterInterfaces(reg) +} // DefaultGenesis returns default genesis state as raw bytes for the // module. diff --git a/x/ibc-hooks/types/codec.go b/x/ibc-hooks/types/codec.go new file mode 100644 index 00000000000..e4b1dcd78bc --- /dev/null +++ b/x/ibc-hooks/types/codec.go @@ -0,0 +1,38 @@ +package types + +import ( + "github.com/cosmos/cosmos-sdk/codec" + cdctypes "github.com/cosmos/cosmos-sdk/codec/types" + sdk "github.com/cosmos/cosmos-sdk/types" + authzcodec "github.com/cosmos/cosmos-sdk/x/authz/codec" + + // this line is used by starport scaffolding # 1 + "github.com/cosmos/cosmos-sdk/types/msgservice" +) + +func RegisterCodec(cdc *codec.LegacyAmino) { + cdc.RegisterConcrete(&MsgEmitIBCAck{}, "osmosis/ibc-hooks/emit-ibc-ack", nil) +} + +func RegisterInterfaces(registry cdctypes.InterfaceRegistry) { + registry.RegisterImplementations( + (*sdk.Msg)(nil), + &MsgEmitIBCAck{}, + ) + msgservice.RegisterMsgServiceDesc(registry, &_Msg_serviceDesc) +} + +var ( + amino = codec.NewLegacyAmino() + ModuleCdc = codec.NewProtoCodec(cdctypes.NewInterfaceRegistry()) +) + +func init() { + RegisterCodec(amino) + // Register all Amino interfaces and concrete types on the authz Amino codec so that this can later be + // used to properly serialize MsgGrant and MsgExec instances + sdk.RegisterLegacyAminoCodec(amino) + RegisterCodec(authzcodec.Amino) + + amino.Seal() +} diff --git a/x/ibc-hooks/types/keys.go b/x/ibc-hooks/types/keys.go index 9a3e7ded1bc..ff70ecf16cc 100644 --- a/x/ibc-hooks/types/keys.go +++ b/x/ibc-hooks/types/keys.go @@ -2,7 +2,9 @@ package types const ( ModuleName = "ibchooks" + RouterKey = ModuleName StoreKey = "hooks-for-ibc" // not using the module name because of collisions with key "ibc" IBCCallbackKey = "ibc_callback" + IBCAsyncAckKey = "ibc_async_ack" SenderPrefix = "ibc-wasm-hook-intermediary" ) diff --git a/x/ibc-hooks/types/msgs.go b/x/ibc-hooks/types/msgs.go new file mode 100644 index 00000000000..85ccb3b8cb3 --- /dev/null +++ b/x/ibc-hooks/types/msgs.go @@ -0,0 +1,32 @@ +package types + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" +) + +// constants. +const ( + TypeMsgEmitIBCAck = "emit-ibc-ack" +) + +var _ sdk.Msg = &MsgEmitIBCAck{} + +func (m MsgEmitIBCAck) Route() string { return RouterKey } +func (m MsgEmitIBCAck) Type() string { return TypeMsgEmitIBCAck } +func (m MsgEmitIBCAck) ValidateBasic() error { + _, err := sdk.AccAddressFromBech32(m.Sender) + if err != nil { + return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "Invalid sender address (%s)", err) + } + return nil +} + +func (m MsgEmitIBCAck) GetSignBytes() []byte { + return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(&m)) +} + +func (m MsgEmitIBCAck) GetSigners() []sdk.AccAddress { + sender, _ := sdk.AccAddressFromBech32(m.Sender) + return []sdk.AccAddress{sender} +} diff --git a/x/ibc-hooks/types/tx.pb.go b/x/ibc-hooks/types/tx.pb.go new file mode 100644 index 00000000000..ff9d393306e --- /dev/null +++ b/x/ibc-hooks/types/tx.pb.go @@ -0,0 +1,635 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: osmosis/ibc-hooks/tx.proto + +package types + +import ( + context "context" + fmt "fmt" + _ "github.com/gogo/protobuf/gogoproto" + grpc1 "github.com/gogo/protobuf/grpc" + proto "github.com/gogo/protobuf/proto" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +type MsgEmitIBCAck struct { + Sender string `protobuf:"bytes,1,opt,name=sender,proto3" json:"sender,omitempty" yaml:"sender"` +} + +func (m *MsgEmitIBCAck) Reset() { *m = MsgEmitIBCAck{} } +func (m *MsgEmitIBCAck) String() string { return proto.CompactTextString(m) } +func (*MsgEmitIBCAck) ProtoMessage() {} +func (*MsgEmitIBCAck) Descriptor() ([]byte, []int) { + return fileDescriptor_93268c51ed820a58, []int{0} +} +func (m *MsgEmitIBCAck) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgEmitIBCAck) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgEmitIBCAck.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 *MsgEmitIBCAck) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgEmitIBCAck.Merge(m, src) +} +func (m *MsgEmitIBCAck) XXX_Size() int { + return m.Size() +} +func (m *MsgEmitIBCAck) XXX_DiscardUnknown() { + xxx_messageInfo_MsgEmitIBCAck.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgEmitIBCAck proto.InternalMessageInfo + +func (m *MsgEmitIBCAck) GetSender() string { + if m != nil { + return m.Sender + } + return "" +} + +type MsgEmitIBCAckResponse struct { + ContractResult string `protobuf:"bytes,1,opt,name=contract_result,json=contractResult,proto3" json:"contract_result,omitempty" yaml:"contract_result"` + IbcAck string `protobuf:"bytes,2,opt,name=ibc_ack,json=ibcAck,proto3" json:"ibc_ack,omitempty" yaml:"ibc_ack"` +} + +func (m *MsgEmitIBCAckResponse) Reset() { *m = MsgEmitIBCAckResponse{} } +func (m *MsgEmitIBCAckResponse) String() string { return proto.CompactTextString(m) } +func (*MsgEmitIBCAckResponse) ProtoMessage() {} +func (*MsgEmitIBCAckResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_93268c51ed820a58, []int{1} +} +func (m *MsgEmitIBCAckResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgEmitIBCAckResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgEmitIBCAckResponse.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 *MsgEmitIBCAckResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgEmitIBCAckResponse.Merge(m, src) +} +func (m *MsgEmitIBCAckResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgEmitIBCAckResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgEmitIBCAckResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgEmitIBCAckResponse proto.InternalMessageInfo + +func (m *MsgEmitIBCAckResponse) GetContractResult() string { + if m != nil { + return m.ContractResult + } + return "" +} + +func (m *MsgEmitIBCAckResponse) GetIbcAck() string { + if m != nil { + return m.IbcAck + } + return "" +} + +func init() { + proto.RegisterType((*MsgEmitIBCAck)(nil), "osmosis.ibchooks.MsgEmitIBCAck") + proto.RegisterType((*MsgEmitIBCAckResponse)(nil), "osmosis.ibchooks.MsgEmitIBCAckResponse") +} + +func init() { proto.RegisterFile("osmosis/ibc-hooks/tx.proto", fileDescriptor_93268c51ed820a58) } + +var fileDescriptor_93268c51ed820a58 = []byte{ + // 307 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0xca, 0x2f, 0xce, 0xcd, + 0x2f, 0xce, 0x2c, 0xd6, 0xcf, 0x4c, 0x4a, 0xd6, 0xcd, 0xc8, 0xcf, 0xcf, 0x2e, 0xd6, 0x2f, 0xa9, + 0xd0, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x80, 0xca, 0xe9, 0x65, 0x26, 0x25, 0x83, 0xa5, + 0xa4, 0x44, 0xd2, 0xf3, 0xd3, 0xf3, 0xc1, 0x92, 0xfa, 0x20, 0x16, 0x44, 0x9d, 0x92, 0x15, 0x17, + 0xaf, 0x6f, 0x71, 0xba, 0x6b, 0x6e, 0x66, 0x89, 0xa7, 0x93, 0xb3, 0x63, 0x72, 0xb6, 0x90, 0x26, + 0x17, 0x5b, 0x71, 0x6a, 0x5e, 0x4a, 0x6a, 0x91, 0x04, 0xa3, 0x02, 0xa3, 0x06, 0xa7, 0x93, 0xe0, + 0xa7, 0x7b, 0xf2, 0xbc, 0x95, 0x89, 0xb9, 0x39, 0x56, 0x4a, 0x10, 0x71, 0xa5, 0x20, 0xa8, 0x02, + 0xa5, 0x4e, 0x46, 0x2e, 0x51, 0x14, 0xcd, 0x41, 0xa9, 0xc5, 0x05, 0xf9, 0x79, 0xc5, 0xa9, 0x42, + 0xce, 0x5c, 0xfc, 0xc9, 0xf9, 0x79, 0x25, 0x45, 0x89, 0xc9, 0x25, 0xf1, 0x45, 0xa9, 0xc5, 0xa5, + 0x39, 0x25, 0x50, 0xd3, 0xa4, 0x3e, 0xdd, 0x93, 0x17, 0x83, 0x98, 0x86, 0xa6, 0x40, 0x29, 0x88, + 0x0f, 0x26, 0x12, 0x04, 0x16, 0x10, 0xd2, 0xe6, 0x62, 0xcf, 0x4c, 0x4a, 0x8e, 0x4f, 0x4c, 0xce, + 0x96, 0x60, 0x02, 0x6b, 0x16, 0xfa, 0x74, 0x4f, 0x9e, 0x0f, 0xa2, 0x19, 0x2a, 0xa1, 0x14, 0xc4, + 0x96, 0x99, 0x94, 0xec, 0x98, 0x9c, 0x6d, 0x14, 0xcb, 0xc5, 0xec, 0x5b, 0x9c, 0x2e, 0x14, 0xc6, + 0xc5, 0x85, 0xe4, 0x17, 0x79, 0x3d, 0xf4, 0x50, 0xd0, 0x43, 0x71, 0xaf, 0x94, 0x3a, 0x01, 0x05, + 0x30, 0x0f, 0x39, 0xf9, 0x9f, 0x78, 0x24, 0xc7, 0x78, 0xe1, 0x91, 0x1c, 0xe3, 0x83, 0x47, 0x72, + 0x8c, 0x13, 0x1e, 0xcb, 0x31, 0x5c, 0x78, 0x2c, 0xc7, 0x70, 0xe3, 0xb1, 0x1c, 0x43, 0x94, 0x69, + 0x7a, 0x66, 0x49, 0x46, 0x69, 0x92, 0x5e, 0x72, 0x7e, 0xae, 0x3e, 0xd4, 0x30, 0xdd, 0x9c, 0xc4, + 0xa4, 0x62, 0x18, 0x47, 0xbf, 0xcc, 0xd0, 0x54, 0xbf, 0x02, 0x39, 0x8a, 0x2a, 0x0b, 0x52, 0x8b, + 0x93, 0xd8, 0xc0, 0xc1, 0x6f, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0xcc, 0x6e, 0x19, 0x15, 0xc4, + 0x01, 0x00, 0x00, +} + +// Reference imports to suppress errors if they are not otherwise used. +var _ context.Context +var _ grpc.ClientConn + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc.SupportPackageIsVersion4 + +// MsgClient is the client API for Msg service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +type MsgClient interface { + // EmitIBCAck checks the sender can emit the ack and writes the IBC + // acknowledgement + EmitIBCAck(ctx context.Context, in *MsgEmitIBCAck, opts ...grpc.CallOption) (*MsgEmitIBCAckResponse, error) +} + +type msgClient struct { + cc grpc1.ClientConn +} + +func NewMsgClient(cc grpc1.ClientConn) MsgClient { + return &msgClient{cc} +} + +func (c *msgClient) EmitIBCAck(ctx context.Context, in *MsgEmitIBCAck, opts ...grpc.CallOption) (*MsgEmitIBCAckResponse, error) { + out := new(MsgEmitIBCAckResponse) + err := c.cc.Invoke(ctx, "/osmosis.ibchooks.Msg/EmitIBCAck", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// MsgServer is the server API for Msg service. +type MsgServer interface { + // EmitIBCAck checks the sender can emit the ack and writes the IBC + // acknowledgement + EmitIBCAck(context.Context, *MsgEmitIBCAck) (*MsgEmitIBCAckResponse, error) +} + +// UnimplementedMsgServer can be embedded to have forward compatible implementations. +type UnimplementedMsgServer struct { +} + +func (*UnimplementedMsgServer) EmitIBCAck(ctx context.Context, req *MsgEmitIBCAck) (*MsgEmitIBCAckResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method EmitIBCAck not implemented") +} + +func RegisterMsgServer(s grpc1.Server, srv MsgServer) { + s.RegisterService(&_Msg_serviceDesc, srv) +} + +func _Msg_EmitIBCAck_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgEmitIBCAck) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).EmitIBCAck(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/osmosis.ibchooks.Msg/EmitIBCAck", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).EmitIBCAck(ctx, req.(*MsgEmitIBCAck)) + } + return interceptor(ctx, in, info, handler) +} + +var _Msg_serviceDesc = grpc.ServiceDesc{ + ServiceName: "osmosis.ibchooks.Msg", + HandlerType: (*MsgServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "EmitIBCAck", + Handler: _Msg_EmitIBCAck_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "osmosis/ibc-hooks/tx.proto", +} + +func (m *MsgEmitIBCAck) 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 *MsgEmitIBCAck) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgEmitIBCAck) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Sender) > 0 { + i -= len(m.Sender) + copy(dAtA[i:], m.Sender) + i = encodeVarintTx(dAtA, i, uint64(len(m.Sender))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgEmitIBCAckResponse) 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 *MsgEmitIBCAckResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgEmitIBCAckResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.IbcAck) > 0 { + i -= len(m.IbcAck) + copy(dAtA[i:], m.IbcAck) + i = encodeVarintTx(dAtA, i, uint64(len(m.IbcAck))) + i-- + dAtA[i] = 0x12 + } + if len(m.ContractResult) > 0 { + i -= len(m.ContractResult) + copy(dAtA[i:], m.ContractResult) + i = encodeVarintTx(dAtA, i, uint64(len(m.ContractResult))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func encodeVarintTx(dAtA []byte, offset int, v uint64) int { + offset -= sovTx(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *MsgEmitIBCAck) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Sender) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func (m *MsgEmitIBCAckResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.ContractResult) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.IbcAck) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func sovTx(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozTx(x uint64) (n int) { + return sovTx(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *MsgEmitIBCAck) 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 ErrIntOverflowTx + } + 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: MsgEmitIBCAck: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgEmitIBCAck: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Sender", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + 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 ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Sender = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgEmitIBCAckResponse) 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 ErrIntOverflowTx + } + 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: MsgEmitIBCAckResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgEmitIBCAckResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ContractResult", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + 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 ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ContractResult = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field IbcAck", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + 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 ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.IbcAck = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipTx(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowTx + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowTx + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowTx + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthTx + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupTx + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthTx + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthTx = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowTx = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupTx = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/ibc-hooks/wasm_hook.go b/x/ibc-hooks/wasm_hook.go index 31e4beac26a..d0777c34980 100644 --- a/x/ibc-hooks/wasm_hook.go +++ b/x/ibc-hooks/wasm_hook.go @@ -7,6 +7,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" capabilitytypes "github.com/cosmos/cosmos-sdk/x/capability/types" "github.com/osmosis-labs/osmosis/x/ibc-hooks/keeper" + "strings" wasmtypes "github.com/CosmWasm/wasmd/x/wasm/types" @@ -115,6 +116,25 @@ func (h WasmHooks) OnRecvPacketOverride(im IBCMiddleware, ctx sdk.Context, packe return osmoutils.NewEmitErrorAcknowledgement(ctx, types.ErrWasmError, err.Error()) } + // ToDo: Check if the contract is whitelisted to do AsyncAcks + + // Check if the contract has added the Async IBC acknowledgement event. If so, return nil + events := ctx.EventManager().Events() + for i := len(events) - 1; i >= 0; i-- { + // We iterate in reverse order, as the event we're looking for should be towards the end. + // Most times it will be the last event, unless it was issued by a submessage + // TODO: Do we want to allow submessages to make the acks async? + event := events[i] + if event.Type == "wasm" { + for _, attr := range event.Attributes { + if string(attr.Key) == types.IBCAsyncAckKey && strings.ToLower(string(attr.Value)) == "true" { + h.ibcHooksKeeper.StorePacketAckActor(ctx, packet.GetSourceChannel(), packet.GetSequence(), contractAddr.String()) + return nil + } + } + } + } + fullAck := ContractAck{ContractResult: response.Data, IbcAck: ack.Acknowledgement()} bz, err = json.Marshal(fullAck) if err != nil { From 45833e8de36c30e2e1fd048a66dfccd3ca32b846 Mon Sep 17 00:00:00 2001 From: Nicolas Lara Date: Fri, 5 May 2023 14:03:23 +0200 Subject: [PATCH 02/31] added initial working implementation of async acks --- app/keepers/keepers.go | 3 + app/modules.go | 2 +- proto/osmosis/ibc-hooks/tx.proto | 3 + tests/ibc-hooks/async_acks_test.go | 34 ++++ tests/ibc-hooks/bytecode/echo.wasm | Bin 128452 -> 162231 bytes tests/ibc-hooks/testutils/Cargo.lock | 156 ++++++++++++++++-- .../testutils/contracts/echo/Cargo.toml | 8 +- .../testutils/contracts/echo/src/ibc.rs | 57 +++++++ .../testutils/contracts/echo/src/lib.rs | 84 +++++++++- .../testutils/contracts/echo/src/state.rs | 6 + x/ibc-hooks/keeper/keeper.go | 79 ++++++++- x/ibc-hooks/keeper/msg_server.go | 40 +++++ x/ibc-hooks/sdkmodule.go | 6 +- x/ibc-hooks/types/expected_keepers.go | 16 ++ x/ibc-hooks/types/keys.go | 15 +- x/ibc-hooks/types/tx.pb.go | 133 ++++++++++++--- x/ibc-hooks/types/types.go | 26 +++ x/ibc-hooks/wasm_hook.go | 7 +- 18 files changed, 614 insertions(+), 61 deletions(-) create mode 100644 tests/ibc-hooks/testutils/contracts/echo/src/ibc.rs create mode 100644 tests/ibc-hooks/testutils/contracts/echo/src/state.rs create mode 100644 x/ibc-hooks/keeper/msg_server.go create mode 100644 x/ibc-hooks/types/expected_keepers.go create mode 100644 x/ibc-hooks/types/types.go diff --git a/app/keepers/keepers.go b/app/keepers/keepers.go index 1b672febc0b..8aab5d863d6 100644 --- a/app/keepers/keepers.go +++ b/app/keepers/keepers.go @@ -243,6 +243,8 @@ func (appKeepers *AppKeepers) InitNormalKeepers( // Configure the hooks keeper hooksKeeper := ibchookskeeper.NewKeeper( appKeepers.keys[ibchookstypes.StoreKey], + appKeepers.IBCKeeper.ChannelKeeper, + nil, ) appKeepers.IBCHooksKeeper = &hooksKeeper @@ -455,6 +457,7 @@ func (appKeepers *AppKeepers) InitNormalKeepers( appKeepers.ContractKeeper = wasmkeeper.NewDefaultPermissionKeeper(appKeepers.WasmKeeper) appKeepers.RateLimitingICS4Wrapper.ContractKeeper = appKeepers.ContractKeeper appKeepers.Ics20WasmHooks.ContractKeeper = appKeepers.ContractKeeper + appKeepers.IBCHooksKeeper.ContractKeeper = appKeepers.ContractKeeper // wire up x/wasm to IBC ibcRouter.AddRoute(wasm.ModuleName, wasm.NewIBCHandler(appKeepers.WasmKeeper, appKeepers.IBCKeeper.ChannelKeeper, appKeepers.IBCKeeper.ChannelKeeper)) diff --git a/app/modules.go b/app/modules.go index 4cdcca6b17f..b90a502aa48 100644 --- a/app/modules.go +++ b/app/modules.go @@ -178,7 +178,7 @@ func appModules( tokenfactory.NewAppModule(*app.TokenFactoryKeeper, app.AccountKeeper, app.BankKeeper), valsetprefmodule.NewAppModule(appCodec, *app.ValidatorSetPreferenceKeeper), ibcratelimitmodule.NewAppModule(*app.RateLimitingICS4Wrapper), - ibc_hooks.NewAppModule(app.AccountKeeper), + ibc_hooks.NewAppModule(app.AccountKeeper, *app.IBCHooksKeeper), icq.NewAppModule(*app.AppKeepers.ICQKeeper), packetforward.NewAppModule(app.PacketForwardKeeper), } diff --git a/proto/osmosis/ibc-hooks/tx.proto b/proto/osmosis/ibc-hooks/tx.proto index 10f6a1495b6..726ddde4f38 100644 --- a/proto/osmosis/ibc-hooks/tx.proto +++ b/proto/osmosis/ibc-hooks/tx.proto @@ -14,6 +14,9 @@ service Msg { message MsgEmitIBCAck { string sender = 1 [ (gogoproto.moretags) = "yaml:\"sender\"" ]; + uint64 packet_sequence = 2 + [ (gogoproto.moretags) = "yaml:\"packet_sequence\"" ]; + string channel = 3 [ (gogoproto.moretags) = "yaml:\"channel\"" ]; } message MsgEmitIBCAckResponse { string contract_result = 1 diff --git a/tests/ibc-hooks/async_acks_test.go b/tests/ibc-hooks/async_acks_test.go index 92c9622e137..63d6ee56066 100644 --- a/tests/ibc-hooks/async_acks_test.go +++ b/tests/ibc-hooks/async_acks_test.go @@ -1,7 +1,9 @@ package ibc_hooks_test import ( + "encoding/json" "fmt" + wasmkeeper "github.com/CosmWasm/wasmd/x/wasm/keeper" sdk "github.com/cosmos/cosmos-sdk/types" ibctesting "github.com/cosmos/ibc-go/v4/testing" ) @@ -23,6 +25,11 @@ func (suite *HooksTestSuite) TestWasmHooksAsyncAcks() { suite.Require().NotNil(receiveResult) suite.Require().NotNil(ack) + // the ack has been written + osmosisApp := suite.chainA.GetOsmosisApp() + allAcks := osmosisApp.IBCKeeper.ChannelKeeper.GetAllPacketAcks(suite.chainA.GetContext()) + suite.Require().Equal(1, len(allAcks)) + // Calls that specify async Acks work and no Acks are sent memo = fmt.Sprintf(`{"wasm": {"contract": "%s", "msg": {"async": {"use_async": true}}}}`, contractAddr) suite.fundAccount(suite.chainB, sender) @@ -39,6 +46,33 @@ func (suite *HooksTestSuite) TestWasmHooksAsyncAcks() { suite.Require().Error(err) // No ack! suite.Require().Nil(newAck) + // No new ack has been written + allAcks = osmosisApp.IBCKeeper.ChannelKeeper.GetAllPacketAcks(suite.chainA.GetContext()) + suite.Require().Equal(1, len(allAcks)) + + // TODO: add test of packet 1 not being found for emit ack (as it's already been acked) + // We store that only that contract can send an ack for that packet sequence + packetJson, err := json.Marshal(packet) + suite.Require().NoError(err) + + //x := types.IBCAckResponse{ + // Packet: packet, + // ContractAck: types.ContractAck{ + // ContractResult: []byte("result"), + // IbcAck: []byte("ack"), + // }, + //} + //xJson, _ := json.Marshal(x) + //fmt.Println(string(xJson)) + + msg := fmt.Sprintf(`{"force_emit_ibc_ack": {"packet": %s, "channel": "channel-0"}}`, packetJson) + contractKeeper := wasmkeeper.NewDefaultPermissionKeeper(osmosisApp.WasmKeeper) + _, err = contractKeeper.Execute(suite.chainA.GetContext(), contractAddr, suite.chainA.SenderAccount.GetAddress(), []byte(msg), sdk.NewCoins()) + suite.Require().NoError(err) + + allAcks = osmosisApp.IBCKeeper.ChannelKeeper.GetAllPacketAcks(suite.chainA.GetContext()) + fmt.Println(allAcks) + suite.Require().Equal(2, len(allAcks)) } diff --git a/tests/ibc-hooks/bytecode/echo.wasm b/tests/ibc-hooks/bytecode/echo.wasm index 482fc100500ce91527c6c7536c62245c4a7613c5..4c7a586b063ce12c54d2e0b3043d4a0c9218a74d 100644 GIT binary patch literal 162231 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 literal 128452 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 N5Agc{zpLk0{x1MnH?jZ# diff --git a/tests/ibc-hooks/testutils/Cargo.lock b/tests/ibc-hooks/testutils/Cargo.lock index 52e7e6ca1ef..96450055624 100644 --- a/tests/ibc-hooks/testutils/Cargo.lock +++ b/tests/ibc-hooks/testutils/Cargo.lock @@ -19,6 +19,12 @@ version = "1.0.66" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "216261ddc8289130e551ddcd5ce8a064710c0d064a4d2895c67151c92b5443f6" +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + [[package]] name = "base16ct" version = "0.1.1" @@ -31,6 +37,12 @@ version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" +[[package]] +name = "base64" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4a4ddaa51a5bc52a6948f74c06d20aaaddb71924eab79b8c97a8c556e942d6a" + [[package]] name = "base64ct" version = "1.5.3" @@ -73,6 +85,16 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "chrono" +version = "0.4.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e3c5919066adf22df73762e50cffcde3a758f2a848b113b586d1f86728b673b" +dependencies = [ + "num-integer", + "num-traits", +] + [[package]] name = "const-oid" version = "0.9.1" @@ -81,9 +103,9 @@ checksum = "cec318a675afcb6a1ea1d4340e2d377e56e47c266f28043ceccbf4412ddfdd3b" [[package]] name = "cosmwasm-crypto" -version = "1.1.5" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28376836c7677e1ea6d6656a754582e88b91e544ce22fae42956d5fe5549a958" +checksum = "7fecd74d3a0041114110d1260f77fcb644c5d2403549b37096c44f0e643a5177" dependencies = [ "digest 0.10.5", "ed25519-zebra", @@ -94,9 +116,9 @@ dependencies = [ [[package]] name = "cosmwasm-derive" -version = "1.1.5" +version = "1.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eb69f4f7a8a4bce68c8fbd3646238fede1e77056e4ea31c5b6bfc37b709eec3" +checksum = "1c9f7f0e51bfc7295f7b2664fe8513c966428642aa765dad8a74acdab5e0c773" dependencies = [ "syn", ] @@ -127,11 +149,11 @@ dependencies = [ [[package]] name = "cosmwasm-std" -version = "1.1.5" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46bf9157d060abbc55152aeadcace799d03dc630575daa66604079a1206cb060" +checksum = "5034c772c1369b160731aa00bb81f93733ab2884928edd8d588733d607ac5af4" dependencies = [ - "base64", + "base64 0.13.1", "cosmwasm-crypto", "cosmwasm-derive", "derivative", @@ -140,6 +162,7 @@ dependencies = [ "schemars", "serde", "serde-json-wasm", + "sha2 0.10.6", "thiserror", "uint", ] @@ -162,7 +185,7 @@ dependencies = [ "cosmwasm-std", "cosmwasm-storage", "cw-multi-test", - "cw-storage-plus", + "cw-storage-plus 0.16.0", "cw2", "schemars", "serde", @@ -227,11 +250,11 @@ checksum = "7192aec80d0c01a0e5941392eea7e2b7e212ee74ca7f430bfdc899420c055ef6" dependencies = [ "anyhow", "cosmwasm-std", - "cw-storage-plus", + "cw-storage-plus 0.16.0", "cw-utils", "derivative", "itertools", - "prost", + "prost 0.9.0", "schemars", "serde", "thiserror", @@ -248,6 +271,17 @@ dependencies = [ "serde", ] +[[package]] +name = "cw-storage-plus" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053a5083c258acd68386734f428a5a171b29f7d733151ae83090c6fcc9417ffa" +dependencies = [ + "cosmwasm-std", + "schemars", + "serde", +] + [[package]] name = "cw-utils" version = "0.16.0" @@ -271,7 +305,7 @@ checksum = "91398113b806f4d2a8d5f8d05684704a20ffd5968bf87e3473e1973710b884ad" dependencies = [ "cosmwasm-schema", "cosmwasm-std", - "cw-storage-plus", + "cw-storage-plus 0.16.0", "schemars", "serde", ] @@ -339,11 +373,15 @@ dependencies = [ name = "echo" version = "0.1.0" dependencies = [ + "base64 0.21.0", "cosmwasm-schema", "cosmwasm-std", "cosmwasm-storage", "cw-multi-test", - "cw-storage-plus", + "cw-storage-plus 1.0.1", + "osmosis-std", + "osmosis-std-derive", + "prost 0.11.9", "schemars", "serde", "thiserror", @@ -495,6 +533,25 @@ version = "0.2.137" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc7fcc620a3bff7cdd7a365be3376c97191aeaccc2a603e600951e452615bf89" +[[package]] +name = "num-integer" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +dependencies = [ + "autocfg", +] + [[package]] name = "once_cell" version = "1.16.0" @@ -507,6 +564,34 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" +[[package]] +name = "osmosis-std" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a10a056b61279b3529aeaa623b0a4b37b39b4b7061e833ff963fb4bc614d5e13" +dependencies = [ + "chrono", + "cosmwasm-std", + "osmosis-std-derive", + "prost 0.11.9", + "prost-types", + "schemars", + "serde", + "serde-cw-value", +] + +[[package]] +name = "osmosis-std-derive" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecd08ecb36b79fd53fb6c94b3444566deb185ad6b47bbeeb6cfff6b54e3d37d4" +dependencies = [ + "itertools", + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "pkcs8" version = "0.9.0" @@ -533,7 +618,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "444879275cb4fd84958b1a1d5420d15e6fcf7c235fe47f053c9c2a80aceb6001" dependencies = [ "bytes", - "prost-derive", + "prost-derive 0.9.0", +] + +[[package]] +name = "prost" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b82eaa1d779e9a4bc1c3217db8ffbeabaae1dca241bf70183242128d48681cd" +dependencies = [ + "bytes", + "prost-derive 0.11.9", ] [[package]] @@ -549,6 +644,28 @@ dependencies = [ "syn", ] +[[package]] +name = "prost-derive" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5d2d8d10f3c6ded6da8b05b5fb3b8a5082514344d56c9f871412d29b4e075b4" +dependencies = [ + "anyhow", + "itertools", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "prost-types" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "213622a1460818959ac1181aaeb2dc9c7f63df720db7d788b3e24eacd1983e13" +dependencies = [ + "prost 0.11.9", +] + [[package]] name = "quote" version = "1.0.21" @@ -643,11 +760,20 @@ dependencies = [ "serde_derive", ] +[[package]] +name = "serde-cw-value" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75d32da6b8ed758b7d850b6c3c08f1d7df51a4df3cb201296e63e34a78e99d4" +dependencies = [ + "serde", +] + [[package]] name = "serde-json-wasm" -version = "0.4.1" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479b4dbc401ca13ee8ce902851b834893251404c4f3c65370a49e047a6be09a5" +checksum = "16a62a1fad1e1828b24acac8f2b468971dade7b8c3c2e672bcadefefb1f8c137" dependencies = [ "serde", ] diff --git a/tests/ibc-hooks/testutils/contracts/echo/Cargo.toml b/tests/ibc-hooks/testutils/contracts/echo/Cargo.toml index 6980ce8cb24..62553b0fd40 100644 --- a/tests/ibc-hooks/testutils/contracts/echo/Cargo.toml +++ b/tests/ibc-hooks/testutils/contracts/echo/Cargo.toml @@ -30,10 +30,14 @@ optimize = """docker run --rm -v "$(pwd)":/code \ """ [dependencies] +base64 = "0.21.0" cosmwasm-schema = "1.1.3" -cosmwasm-std = "1.1.3" +cosmwasm-std = {version = "1.2", features = ["stargate"]} cosmwasm-storage = "1.1.3" -cw-storage-plus = "0.16.0" +cw-storage-plus = "1.0.1" +osmosis-std = "0.15.2" +osmosis-std-derive = "0.15.2" +prost = {version = "0.11.2", default-features = false, features = ["prost-derive"]} schemars = "0.8.10" serde = { version = "1.0.145", default-features = false, features = ["derive"] } thiserror = { version = "1.0.31" } diff --git a/tests/ibc-hooks/testutils/contracts/echo/src/ibc.rs b/tests/ibc-hooks/testutils/contracts/echo/src/ibc.rs new file mode 100644 index 00000000000..229340031de --- /dev/null +++ b/tests/ibc-hooks/testutils/contracts/echo/src/ibc.rs @@ -0,0 +1,57 @@ +use cosmwasm_schema::cw_serde; + +#[cw_serde] +pub struct Height { + /// Previously known as "epoch" + #[serde(skip_serializing_if = "Option::is_none")] + revision_number: Option, + + /// The height of a block + #[serde(skip_serializing_if = "Option::is_none")] + revision_height: Option, +} + +// #[cw_serde] +// pub struct FungibleTokenData { +// pub denom: String, +// amount: Uint256, +// sender: String, +// receiver: String, +// } + +// An IBC packet +#[cw_serde] +pub struct Packet { + pub sequence: u64, + pub source_port: String, + pub source_channel: String, + pub destination_port: String, + pub destination_channel: String, + pub data: String, // FungiibleTokenData + pub timeout_height: Height, + #[serde(skip_serializing_if = "Option::is_none")] + pub timeout_timestamp: Option, +} + +#[cw_serde] +pub enum IBCAsync { + #[serde(rename = "request_ack")] + RequestAck { + /// The source channel (osmosis side) of the IBC packet + channel: String, + /// The sequence number that the packet was sent with + packet_sequence: u64, + }, +} + +#[cw_serde] +pub struct ContractAck { + pub contract_result: String, + pub ibc_ack: String, +} + +#[cw_serde] +pub struct IBCAckResponse { + pub packet: Packet, + pub contract_ack: ContractAck, +} diff --git a/tests/ibc-hooks/testutils/contracts/echo/src/lib.rs b/tests/ibc-hooks/testutils/contracts/echo/src/lib.rs index c3395ddab18..67be000882e 100644 --- a/tests/ibc-hooks/testutils/contracts/echo/src/lib.rs +++ b/tests/ibc-hooks/testutils/contracts/echo/src/lib.rs @@ -1,7 +1,12 @@ +pub mod ibc; +pub mod state; +use cosmwasm_schema::cw_serde; #[cfg(not(feature = "library"))] use cosmwasm_std::entry_point; -use cosmwasm_std::{DepsMut, Env, MessageInfo, Response, StdError}; -use cosmwasm_schema::{cw_serde}; +use cosmwasm_std::{to_binary, DepsMut, Env, MessageInfo, Response, StdError}; +use ibc::{ContractAck, IBCAckResponse, IBCAsync, Packet}; +use osmosis_std_derive::CosmwasmExt; +use state::INFLIGHT_PACKETS; // Messages #[cw_serde] @@ -9,9 +14,24 @@ pub struct InstantiateMsg {} #[cw_serde] pub enum ExecuteMsg { - Echo { msg: String }, - Async { use_async: bool }, - EmitAck { packet: } + Echo { + msg: String, + }, + Async { + use_async: bool, + }, + #[serde(rename = "force_emit_ibc_ack")] + ForceEmitIBCAck { + packet: Packet, + channel: String, + }, +} + +/// Message type for `sudo` entry_point +#[cw_serde] +pub enum SudoMsg { + #[serde(rename = "ibc_async")] + IBCAsync(IBCAsync), } // Instantiate @@ -31,10 +51,31 @@ fn simple_response(msg: String) -> Response { .add_attribute("echo", msg) .set_data(b"this should echo") } + +#[derive( + Clone, + PartialEq, + Eq, + ::prost::Message, + serde::Serialize, + serde::Deserialize, + schemars::JsonSchema, + CosmwasmExt, +)] +#[proto_message(type_url = "/osmosis.ibchooks.MsgEmitIBCAck")] +pub struct MsgEmitIBCAck { + #[prost(string, tag = "1")] + pub sender: ::prost::alloc::string::String, + #[prost(uint64, tag = "2")] + pub packet_sequence: u64, + #[prost(string, tag = "3")] + pub channel: ::prost::alloc::string::String, +} + #[cfg_attr(not(feature = "library"), entry_point)] pub fn execute( - _deps: DepsMut, - _env: Env, + deps: DepsMut, + env: Env, _info: MessageInfo, msg: ExecuteMsg, ) -> Result { @@ -47,5 +88,34 @@ pub fn execute( Ok(Response::default()) } } + ExecuteMsg::ForceEmitIBCAck { packet, channel } => { + INFLIGHT_PACKETS.save( + deps.storage, + (&packet.destination_channel, packet.sequence), + &packet, + )?; + let msg = MsgEmitIBCAck { + sender: env.contract.address.to_string(), + packet_sequence: packet.sequence, + channel, + }; + Ok(Response::new().add_message(msg)) + } + } +} + +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn sudo(deps: DepsMut, _env: Env, msg: SudoMsg) -> Result { + match msg { + SudoMsg::IBCAsync(IBCAsync::RequestAck { + channel, + packet_sequence, + }) => Ok(Response::new().set_data(to_binary(&IBCAckResponse { + packet: INFLIGHT_PACKETS.load(deps.storage, (&channel, packet_sequence))?, + contract_ack: ContractAck { + contract_result: base64::encode("success"), + ibc_ack: base64::encode("ack"), + }, + })?)), } } diff --git a/tests/ibc-hooks/testutils/contracts/echo/src/state.rs b/tests/ibc-hooks/testutils/contracts/echo/src/state.rs new file mode 100644 index 00000000000..25c9c63cf51 --- /dev/null +++ b/tests/ibc-hooks/testutils/contracts/echo/src/state.rs @@ -0,0 +1,6 @@ +use cw_storage_plus::Map; + +use crate::ibc; + +// (channel, sequence) -> packet +pub const INFLIGHT_PACKETS: Map<(&str, u64), ibc::Packet> = Map::new("inflight"); diff --git a/x/ibc-hooks/keeper/keeper.go b/x/ibc-hooks/keeper/keeper.go index 7cf9c3d3413..8fcea000d13 100644 --- a/x/ibc-hooks/keeper/keeper.go +++ b/x/ibc-hooks/keeper/keeper.go @@ -1,9 +1,12 @@ package keeper import ( + "encoding/json" "fmt" + wasmkeeper "github.com/CosmWasm/wasmd/x/wasm/keeper" "github.com/cosmos/cosmos-sdk/types/address" - + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + channeltypes "github.com/cosmos/ibc-go/v4/modules/core/04-channel/types" "github.com/tendermint/tendermint/libs/log" "github.com/osmosis-labs/osmosis/x/ibc-hooks/types" @@ -13,16 +16,22 @@ import ( type ( Keeper struct { - storeKey sdk.StoreKey + storeKey sdk.StoreKey + channelKeeper types.ChannelKeeper + ContractKeeper *wasmkeeper.PermissionedKeeper } ) // NewKeeper returns a new instance of the x/ibchooks keeper func NewKeeper( storeKey sdk.StoreKey, + channelKeeper types.ChannelKeeper, + contractKeeper *wasmkeeper.PermissionedKeeper, ) Keeper { return Keeper{ - storeKey: storeKey, + storeKey: storeKey, + channelKeeper: channelKeeper, + ContractKeeper: contractKeeper, } } @@ -82,3 +91,67 @@ func DeriveIntermediateSender(channel, originalSender, bech32Prefix string) (str sender := sdk.AccAddress(senderHash32[:]) return sdk.Bech32ifyAddressBytes(bech32Prefix, sender) } + +// EmitIBCAck emits an event that the IBC packet has been acknowledged +func (k Keeper) EmitIBCAck(ctx sdk.Context, sender, channel string, packetSequence uint64) ([]byte, error) { + contract := k.GetPacketAckActor(ctx, channel, packetSequence) + if contract == "" { + return nil, fmt.Errorf("no ack actor set for channel %s packet %d", channel, packetSequence) + } + // Only the contract itself can request for the ack to be emitted. This will generally happen as a callback + // when the result of other IBC actions has finished, but it could be exposed directly by the contract if the + // proper checks are made + if sender != contract { + return nil, fmt.Errorf("sender %s is not allowed to send an ack for channel %s packet %d", sender, channel, packetSequence) + } + + // Write the acknowledgement + _, cap, err := k.channelKeeper.LookupModuleByChannel(ctx, "transfer", channel) + if err != nil { + return nil, sdkerrors.Wrap(err, "could not retrieve module from port-id") + } + + // Calling the contract. This could be made generic by using an interface if we want + // to support other types of AckActors, but keeping it here for now for simplicity. + contractAddr, err := sdk.AccAddressFromBech32(contract) + if err != nil { + return nil, sdkerrors.Wrap(err, "could not parse contract address") + } + + msg := types.IBCAsync{ + RequestAck: types.RequestAck{RequestIBCAckI: types.RequestIBCAckI{ + PacketSequence: packetSequence, + Channel: channel, + }}, + } + msgBytes, err := json.Marshal(msg) + if err != nil { + return nil, sdkerrors.Wrap(err, "could not marshal message") + } + bz, err := k.ContractKeeper.Sudo(ctx, contractAddr, msgBytes) + if err != nil { + return nil, sdkerrors.Wrap(err, "could not execute contract") + } + + var ack types.IBCAckResponse + fmt.Println(string(bz)) + err = json.Unmarshal(bz, &ack) + if err != nil { + return nil, sdkerrors.Wrap(err, "could not unmarshal ack") + } + + var newAck channeltypes.Acknowledgement + jsonAck, err := json.Marshal(ack) + if err != nil { + return nil, sdkerrors.Wrap(err, "could not marshal acknowledgement") + } else { + newAck = channeltypes.NewResultAcknowledgement(jsonAck) + } + + err = k.channelKeeper.WriteAcknowledgement(ctx, cap, ack.Packet, newAck) + if err != nil { + return nil, sdkerrors.Wrap(err, "could not write acknowledgement") + } + + return jsonAck, nil +} diff --git a/x/ibc-hooks/keeper/msg_server.go b/x/ibc-hooks/keeper/msg_server.go new file mode 100644 index 00000000000..fbb7ed5b133 --- /dev/null +++ b/x/ibc-hooks/keeper/msg_server.go @@ -0,0 +1,40 @@ +package keeper + +import ( + "context" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/osmosis-labs/osmosis/x/ibc-hooks/types" + "strconv" +) + +type msgServer struct { + Keeper +} + +// NewMsgServerImpl returns an implementation of the MsgServer interface +// for the provided Keeper. +func NewMsgServerImpl(keeper Keeper) types.MsgServer { + return &msgServer{Keeper: keeper} +} + +var _ types.MsgServer = msgServer{} + +func (m msgServer) EmitIBCAck(goCtx context.Context, msg *types.MsgEmitIBCAck) (*types.MsgEmitIBCAckResponse, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + + ctx.EventManager().EmitEvent( + sdk.NewEvent( + types.MsgEmitAckKey, + sdk.NewAttribute(types.AttributeSender, msg.Sender), + sdk.NewAttribute(types.AttributeChannel, msg.Channel), + sdk.NewAttribute(types.AttributePacketSequence, strconv.FormatUint(msg.PacketSequence, 10)), + ), + ) + + ack, err := m.Keeper.EmitIBCAck(ctx, msg.Sender, msg.Channel, msg.PacketSequence) + if err != nil { + return nil, err + } + + return &types.MsgEmitIBCAckResponse{ContractResult: string(ack), IbcAck: string(ack)}, nil +} diff --git a/x/ibc-hooks/sdkmodule.go b/x/ibc-hooks/sdkmodule.go index ee74c4e155b..5ce15ca4f61 100644 --- a/x/ibc-hooks/sdkmodule.go +++ b/x/ibc-hooks/sdkmodule.go @@ -3,6 +3,7 @@ package ibc_hooks import ( "encoding/json" "fmt" + "github.com/osmosis-labs/osmosis/x/ibc-hooks/keeper" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/codec" @@ -80,13 +81,15 @@ type AppModule struct { AppModuleBasic authKeeper osmoutils.AccountKeeper + keeper keeper.Keeper } // NewAppModule creates a new AppModule object. -func NewAppModule(ak osmoutils.AccountKeeper) AppModule { +func NewAppModule(ak osmoutils.AccountKeeper, keeper keeper.Keeper) AppModule { return AppModule{ AppModuleBasic: AppModuleBasic{}, authKeeper: ak, + keeper: keeper, } } @@ -116,6 +119,7 @@ func (am AppModule) LegacyQuerierHandler(legacyQuerierCdc *codec.LegacyAmino) sd // RegisterServices registers a gRPC query service to respond to the // module-specific gRPC queries. func (am AppModule) RegisterServices(cfg module.Configurator) { + types.RegisterMsgServer(cfg.MsgServer(), keeper.NewMsgServerImpl(am.keeper)) } // InitGenesis performs genesis initialization for the ibc-hooks module. It returns diff --git a/x/ibc-hooks/types/expected_keepers.go b/x/ibc-hooks/types/expected_keepers.go new file mode 100644 index 00000000000..0110dcd9c8e --- /dev/null +++ b/x/ibc-hooks/types/expected_keepers.go @@ -0,0 +1,16 @@ +package types + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" + capabilitytypes "github.com/cosmos/cosmos-sdk/x/capability/types" + channeltypes "github.com/cosmos/ibc-go/v4/modules/core/04-channel/types" + "github.com/cosmos/ibc-go/v4/modules/core/exported" +) + +type ChannelKeeper interface { + GetChannel(ctx sdk.Context, srcPort, srcChan string) (channel channeltypes.Channel, found bool) + GetPacketCommitment(ctx sdk.Context, portID, channelID string, sequence uint64) []byte + GetNextSequenceSend(ctx sdk.Context, portID, channelID string) (uint64, bool) + LookupModuleByChannel(ctx sdk.Context, portID, channelID string) (string, *capabilitytypes.Capability, error) + WriteAcknowledgement(ctx sdk.Context, chanCap *capabilitytypes.Capability, packet exported.PacketI, acknowledgement exported.Acknowledgement) error +} diff --git a/x/ibc-hooks/types/keys.go b/x/ibc-hooks/types/keys.go index ff70ecf16cc..db7527bd1fb 100644 --- a/x/ibc-hooks/types/keys.go +++ b/x/ibc-hooks/types/keys.go @@ -1,10 +1,17 @@ package types const ( - ModuleName = "ibchooks" - RouterKey = ModuleName - StoreKey = "hooks-for-ibc" // not using the module name because of collisions with key "ibc" + ModuleName = "ibchooks" + RouterKey = ModuleName + StoreKey = "hooks-for-ibc" // not using the module name because of collisions with key "ibc" + IBCCallbackKey = "ibc_callback" IBCAsyncAckKey = "ibc_async_ack" - SenderPrefix = "ibc-wasm-hook-intermediary" + + MsgEmitAckKey = "emit_ack" + AttributeSender = "sender" + AttributeChannel = "channel" + AttributePacketSequence = "sequence" + + SenderPrefix = "ibc-wasm-hook-intermediary" ) diff --git a/x/ibc-hooks/types/tx.pb.go b/x/ibc-hooks/types/tx.pb.go index ff9d393306e..b42f89f411c 100644 --- a/x/ibc-hooks/types/tx.pb.go +++ b/x/ibc-hooks/types/tx.pb.go @@ -29,7 +29,9 @@ var _ = math.Inf const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package type MsgEmitIBCAck struct { - Sender string `protobuf:"bytes,1,opt,name=sender,proto3" json:"sender,omitempty" yaml:"sender"` + Sender string `protobuf:"bytes,1,opt,name=sender,proto3" json:"sender,omitempty" yaml:"sender"` + PacketSequence uint64 `protobuf:"varint,2,opt,name=packet_sequence,json=packetSequence,proto3" json:"packet_sequence,omitempty" yaml:"packet_sequence"` + Channel string `protobuf:"bytes,3,opt,name=channel,proto3" json:"channel,omitempty" yaml:"channel"` } func (m *MsgEmitIBCAck) Reset() { *m = MsgEmitIBCAck{} } @@ -72,6 +74,20 @@ func (m *MsgEmitIBCAck) GetSender() string { return "" } +func (m *MsgEmitIBCAck) GetPacketSequence() uint64 { + if m != nil { + return m.PacketSequence + } + return 0 +} + +func (m *MsgEmitIBCAck) GetChannel() string { + if m != nil { + return m.Channel + } + return "" +} + type MsgEmitIBCAckResponse struct { ContractResult string `protobuf:"bytes,1,opt,name=contract_result,json=contractResult,proto3" json:"contract_result,omitempty" yaml:"contract_result"` IbcAck string `protobuf:"bytes,2,opt,name=ibc_ack,json=ibcAck,proto3" json:"ibc_ack,omitempty" yaml:"ibc_ack"` @@ -132,27 +148,30 @@ func init() { func init() { proto.RegisterFile("osmosis/ibc-hooks/tx.proto", fileDescriptor_93268c51ed820a58) } var fileDescriptor_93268c51ed820a58 = []byte{ - // 307 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0xca, 0x2f, 0xce, 0xcd, - 0x2f, 0xce, 0x2c, 0xd6, 0xcf, 0x4c, 0x4a, 0xd6, 0xcd, 0xc8, 0xcf, 0xcf, 0x2e, 0xd6, 0x2f, 0xa9, - 0xd0, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x80, 0xca, 0xe9, 0x65, 0x26, 0x25, 0x83, 0xa5, - 0xa4, 0x44, 0xd2, 0xf3, 0xd3, 0xf3, 0xc1, 0x92, 0xfa, 0x20, 0x16, 0x44, 0x9d, 0x92, 0x15, 0x17, - 0xaf, 0x6f, 0x71, 0xba, 0x6b, 0x6e, 0x66, 0x89, 0xa7, 0x93, 0xb3, 0x63, 0x72, 0xb6, 0x90, 0x26, - 0x17, 0x5b, 0x71, 0x6a, 0x5e, 0x4a, 0x6a, 0x91, 0x04, 0xa3, 0x02, 0xa3, 0x06, 0xa7, 0x93, 0xe0, - 0xa7, 0x7b, 0xf2, 0xbc, 0x95, 0x89, 0xb9, 0x39, 0x56, 0x4a, 0x10, 0x71, 0xa5, 0x20, 0xa8, 0x02, - 0xa5, 0x4e, 0x46, 0x2e, 0x51, 0x14, 0xcd, 0x41, 0xa9, 0xc5, 0x05, 0xf9, 0x79, 0xc5, 0xa9, 0x42, - 0xce, 0x5c, 0xfc, 0xc9, 0xf9, 0x79, 0x25, 0x45, 0x89, 0xc9, 0x25, 0xf1, 0x45, 0xa9, 0xc5, 0xa5, - 0x39, 0x25, 0x50, 0xd3, 0xa4, 0x3e, 0xdd, 0x93, 0x17, 0x83, 0x98, 0x86, 0xa6, 0x40, 0x29, 0x88, - 0x0f, 0x26, 0x12, 0x04, 0x16, 0x10, 0xd2, 0xe6, 0x62, 0xcf, 0x4c, 0x4a, 0x8e, 0x4f, 0x4c, 0xce, - 0x96, 0x60, 0x02, 0x6b, 0x16, 0xfa, 0x74, 0x4f, 0x9e, 0x0f, 0xa2, 0x19, 0x2a, 0xa1, 0x14, 0xc4, - 0x96, 0x99, 0x94, 0xec, 0x98, 0x9c, 0x6d, 0x14, 0xcb, 0xc5, 0xec, 0x5b, 0x9c, 0x2e, 0x14, 0xc6, - 0xc5, 0x85, 0xe4, 0x17, 0x79, 0x3d, 0xf4, 0x50, 0xd0, 0x43, 0x71, 0xaf, 0x94, 0x3a, 0x01, 0x05, - 0x30, 0x0f, 0x39, 0xf9, 0x9f, 0x78, 0x24, 0xc7, 0x78, 0xe1, 0x91, 0x1c, 0xe3, 0x83, 0x47, 0x72, - 0x8c, 0x13, 0x1e, 0xcb, 0x31, 0x5c, 0x78, 0x2c, 0xc7, 0x70, 0xe3, 0xb1, 0x1c, 0x43, 0x94, 0x69, - 0x7a, 0x66, 0x49, 0x46, 0x69, 0x92, 0x5e, 0x72, 0x7e, 0xae, 0x3e, 0xd4, 0x30, 0xdd, 0x9c, 0xc4, - 0xa4, 0x62, 0x18, 0x47, 0xbf, 0xcc, 0xd0, 0x54, 0xbf, 0x02, 0x39, 0x8a, 0x2a, 0x0b, 0x52, 0x8b, - 0x93, 0xd8, 0xc0, 0xc1, 0x6f, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0xcc, 0x6e, 0x19, 0x15, 0xc4, - 0x01, 0x00, 0x00, + // 366 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x92, 0xcf, 0x4a, 0x2b, 0x31, + 0x14, 0xc6, 0x9b, 0xdb, 0x4b, 0xcb, 0x0d, 0xb4, 0xf7, 0xde, 0x41, 0xa5, 0xcc, 0x62, 0xa6, 0x64, + 0x63, 0x45, 0x3b, 0x83, 0x4a, 0x37, 0xee, 0x3a, 0xc5, 0x85, 0x8b, 0x22, 0x44, 0x70, 0x21, 0x48, + 0x99, 0xc4, 0x30, 0x0d, 0xf3, 0x27, 0xe3, 0x24, 0x95, 0xf6, 0x11, 0xdc, 0xf9, 0x22, 0xbe, 0x87, + 0xcb, 0x2e, 0x5d, 0x15, 0x69, 0xdf, 0xa0, 0x4f, 0x20, 0x9d, 0xc9, 0x40, 0xdb, 0x8d, 0xbb, 0xe4, + 0xfb, 0x7e, 0x27, 0xf9, 0xce, 0x49, 0xa0, 0x29, 0x64, 0x2c, 0x24, 0x97, 0x2e, 0x27, 0xb4, 0x3b, + 0x16, 0x22, 0x94, 0xae, 0x9a, 0x3a, 0x69, 0x26, 0x94, 0x30, 0xfe, 0x69, 0xcf, 0xe1, 0x84, 0xe6, + 0x96, 0x79, 0x10, 0x88, 0x40, 0xe4, 0xa6, 0xbb, 0x59, 0x15, 0x1c, 0x7a, 0x07, 0xb0, 0x31, 0x94, + 0xc1, 0x75, 0xcc, 0xd5, 0x8d, 0x37, 0xe8, 0xd3, 0xd0, 0x38, 0x81, 0x35, 0xc9, 0x92, 0x27, 0x96, + 0xb5, 0x40, 0x1b, 0x74, 0xfe, 0x78, 0xff, 0xd7, 0x0b, 0xbb, 0x31, 0xf3, 0xe3, 0xe8, 0x0a, 0x15, + 0x3a, 0xc2, 0x1a, 0x30, 0x06, 0xf0, 0x6f, 0xea, 0xd3, 0x90, 0xa9, 0x91, 0x64, 0xcf, 0x13, 0x96, + 0x50, 0xd6, 0xfa, 0xd5, 0x06, 0x9d, 0xdf, 0x9e, 0xb9, 0x5e, 0xd8, 0x47, 0x45, 0xcd, 0x1e, 0x80, + 0x70, 0xb3, 0x50, 0xee, 0xb4, 0x60, 0x9c, 0xc1, 0x3a, 0x1d, 0xfb, 0x49, 0xc2, 0xa2, 0x56, 0x35, + 0xbf, 0xd0, 0x58, 0x2f, 0xec, 0x66, 0x51, 0xac, 0x0d, 0x84, 0x4b, 0x04, 0xbd, 0x02, 0x78, 0xb8, + 0x93, 0x17, 0x33, 0x99, 0x8a, 0x44, 0xb2, 0x4d, 0x18, 0x2a, 0x12, 0x95, 0xf9, 0x54, 0x8d, 0x32, + 0x26, 0x27, 0x91, 0xd2, 0x0d, 0x6c, 0x85, 0xd9, 0x03, 0x10, 0x6e, 0x96, 0x0a, 0xce, 0x05, 0xe3, + 0x14, 0xd6, 0x39, 0xa1, 0x23, 0x9f, 0x86, 0x79, 0x27, 0x3b, 0x61, 0xb4, 0x81, 0x70, 0x8d, 0x13, + 0xda, 0xa7, 0xe1, 0xc5, 0x23, 0xac, 0x0e, 0x65, 0x60, 0xdc, 0x43, 0xb8, 0x35, 0x3e, 0xdb, 0xd9, + 0x9f, 0xbc, 0xb3, 0x93, 0xd7, 0x3c, 0xfe, 0x01, 0x28, 0x1b, 0xf2, 0x6e, 0x3f, 0x96, 0x16, 0x98, + 0x2f, 0x2d, 0xf0, 0xb5, 0xb4, 0xc0, 0xdb, 0xca, 0xaa, 0xcc, 0x57, 0x56, 0xe5, 0x73, 0x65, 0x55, + 0x1e, 0x7a, 0x01, 0x57, 0xe3, 0x09, 0x71, 0xa8, 0x88, 0x5d, 0x7d, 0x58, 0x37, 0xf2, 0x89, 0x2c, + 0x37, 0xee, 0xcb, 0x79, 0xcf, 0x9d, 0x6e, 0x7f, 0x8b, 0x59, 0xca, 0x24, 0xa9, 0xe5, 0x4f, 0x7e, + 0xf9, 0x1d, 0x00, 0x00, 0xff, 0xff, 0xee, 0xdd, 0x26, 0xd3, 0x38, 0x02, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -259,6 +278,18 @@ func (m *MsgEmitIBCAck) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.Channel) > 0 { + i -= len(m.Channel) + copy(dAtA[i:], m.Channel) + i = encodeVarintTx(dAtA, i, uint64(len(m.Channel))) + i-- + dAtA[i] = 0x1a + } + if m.PacketSequence != 0 { + i = encodeVarintTx(dAtA, i, uint64(m.PacketSequence)) + i-- + dAtA[i] = 0x10 + } if len(m.Sender) > 0 { i -= len(m.Sender) copy(dAtA[i:], m.Sender) @@ -327,6 +358,13 @@ func (m *MsgEmitIBCAck) Size() (n int) { if l > 0 { n += 1 + l + sovTx(uint64(l)) } + if m.PacketSequence != 0 { + n += 1 + sovTx(uint64(m.PacketSequence)) + } + l = len(m.Channel) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } return n } @@ -414,6 +452,57 @@ func (m *MsgEmitIBCAck) Unmarshal(dAtA []byte) error { } m.Sender = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field PacketSequence", wireType) + } + m.PacketSequence = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.PacketSequence |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Channel", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + 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 ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Channel = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTx(dAtA[iNdEx:]) diff --git a/x/ibc-hooks/types/types.go b/x/ibc-hooks/types/types.go new file mode 100644 index 00000000000..bc8f8e49b2e --- /dev/null +++ b/x/ibc-hooks/types/types.go @@ -0,0 +1,26 @@ +package types + +import channeltypes "github.com/cosmos/ibc-go/v4/modules/core/04-channel/types" + +type ContractAck struct { + ContractResult []byte `json:"contract_result"` + IbcAck []byte `json:"ibc_ack"` +} + +type RequestIBCAckI struct { + PacketSequence uint64 `json:"packet_sequence"` + Channel string `json:"channel"` +} + +type RequestAck struct { + RequestIBCAckI `json:"request_ack"` +} + +type IBCAsync struct { + RequestAck `json:"ibc_async"` +} + +type IBCAckResponse struct { + Packet channeltypes.Packet `json:"packet"` + ContractAck ContractAck `json:"contract_ack"` +} diff --git a/x/ibc-hooks/wasm_hook.go b/x/ibc-hooks/wasm_hook.go index d0777c34980..d03a05a0344 100644 --- a/x/ibc-hooks/wasm_hook.go +++ b/x/ibc-hooks/wasm_hook.go @@ -21,11 +21,6 @@ import ( "github.com/osmosis-labs/osmosis/x/ibc-hooks/types" ) -type ContractAck struct { - ContractResult []byte `json:"contract_result"` - IbcAck []byte `json:"ibc_ack"` -} - type WasmHooks struct { ContractKeeper *wasmkeeper.PermissionedKeeper ibcHooksKeeper *keeper.Keeper @@ -135,7 +130,7 @@ func (h WasmHooks) OnRecvPacketOverride(im IBCMiddleware, ctx sdk.Context, packe } } - fullAck := ContractAck{ContractResult: response.Data, IbcAck: ack.Acknowledgement()} + fullAck := types.ContractAck{ContractResult: response.Data, IbcAck: ack.Acknowledgement()} bz, err = json.Marshal(fullAck) if err != nil { return osmoutils.NewEmitErrorAcknowledgement(ctx, types.ErrBadResponse, err.Error()) From 447d8f14811f6331a3fdfdd2f42dda45cff78e58 Mon Sep 17 00:00:00 2001 From: Nicolas Lara Date: Fri, 5 May 2023 14:04:43 +0200 Subject: [PATCH 03/31] removed debug prints --- tests/ibc-hooks/async_acks_test.go | 10 ---------- x/ibc-hooks/keeper/keeper.go | 1 - 2 files changed, 11 deletions(-) diff --git a/tests/ibc-hooks/async_acks_test.go b/tests/ibc-hooks/async_acks_test.go index 63d6ee56066..0683f1f7c57 100644 --- a/tests/ibc-hooks/async_acks_test.go +++ b/tests/ibc-hooks/async_acks_test.go @@ -56,16 +56,6 @@ func (suite *HooksTestSuite) TestWasmHooksAsyncAcks() { packetJson, err := json.Marshal(packet) suite.Require().NoError(err) - //x := types.IBCAckResponse{ - // Packet: packet, - // ContractAck: types.ContractAck{ - // ContractResult: []byte("result"), - // IbcAck: []byte("ack"), - // }, - //} - //xJson, _ := json.Marshal(x) - //fmt.Println(string(xJson)) - msg := fmt.Sprintf(`{"force_emit_ibc_ack": {"packet": %s, "channel": "channel-0"}}`, packetJson) contractKeeper := wasmkeeper.NewDefaultPermissionKeeper(osmosisApp.WasmKeeper) _, err = contractKeeper.Execute(suite.chainA.GetContext(), contractAddr, suite.chainA.SenderAccount.GetAddress(), []byte(msg), sdk.NewCoins()) diff --git a/x/ibc-hooks/keeper/keeper.go b/x/ibc-hooks/keeper/keeper.go index 8fcea000d13..7795297612f 100644 --- a/x/ibc-hooks/keeper/keeper.go +++ b/x/ibc-hooks/keeper/keeper.go @@ -134,7 +134,6 @@ func (k Keeper) EmitIBCAck(ctx sdk.Context, sender, channel string, packetSequen } var ack types.IBCAckResponse - fmt.Println(string(bz)) err = json.Unmarshal(bz, &ack) if err != nil { return nil, sdkerrors.Wrap(err, "could not unmarshal ack") From b872a7d5f0a60b64755412347fb239dd057ca916 Mon Sep 17 00:00:00 2001 From: Nicolas Lara Date: Fri, 26 May 2023 11:57:23 +0200 Subject: [PATCH 04/31] cleanner acks --- .../contracts/crosschain-swaps/src/execute.rs | 2 +- osmoutils/ibc.go | 7 +- tests/ibc-hooks/async_acks_test.go | 40 +++++-- tests/ibc-hooks/bytecode/echo.wasm | Bin 162231 -> 158942 bytes .../testutils/contracts/echo/src/ibc.rs | 10 +- .../testutils/contracts/echo/src/lib.rs | 13 +-- x/ibc-hooks/README.md | 98 ++++++++++++++++++ x/ibc-hooks/keeper/keeper.go | 4 +- x/ibc-hooks/types/tx.pb.go | 2 +- x/ibc-hooks/types/types.go | 28 +++-- x/ibc-hooks/wasm_hook.go | 31 +++--- 11 files changed, 188 insertions(+), 47 deletions(-) diff --git a/cosmwasm/contracts/crosschain-swaps/src/execute.rs b/cosmwasm/contracts/crosschain-swaps/src/execute.rs index 8cd393d5ca2..a2b62528bef 100644 --- a/cosmwasm/contracts/crosschain-swaps/src/execute.rs +++ b/cosmwasm/contracts/crosschain-swaps/src/execute.rs @@ -6,7 +6,7 @@ use swaprouter::msg::ExecuteMsg as SwapRouterExecute; use crate::checks::{check_is_contract_governor, ensure_key_missing, validate_receiver}; use crate::consts::{MsgReplyID, CALLBACK_KEY}; -use crate::msg::{CrosschainSwapResponse, FailedDeliveryAction}; +use crate::msg::{AsyncResponse, CrosschainSwapResponse, FailedDeliveryAction}; use registry::proto::MsgTransferResponse; use crate::state::{ diff --git a/osmoutils/ibc.go b/osmoutils/ibc.go index 72ddedac3eb..eb5a348822a 100644 --- a/osmoutils/ibc.go +++ b/osmoutils/ibc.go @@ -2,6 +2,7 @@ package osmoutils import ( "encoding/json" + "fmt" sdk "github.com/cosmos/cosmos-sdk/types" transfertypes "github.com/cosmos/ibc-go/v4/modules/apps/transfer/types" channeltypes "github.com/cosmos/ibc-go/v4/modules/core/04-channel/types" @@ -11,15 +12,19 @@ import ( // NewEmitErrorAcknowledgement creates a new error acknowledgement after having emitted an event with the // details of the error. func NewEmitErrorAcknowledgement(ctx sdk.Context, err error, errorContexts ...string) channeltypes.Acknowledgement { + errorType := "ibc-acknowledgement-error" + logger := ctx.Logger().With("module", errorType) + attributes := make([]sdk.Attribute, len(errorContexts)+1) attributes[0] = sdk.NewAttribute("error", err.Error()) for i, s := range errorContexts { attributes[i+1] = sdk.NewAttribute("error-context", s) + logger.Error(fmt.Sprintf("error-context: %v", s)) } ctx.EventManager().EmitEvents(sdk.Events{ sdk.NewEvent( - "ibc-acknowledgement-error", + errorType, attributes..., ), }) diff --git a/tests/ibc-hooks/async_acks_test.go b/tests/ibc-hooks/async_acks_test.go index 0683f1f7c57..5d0e65ebea8 100644 --- a/tests/ibc-hooks/async_acks_test.go +++ b/tests/ibc-hooks/async_acks_test.go @@ -5,11 +5,24 @@ import ( "fmt" wasmkeeper "github.com/CosmWasm/wasmd/x/wasm/keeper" sdk "github.com/cosmos/cosmos-sdk/types" + channeltypes "github.com/cosmos/ibc-go/v4/modules/core/04-channel/types" ibctesting "github.com/cosmos/ibc-go/v4/testing" + "github.com/osmosis-labs/osmosis/v15/app" ) +func (suite *HooksTestSuite) forceContractToEmitAckForPacket(osmosisApp *app.OsmosisApp, contractAddr sdk.AccAddress, packet channeltypes.Packet) ([]byte, error) { + packetJson, err := json.Marshal(packet) + suite.Require().NoError(err) + + msg := fmt.Sprintf(`{"force_emit_ibc_ack": {"packet": %s, "channel": "channel-0"}}`, packetJson) + contractKeeper := wasmkeeper.NewDefaultPermissionKeeper(osmosisApp.WasmKeeper) + return contractKeeper.Execute(suite.chainA.GetContext(), contractAddr, suite.chainA.SenderAccount.GetAddress(), []byte(msg), sdk.NewCoins()) + +} + func (suite *HooksTestSuite) TestWasmHooksAsyncAcks() { sender := suite.chainB.SenderAccount.GetAddress() + osmosisApp := suite.chainA.GetOsmosisApp() // Instantiate a contract that knows how to send async Acks suite.chainA.StoreContractCode(&suite.Suite, "./bytecode/echo.wasm") @@ -26,10 +39,19 @@ func (suite *HooksTestSuite) TestWasmHooksAsyncAcks() { suite.Require().NotNil(ack) // the ack has been written - osmosisApp := suite.chainA.GetOsmosisApp() allAcks := osmosisApp.IBCKeeper.ChannelKeeper.GetAllPacketAcks(suite.chainA.GetContext()) suite.Require().Equal(1, len(allAcks)) + // Try to emit an ack for a packet that already has been acked. This should fail + + // we extract the packet that has been acked here to test later that our contract can't emit an ack for it + alreadyAckedPacket, err := ibctesting.ParsePacketFromEvents(sendResult.GetEvents()) + suite.Require().NoError(err) + + _, err = suite.forceContractToEmitAckForPacket(osmosisApp, contractAddr, alreadyAckedPacket) + suite.Require().Error(err) + suite.Require().Contains(err.Error(), "no ack actor set for channel-0 packet 1") + // Calls that specify async Acks work and no Acks are sent memo = fmt.Sprintf(`{"wasm": {"contract": "%s", "msg": {"async": {"use_async": true}}}}`, contractAddr) suite.fundAccount(suite.chainB, sender) @@ -50,15 +72,15 @@ func (suite *HooksTestSuite) TestWasmHooksAsyncAcks() { allAcks = osmosisApp.IBCKeeper.ChannelKeeper.GetAllPacketAcks(suite.chainA.GetContext()) suite.Require().Equal(1, len(allAcks)) - // TODO: add test of packet 1 not being found for emit ack (as it's already been acked) + // Store a second contract and ask that one to emit an ack for the packet that the first contract sent + contractAddr2 := suite.chainA.InstantiateContract(&suite.Suite, "{}", 1) + _, err = suite.forceContractToEmitAckForPacket(osmosisApp, contractAddr2, packet) + // This should fail because the new contract is not authorized to emit acks for that packet + suite.Require().Error(err) + suite.Require().Contains(err.Error(), "is not allowed to send an ack for channel channel-0 packet 2") - // We store that only that contract can send an ack for that packet sequence - packetJson, err := json.Marshal(packet) - suite.Require().NoError(err) - - msg := fmt.Sprintf(`{"force_emit_ibc_ack": {"packet": %s, "channel": "channel-0"}}`, packetJson) - contractKeeper := wasmkeeper.NewDefaultPermissionKeeper(osmosisApp.WasmKeeper) - _, err = contractKeeper.Execute(suite.chainA.GetContext(), contractAddr, suite.chainA.SenderAccount.GetAddress(), []byte(msg), sdk.NewCoins()) + // only the contract that sent the packet can send an ack for that packet sequence + _, err = suite.forceContractToEmitAckForPacket(osmosisApp, contractAddr, packet) suite.Require().NoError(err) allAcks = osmosisApp.IBCKeeper.ChannelKeeper.GetAllPacketAcks(suite.chainA.GetContext()) diff --git a/tests/ibc-hooks/bytecode/echo.wasm b/tests/ibc-hooks/bytecode/echo.wasm index 4c7a586b063ce12c54d2e0b3043d4a0c9218a74d..fc51d82f64b6593e84d82724790e362af3cecb27 100644 GIT binary patch literal 158942 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�Bp#QHF15|75LTz8=ly(bd` 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 literal 162231 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 diff --git a/tests/ibc-hooks/testutils/contracts/echo/src/ibc.rs b/tests/ibc-hooks/testutils/contracts/echo/src/ibc.rs index 229340031de..401770a4059 100644 --- a/tests/ibc-hooks/testutils/contracts/echo/src/ibc.rs +++ b/tests/ibc-hooks/testutils/contracts/echo/src/ibc.rs @@ -33,17 +33,23 @@ pub struct Packet { pub timeout_timestamp: Option, } +// The following are part of the wasm_hooks interface #[cw_serde] -pub enum IBCAsync { +pub enum IBCAsyncOptions { #[serde(rename = "request_ack")] RequestAck { /// The source channel (osmosis side) of the IBC packet - channel: String, + source_channel: String, /// The sequence number that the packet was sent with packet_sequence: u64, }, } +#[cw_serde] +pub struct OnRecvPacketAsyncResponse { + pub is_async_ack: bool, +} + #[cw_serde] pub struct ContractAck { pub contract_result: String, diff --git a/tests/ibc-hooks/testutils/contracts/echo/src/lib.rs b/tests/ibc-hooks/testutils/contracts/echo/src/lib.rs index 67be000882e..463d4a4f4bd 100644 --- a/tests/ibc-hooks/testutils/contracts/echo/src/lib.rs +++ b/tests/ibc-hooks/testutils/contracts/echo/src/lib.rs @@ -4,7 +4,7 @@ use cosmwasm_schema::cw_serde; #[cfg(not(feature = "library"))] use cosmwasm_std::entry_point; use cosmwasm_std::{to_binary, DepsMut, Env, MessageInfo, Response, StdError}; -use ibc::{ContractAck, IBCAckResponse, IBCAsync, Packet}; +use ibc::{ContractAck, IBCAckResponse, IBCAsyncOptions, OnRecvPacketAsyncResponse, Packet}; use osmosis_std_derive::CosmwasmExt; use state::INFLIGHT_PACKETS; @@ -31,7 +31,7 @@ pub enum ExecuteMsg { #[cw_serde] pub enum SudoMsg { #[serde(rename = "ibc_async")] - IBCAsync(IBCAsync), + IBCAsync(IBCAsyncOptions), } // Instantiate @@ -83,7 +83,8 @@ pub fn execute( ExecuteMsg::Echo { msg } => Ok(simple_response(msg)), ExecuteMsg::Async { use_async } => { if use_async { - Ok(Response::new().add_attribute("ibc_async_ack", "true")) + let response_data = OnRecvPacketAsyncResponse { is_async_ack: true }; + Ok(Response::new().set_data(to_binary(&response_data)?)) } else { Ok(Response::default()) } @@ -107,11 +108,11 @@ pub fn execute( #[cfg_attr(not(feature = "library"), entry_point)] pub fn sudo(deps: DepsMut, _env: Env, msg: SudoMsg) -> Result { match msg { - SudoMsg::IBCAsync(IBCAsync::RequestAck { - channel, + SudoMsg::IBCAsync(IBCAsyncOptions::RequestAck { + source_channel, packet_sequence, }) => Ok(Response::new().set_data(to_binary(&IBCAckResponse { - packet: INFLIGHT_PACKETS.load(deps.storage, (&channel, packet_sequence))?, + packet: INFLIGHT_PACKETS.load(deps.storage, (&source_channel, packet_sequence))?, contract_ack: ContractAck { contract_result: base64::encode("success"), ibc_ack: base64::encode("ack"), diff --git a/x/ibc-hooks/README.md b/x/ibc-hooks/README.md index 1955c925d96..b0675e06f92 100644 --- a/x/ibc-hooks/README.md +++ b/x/ibc-hooks/README.md @@ -180,6 +180,104 @@ pub enum SudoMsg { } ``` +### Async Acks + +IBC supports the ability to send an ack back to the sender of the packet asynchronously. This is useful for +cases where the packet is received, but the ack is not immediately known. For example, if the packet is being +forwarded to another chain, the ack may not be known until the packet is received on the other chain. + +#### Making contract Acks async + +To support this, we allow contracts to return an `IBCAsync` response from the function being executed when the +packet is received. That response specifies that the ack should be handled asynchronously. + +Concretely the contract should return: + +```rust +#[cw_serde] +pub struct OnRecvPacketAsyncResponse { + pub is_async_ack: bool, +} +``` + +if `is_async_ack` is set to true, `OnRecvPacket` will return `nil` and the ack will not be written. Instead, the +contract wil be stored as the "ack actor" for the packet so that only that contract is allowed to send an ack +for it. + +It is up to the contract developers to decide which conditions will trigger the ack to be sent. + +#### Sending an async ack + +To send the async ack, the contract needs to send the MsgEmitIBCAck message to the chain. This message will +then make a sudo call to the contract requesting the ack and write the ack to state. + +That message can be specified in the contract as: + +```rust +#[derive( + Clone, + PartialEq, + Eq, + ::prost::Message, + serde::Serialize, + serde::Deserialize, + schemars::JsonSchema, + CosmwasmExt, +)] +#[proto_message(type_url = "/osmosis.ibchooks.MsgEmitIBCAck")] +pub struct MsgEmitIBCAck { + #[prost(string, tag = "1")] + pub sender: ::prost::alloc::string::String, + #[prost(uint64, tag = "2")] + pub packet_sequence: u64, + #[prost(string, tag = "3")] + pub channel: ::prost::alloc::string::String, +} +``` + +The contract is expected to implement the following sudo message handler: + +```rust +#[cw_serde] +pub enum IBCAsyncOptions { + #[serde(rename = "request_ack")] + RequestAck { + /// The source channel (osmosis side) of the IBC packet + source_channel: String, + /// The sequence number that the packet was sent with + packet_sequence: u64, + }, +} + +#[cw_serde] +pub enum SudoMsg { + #[serde(rename = "ibc_async")] + IBCAsync(IBCAsyncOptions), +} +``` + +and that sudo call should return an `IBCAckResponse`: + +```rust +#[cw_serde] +pub struct IBCAckResponse { + pub packet: Packet, + pub contract_ack: ContractAck, +} +``` + +--- + +TODO: I think this is overcomplicated and I can't remember why I wrote it like this. + +I think the idea was that the message could be sent by anyone and the sudo message then is only sent to the proper +contract, but since we only allow the contract to send the message, we could just include the packet and response +and have the chain verify and write the ack directly instead of doing the sudo round trip. + +Alternatively, we keep the sudo message but allow anyone to call MsgEmitIBCAck. + +Feedback? + # Testing strategy See go tests. \ No newline at end of file diff --git a/x/ibc-hooks/keeper/keeper.go b/x/ibc-hooks/keeper/keeper.go index 7795297612f..35e2be02f4e 100644 --- a/x/ibc-hooks/keeper/keeper.go +++ b/x/ibc-hooks/keeper/keeper.go @@ -119,9 +119,9 @@ func (k Keeper) EmitIBCAck(ctx sdk.Context, sender, channel string, packetSequen } msg := types.IBCAsync{ - RequestAck: types.RequestAck{RequestIBCAckI: types.RequestIBCAckI{ + RequestAck: types.RequestAck{RequestAckI: types.RequestAckI{ PacketSequence: packetSequence, - Channel: channel, + SourceChannel: channel, }}, } msgBytes, err := json.Marshal(msg) diff --git a/x/ibc-hooks/types/tx.pb.go b/x/ibc-hooks/types/tx.pb.go index b42f89f411c..16d0e47eba1 100644 --- a/x/ibc-hooks/types/tx.pb.go +++ b/x/ibc-hooks/types/tx.pb.go @@ -473,7 +473,7 @@ func (m *MsgEmitIBCAck) Unmarshal(dAtA []byte) error { } case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Channel", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field SourceChannel", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { diff --git a/x/ibc-hooks/types/types.go b/x/ibc-hooks/types/types.go index bc8f8e49b2e..65613470186 100644 --- a/x/ibc-hooks/types/types.go +++ b/x/ibc-hooks/types/types.go @@ -2,24 +2,40 @@ package types import channeltypes "github.com/cosmos/ibc-go/v4/modules/core/04-channel/types" -type ContractAck struct { - ContractResult []byte `json:"contract_result"` - IbcAck []byte `json:"ibc_ack"` +// Async: The following types represent the response sent by a contract on OnRecvPacket when it wants the ack to be async + +// OnRecvPacketAsyncAckResponse the response a contract sends to instruct the module to make the ack async +type OnRecvPacketAsyncAckResponse struct { + IsAsyncAck bool `json:"is_async_ack"` } -type RequestIBCAckI struct { +// Async The following types are used to ask a contract that has sent a packet to generate an ack for it + +// RequestAckI internals of IBCAsync +type RequestAckI struct { PacketSequence uint64 `json:"packet_sequence"` - Channel string `json:"channel"` + SourceChannel string `json:"source_channel"` } +// RequestAck internals of IBCAsync type RequestAck struct { - RequestIBCAckI `json:"request_ack"` + RequestAckI `json:"request_ack"` } +// IBCAsync is the sudo message to be sent to the contract for it to generate an ack for a sent packet type IBCAsync struct { RequestAck `json:"ibc_async"` } +// General + +// ContractAck is the response to be stored when a wasm hook is executed +type ContractAck struct { + ContractResult []byte `json:"contract_result"` + IbcAck []byte `json:"ibc_ack"` +} + +// IBCAckResponse is the response that a contract returns from the sudo() call on OnRecvPacket or RequestAck type IBCAckResponse struct { Packet channeltypes.Packet `json:"packet"` ContractAck ContractAck `json:"contract_ack"` diff --git a/x/ibc-hooks/wasm_hook.go b/x/ibc-hooks/wasm_hook.go index d03a05a0344..0a49a7155f6 100644 --- a/x/ibc-hooks/wasm_hook.go +++ b/x/ibc-hooks/wasm_hook.go @@ -4,12 +4,10 @@ import ( "encoding/json" "fmt" wasmkeeper "github.com/CosmWasm/wasmd/x/wasm/keeper" + wasmtypes "github.com/CosmWasm/wasmd/x/wasm/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" capabilitytypes "github.com/cosmos/cosmos-sdk/x/capability/types" "github.com/osmosis-labs/osmosis/x/ibc-hooks/keeper" - "strings" - - wasmtypes "github.com/CosmWasm/wasmd/x/wasm/types" "github.com/osmosis-labs/osmosis/osmoutils" @@ -111,25 +109,20 @@ func (h WasmHooks) OnRecvPacketOverride(im IBCMiddleware, ctx sdk.Context, packe return osmoutils.NewEmitErrorAcknowledgement(ctx, types.ErrWasmError, err.Error()) } - // ToDo: Check if the contract is whitelisted to do AsyncAcks - - // Check if the contract has added the Async IBC acknowledgement event. If so, return nil - events := ctx.EventManager().Events() - for i := len(events) - 1; i >= 0; i-- { - // We iterate in reverse order, as the event we're looking for should be towards the end. - // Most times it will be the last event, unless it was issued by a submessage - // TODO: Do we want to allow submessages to make the acks async? - event := events[i] - if event.Type == "wasm" { - for _, attr := range event.Attributes { - if string(attr.Key) == types.IBCAsyncAckKey && strings.ToLower(string(attr.Value)) == "true" { - h.ibcHooksKeeper.StorePacketAckActor(ctx, packet.GetSourceChannel(), packet.GetSequence(), contractAddr.String()) - return nil - } - } + // Check if the contract is requesting for the ack to be async. + var asyncAckRequest types.OnRecvPacketAsyncAckResponse + err = json.Unmarshal(response.Data, &asyncAckRequest) + if err == nil { + // If unmarshalling succeeds, the contract is requesting for the ack to be async. + if asyncAckRequest.IsAsyncAck { // in which case IsAsyncAck is expected to be set to true + // TODO: Do we want to check that only whitelisted contracts can do AsyncAcks? + // Store the contract as the packet's ack actor and return nil + h.ibcHooksKeeper.StorePacketAckActor(ctx, packet.GetSourceChannel(), packet.GetSequence(), contractAddr.String()) + return nil } } + // If the ack is not async, we continue generating the ack and return it fullAck := types.ContractAck{ContractResult: response.Data, IbcAck: ack.Acknowledgement()} bz, err = json.Marshal(fullAck) if err != nil { From cd1e9eac1b0fff0ca3bcf1b1236f9dab35f54c06 Mon Sep 17 00:00:00 2001 From: Nicolas Lara Date: Wed, 31 May 2023 10:15:30 +0200 Subject: [PATCH 05/31] Update x/ibc-hooks/README.md Co-authored-by: Dev Ojha --- x/ibc-hooks/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/x/ibc-hooks/README.md b/x/ibc-hooks/README.md index b0675e06f92..dde130ce01a 100644 --- a/x/ibc-hooks/README.md +++ b/x/ibc-hooks/README.md @@ -186,6 +186,8 @@ IBC supports the ability to send an ack back to the sender of the packet asynchr cases where the packet is received, but the ack is not immediately known. For example, if the packet is being forwarded to another chain, the ack may not be known until the packet is received on the other chain. +Note this ACK does not imply full revertability. It is possible unrevertable actions have occured even if there is an Ack Error. (This is distinct from the behavior of ICS-20 transfers) + #### Making contract Acks async To support this, we allow contracts to return an `IBCAsync` response from the function being executed when the From 67b59a4a8ceb38dc7fc784d366fa2e81df48862a Mon Sep 17 00:00:00 2001 From: Nicolas Lara Date: Wed, 31 May 2023 10:49:25 +0200 Subject: [PATCH 06/31] added use case to readme --- x/ibc-hooks/README.md | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/x/ibc-hooks/README.md b/x/ibc-hooks/README.md index dde130ce01a..5fd006f8820 100644 --- a/x/ibc-hooks/README.md +++ b/x/ibc-hooks/README.md @@ -186,7 +186,25 @@ IBC supports the ability to send an ack back to the sender of the packet asynchr cases where the packet is received, but the ack is not immediately known. For example, if the packet is being forwarded to another chain, the ack may not be known until the packet is received on the other chain. -Note this ACK does not imply full revertability. It is possible unrevertable actions have occured even if there is an Ack Error. (This is distinct from the behavior of ICS-20 transfers) +Note this ACK does not imply full revertability. It is possible that unrevertable actions have occurred +even if there is an Ack Error. (This is distinct from the behavior of ICS-20 transfers). If you want to ensure +revertability, your contract should be implemented in a way that actions are not finalized until a success ack +is received. + +#### Use case + +Async acks are useful in cases where the contract needs to wait for a response from another chain before +returning a result to the caller. + +For example, if you want to send tokens to another chain after the contract is executed you need to +add a new ibc packet and wait for its ack. + +In the synchronous acks case, the caller will receive an ack from the contract before the second packet +has been processed. This means that the caller will have to wait (and potentially track) if the second +packet has been processed successfully or not. + +With async acks, you contract can take this responsibility and only send an ack to the caller once the +second packet has been processed #### Making contract Acks async From 07446e719c2369efab6e90332d39242c504cf1f7 Mon Sep 17 00:00:00 2001 From: Nicolas Lara Date: Wed, 31 May 2023 10:55:09 +0200 Subject: [PATCH 07/31] clippy --- cosmwasm/contracts/crosschain-registry/src/execute.rs | 2 +- cosmwasm/contracts/crosschain-swaps/src/execute.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cosmwasm/contracts/crosschain-registry/src/execute.rs b/cosmwasm/contracts/crosschain-registry/src/execute.rs index 84829b9720e..4d2ff7964ce 100644 --- a/cosmwasm/contracts/crosschain-registry/src/execute.rs +++ b/cosmwasm/contracts/crosschain-registry/src/execute.rs @@ -828,7 +828,7 @@ mod tests { let unauthorized_remove_msg = ExecuteMsg::ModifyContractAlias { operations: vec![ContractAliasInput { operation: Operation::Remove, - alias: alias, + alias, address: Some(address), new_alias: None, }], diff --git a/cosmwasm/contracts/crosschain-swaps/src/execute.rs b/cosmwasm/contracts/crosschain-swaps/src/execute.rs index a2b62528bef..8cd393d5ca2 100644 --- a/cosmwasm/contracts/crosschain-swaps/src/execute.rs +++ b/cosmwasm/contracts/crosschain-swaps/src/execute.rs @@ -6,7 +6,7 @@ use swaprouter::msg::ExecuteMsg as SwapRouterExecute; use crate::checks::{check_is_contract_governor, ensure_key_missing, validate_receiver}; use crate::consts::{MsgReplyID, CALLBACK_KEY}; -use crate::msg::{AsyncResponse, CrosschainSwapResponse, FailedDeliveryAction}; +use crate::msg::{CrosschainSwapResponse, FailedDeliveryAction}; use registry::proto::MsgTransferResponse; use crate::state::{ From 415a40c6089c33b3ed3890c16e17f48effa21c2f Mon Sep 17 00:00:00 2001 From: Nicolas Lara Date: Wed, 31 May 2023 11:11:51 +0200 Subject: [PATCH 08/31] clippy --- x/ibc-rate-limit/contracts/rate-limiter/src/sudo.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/x/ibc-rate-limit/contracts/rate-limiter/src/sudo.rs b/x/ibc-rate-limit/contracts/rate-limiter/src/sudo.rs index 36a16f638d4..c42b5ea7e2d 100644 --- a/x/ibc-rate-limit/contracts/rate-limiter/src/sudo.rs +++ b/x/ibc-rate-limit/contracts/rate-limiter/src/sudo.rs @@ -21,6 +21,7 @@ pub fn process_packet( #[cfg(test)] channel_value_mock: Option, ) -> Result { let (channel_id, denom) = packet.path_data(&direction); + #[allow(clippy::needless_borrow)] let path = &Path::new(&channel_id, &denom); let funds = packet.get_funds(); @@ -144,6 +145,7 @@ fn add_rate_limit_attributes(response: Response, result: &RateLimit) -> Response pub fn undo_send(deps: DepsMut, packet: Packet) -> Result { // Sudo call. Only go modules should be allowed to access this let (channel_id, denom) = packet.path_data(&FlowType::Out); // Sends have direction out. + #[allow(clippy::needless_borrow)] let path = &Path::new(&channel_id, &denom); let any_path = Path::new("any", &denom); let funds = packet.get_funds(); From fa9d04440bae63620363856bd7f9b24e31fedec2 Mon Sep 17 00:00:00 2001 From: Nicolas Lara Date: Wed, 31 May 2023 11:13:07 +0200 Subject: [PATCH 09/31] updated hooks to latest --- go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go.mod b/go.mod index 93b622c9e3a..6b1123705eb 100644 --- a/go.mod +++ b/go.mod @@ -23,7 +23,7 @@ require ( github.com/osmosis-labs/osmosis/osmomath v0.0.3-dev.0.20230516205127-c213fddde069 github.com/osmosis-labs/osmosis/osmoutils v0.0.0-20230516205127-c213fddde069 github.com/osmosis-labs/osmosis/x/epochs v0.0.0-20230328024000-175ec88e4304 - github.com/osmosis-labs/osmosis/x/ibc-hooks v0.0.0-20230331072320-5d6f6cfa2627 + github.com/osmosis-labs/osmosis/x/ibc-hooks v0.0.0-20230531091151-415a40c6089c github.com/pkg/errors v0.9.1 github.com/rakyll/statik v0.1.7 github.com/spf13/cast v1.5.1 From 25cf51a8828ab0207d795614d6d92f0aab88966c Mon Sep 17 00:00:00 2001 From: Nicolas Lara Date: Wed, 31 May 2023 11:20:24 +0200 Subject: [PATCH 10/31] added changelog --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 771185234da..0159989657d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -50,7 +50,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 * [#4830](https://github.com/osmosis-labs/osmosis/pull/4830) Add gas cost when we AddToGaugeRewards, linearly increase with coins to add * [#4886](https://github.com/osmosis-labs/osmosis/pull/4886) Implement MsgSplitRouteSwapExactAmountIn and MsgSplitRouteSwapExactAmountOut that supports route splitting. * [#5000](https://github.com/osmosis-labs/osmosis/pull/5000) osmomath.Power panics for base < 1 to temporarily restrict broken logic for such base. - * [#4827] (https://github.com/osmosis-labs/osmosis/pull/4827) Protorev: Change highest liquidity pool updating from weekly to daily and change dev fee payout from weekly to after every trade. + * [#4827](https://github.com/osmosis-labs/osmosis/pull/4827) Protorev: Change highest liquidity pool updating from weekly to daily and change dev fee payout from weekly to after every trade. + * [#5072](https://github.com/osmosis-labs/osmosis/pull/5072) IBC-hooks: Add support for async acks when processing onRecvPacket ### Misc Improvements From 9be127ce1f52f6e55d58d7f430ce17272316a34d Mon Sep 17 00:00:00 2001 From: Nicolas Lara Date: Wed, 31 May 2023 11:20:43 +0200 Subject: [PATCH 11/31] updated deps --- go.mod | 3 +-- go.sum | 6 ++---- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 6b1123705eb..0f98c16cfdc 100644 --- a/go.mod +++ b/go.mod @@ -56,11 +56,10 @@ require ( github.com/curioswitch/go-reassign v0.2.0 // indirect github.com/docker/distribution v2.8.2+incompatible // indirect github.com/felixge/httpsnoop v1.0.2 // indirect - github.com/go-playground/universal-translator v0.18.0 // indirect + github.com/go-playground/locales v0.14.0 // indirect github.com/google/btree v1.1.2 // indirect github.com/junk1tm/musttag v0.5.0 // indirect github.com/kkHAIKE/contextcheck v1.1.4 // indirect - github.com/leodido/go-urn v1.2.1 // indirect github.com/maratori/testableexamples v1.0.0 // indirect github.com/nunnatsa/ginkgolinter v0.9.0 // indirect github.com/regen-network/cosmos-proto v0.3.1 // indirect diff --git a/go.sum b/go.sum index b8bd3d30bbf..d06999e428d 100644 --- a/go.sum +++ b/go.sum @@ -406,7 +406,6 @@ github.com/go-playground/locales v0.14.0 h1:u50s323jtVGugKlcYeyzC0etD1HifMjqmJqb github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs= github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= github.com/go-playground/universal-translator v0.18.0 h1:82dyy6p4OuJq4/CByFNOn/jYrnRPArHwAcmLoJZxyho= -github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA= github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= github.com/go-playground/validator/v10 v10.11.1 h1:prmOlTVv+YjZjmRmNSF3VmspqJIxJWXmqUsHwfTRRkQ= github.com/go-sourcemap/sourcemap v2.1.3+incompatible/go.mod h1:F8jJfvm2KbVjc5NqelyYJmf/v5J0dwNLS2mL4sNA1Jg= @@ -770,7 +769,6 @@ github.com/ldez/tagliatelle v0.4.0/go.mod h1:mNtTfrHy2haaBAw+VT7IBV6VXBThS7TCreY github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8= github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= github.com/leodido/go-urn v1.2.1 h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w= -github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY= github.com/leonklingele/grouper v1.1.1 h1:suWXRU57D4/Enn6pXR0QVqqWWrnJ9Osrz+5rjt8ivzU= github.com/leonklingele/grouper v1.1.1/go.mod h1:uk3I3uDfi9B6PeUjsCKi6ndcf63Uy7snXgR4yDYQVDY= github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= @@ -944,8 +942,8 @@ github.com/osmosis-labs/osmosis/osmoutils v0.0.0-20230516205127-c213fddde069 h1: github.com/osmosis-labs/osmosis/osmoutils v0.0.0-20230516205127-c213fddde069/go.mod h1:hk/o9/kmTSZmZqwXcSrPuwj/gpRMCqbE/d3vj6teL2A= github.com/osmosis-labs/osmosis/x/epochs v0.0.0-20230328024000-175ec88e4304 h1:RIrWLzIiZN5Xd2JOfSOtGZaf6V3qEQYg6EaDTAkMnCo= github.com/osmosis-labs/osmosis/x/epochs v0.0.0-20230328024000-175ec88e4304/go.mod h1:yPWoJTj5RKrXKUChAicp+G/4Ni/uVEpp27mi/FF/L9c= -github.com/osmosis-labs/osmosis/x/ibc-hooks v0.0.0-20230331072320-5d6f6cfa2627 h1:A0SwZgp4bmJFbivYJc8mmVhMjrr3EdUZluBYFke11+w= -github.com/osmosis-labs/osmosis/x/ibc-hooks v0.0.0-20230331072320-5d6f6cfa2627/go.mod h1:w+bI52bxyC5RwmymC1cK3pYzSNvmGAe5uOzqUzj9suU= +github.com/osmosis-labs/osmosis/x/ibc-hooks v0.0.0-20230531091151-415a40c6089c h1:cOsyusuELkrcZyC6gaTRNBZr1Z4O/Nywq2GsnA376/Y= +github.com/osmosis-labs/osmosis/x/ibc-hooks v0.0.0-20230531091151-415a40c6089c/go.mod h1:m/e6INzaXZfdLljqzy4OBXB6so/UVyk/UdnGN4H5OHM= github.com/osmosis-labs/wasmd v0.31.0-osmo-v16 h1:X747cZYdnqc/+RV48iPVeGprpVb/fUWSaKGsZUWrdbg= github.com/osmosis-labs/wasmd v0.31.0-osmo-v16/go.mod h1:Rf8zW/GgBQyFRRB4s62VQHWA6sTlMFSjoDQQpoq64iI= github.com/otiai10/copy v1.2.0/go.mod h1:rrF5dJ5F0t/EWSYODDu4j9/vEeYHMkc8jt0zJChqQWw= From d3f7b1e488938f9e5be3eafb461d235ea57fb4c0 Mon Sep 17 00:00:00 2001 From: Nicolas Lara Date: Wed, 31 May 2023 11:33:16 +0200 Subject: [PATCH 12/31] added proto fix and todo --- x/ibc-hooks/keeper/keeper.go | 2 ++ x/ibc-hooks/types/tx.pb.go | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/x/ibc-hooks/keeper/keeper.go b/x/ibc-hooks/keeper/keeper.go index 35e2be02f4e..5e00020b9cc 100644 --- a/x/ibc-hooks/keeper/keeper.go +++ b/x/ibc-hooks/keeper/keeper.go @@ -147,6 +147,8 @@ func (k Keeper) EmitIBCAck(ctx sdk.Context, sender, channel string, packetSequen newAck = channeltypes.NewResultAcknowledgement(jsonAck) } + // ToDo: handle error acks here! + err = k.channelKeeper.WriteAcknowledgement(ctx, cap, ack.Packet, newAck) if err != nil { return nil, sdkerrors.Wrap(err, "could not write acknowledgement") diff --git a/x/ibc-hooks/types/tx.pb.go b/x/ibc-hooks/types/tx.pb.go index 16d0e47eba1..b42f89f411c 100644 --- a/x/ibc-hooks/types/tx.pb.go +++ b/x/ibc-hooks/types/tx.pb.go @@ -473,7 +473,7 @@ func (m *MsgEmitIBCAck) Unmarshal(dAtA []byte) error { } case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SourceChannel", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Channel", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { From 5aebc1999b7950773d98e431579d5f266a8cb334 Mon Sep 17 00:00:00 2001 From: Nicolas Lara Date: Fri, 2 Jun 2023 12:17:20 +0200 Subject: [PATCH 13/31] added initial implementation of ack errors --- tests/ibc-hooks/async_acks_test.go | 73 ++++++++++++++++-- tests/ibc-hooks/bytecode/counter.wasm | Bin 161782 -> 162007 bytes tests/ibc-hooks/bytecode/echo.wasm | Bin 158942 -> 165377 bytes .../contracts/counter/src/contract.rs | 8 +- .../testutils/contracts/echo/src/ibc.rs | 15 ++++ .../testutils/contracts/echo/src/lib.rs | 30 ++++--- .../testutils/contracts/echo/src/state.rs | 2 +- x/ibc-hooks/keeper/keeper.go | 37 ++++++--- x/ibc-hooks/types/errors.go | 13 ++-- x/ibc-hooks/types/types.go | 43 ++++++++++- 10 files changed, 180 insertions(+), 41 deletions(-) diff --git a/tests/ibc-hooks/async_acks_test.go b/tests/ibc-hooks/async_acks_test.go index d25420c2c7e..0500bbe6f21 100644 --- a/tests/ibc-hooks/async_acks_test.go +++ b/tests/ibc-hooks/async_acks_test.go @@ -7,16 +7,17 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" channeltypes "github.com/cosmos/ibc-go/v4/modules/core/04-channel/types" ibctesting "github.com/cosmos/ibc-go/v4/testing" + "github.com/osmosis-labs/osmosis/osmoutils" "github.com/osmosis-labs/osmosis/v15/app" ) -func (suite *HooksTestSuite) forceContractToEmitAckForPacket(osmosisApp *app.OsmosisApp, contractAddr sdk.AccAddress, packet channeltypes.Packet) ([]byte, error) { +func (suite *HooksTestSuite) forceContractToEmitAckForPacket(osmosisApp *app.OsmosisApp, ctx sdk.Context, contractAddr sdk.AccAddress, packet channeltypes.Packet, success bool) ([]byte, error) { packetJson, err := json.Marshal(packet) suite.Require().NoError(err) - msg := fmt.Sprintf(`{"force_emit_ibc_ack": {"packet": %s, "channel": "channel-0"}}`, packetJson) + msg := fmt.Sprintf(`{"force_emit_ibc_ack": {"packet": %s, "channel": "channel-0", "success": %v }}`, packetJson, success) contractKeeper := wasmkeeper.NewDefaultPermissionKeeper(osmosisApp.WasmKeeper) - return contractKeeper.Execute(suite.chainA.GetContext(), contractAddr, suite.chainA.SenderAccount.GetAddress(), []byte(msg), sdk.NewCoins()) + return contractKeeper.Execute(ctx, contractAddr, suite.chainA.SenderAccount.GetAddress(), []byte(msg), sdk.NewCoins()) } @@ -48,7 +49,7 @@ func (suite *HooksTestSuite) TestWasmHooksAsyncAcks() { alreadyAckedPacket, err := ibctesting.ParsePacketFromEvents(sendResult.GetEvents()) suite.Require().NoError(err) - _, err = suite.forceContractToEmitAckForPacket(osmosisApp, contractAddr, alreadyAckedPacket) + _, err = suite.forceContractToEmitAckForPacket(osmosisApp, suite.chainA.GetContext(), contractAddr, alreadyAckedPacket, true) suite.Require().Error(err) suite.Require().Contains(err.Error(), "no ack actor set for channel channel-0 packet 1") @@ -74,17 +75,75 @@ func (suite *HooksTestSuite) TestWasmHooksAsyncAcks() { // Store a second contract and ask that one to emit an ack for the packet that the first contract sent contractAddr2 := suite.chainA.InstantiateContract(&suite.Suite, "{}", 1) - _, err = suite.forceContractToEmitAckForPacket(osmosisApp, contractAddr2, packet) + _, err = suite.forceContractToEmitAckForPacket(osmosisApp, suite.chainA.GetContext(), contractAddr2, packet, true) // This should fail because the new contract is not authorized to emit acks for that packet suite.Require().Error(err) suite.Require().Contains(err.Error(), "is not allowed to send an ack for channel channel-0 packet 2") // only the contract that sent the packet can send an ack for that packet sequence - _, err = suite.forceContractToEmitAckForPacket(osmosisApp, contractAddr, packet) + ctx := suite.chainA.GetContext() + _, err = suite.forceContractToEmitAckForPacket(osmosisApp, ctx, contractAddr, packet, true) + suite.Require().NoError(err) + writtenAck, err := ibctesting.ParseAckFromEvents(ctx.EventManager().Events()) suite.Require().NoError(err) allAcks = osmosisApp.IBCKeeper.ChannelKeeper.GetAllPacketAcks(suite.chainA.GetContext()) - fmt.Println(allAcks) suite.Require().Equal(2, len(allAcks)) + suite.Require().False(osmoutils.IsAckError(writtenAck)) +} + +// TestWasmHooksAsyncErrorAcks tests that the contract can emit an ack that is an error +// There is considerable repetition here, but since it's only two cases didn't think it was worth it to make it into +// a table test +func (suite *HooksTestSuite) TestWasmHooksAsyncErrorAcks() { + sender := suite.chainB.SenderAccount.GetAddress() + osmosisApp := suite.chainA.GetOsmosisApp() + + // Instantiate a contract that knows how to send async Acks + suite.chainA.StoreContractCode(&suite.Suite, "./bytecode/echo.wasm") + contractAddr := suite.chainA.InstantiateContract(&suite.Suite, "{}", 1) + + // Calls that don't specify async acks work as expected + memo := fmt.Sprintf(`{"wasm": {"contract": "%s", "msg": {"async": {"use_async": false}}}}`, contractAddr) + suite.fundAccount(suite.chainB, sender) + transferMsg := NewMsgTransfer(sdk.NewCoin("token0", sdk.NewInt(2000)), sender.String(), contractAddr.String(), "channel-0", memo) + sendResult, receiveResult, ack, err := suite.FullSend(transferMsg, BtoA) + suite.Require().NoError(err) + suite.Require().NotNil(sendResult) + suite.Require().NotNil(receiveResult) + suite.Require().NotNil(ack) + + // the ack has been written + allAcks := osmosisApp.IBCKeeper.ChannelKeeper.GetAllPacketAcks(suite.chainA.GetContext()) + suite.Require().Equal(1, len(allAcks)) + + // Calls that specify async Acks work and no Acks are sent + memo = fmt.Sprintf(`{"wasm": {"contract": "%s", "msg": {"async": {"use_async": true}}}}`, contractAddr) + suite.fundAccount(suite.chainB, sender) + transferMsg = NewMsgTransfer(sdk.NewCoin("token0", sdk.NewInt(2000)), sender.String(), contractAddr.String(), "channel-0", memo) + + sendResult, err = suite.chainB.SendMsgsNoCheck(transferMsg) + suite.Require().NoError(err) + + packet, err := ibctesting.ParsePacketFromEvents(sendResult.GetEvents()) + suite.Require().NoError(err) + + receiveResult = suite.RelayPacketNoAck(packet, BtoA) + newAck, err := ibctesting.ParseAckFromEvents(receiveResult.GetEvents()) + suite.Require().Error(err) // No ack! + suite.Require().Nil(newAck) + + // No new ack has been written + allAcks = osmosisApp.IBCKeeper.ChannelKeeper.GetAllPacketAcks(suite.chainA.GetContext()) + suite.Require().Equal(1, len(allAcks)) + // only the contract that sent the packet can send an ack for that packet sequence + ctx := suite.chainA.GetContext() + _, err = suite.forceContractToEmitAckForPacket(osmosisApp, ctx, contractAddr, packet, false) + suite.Require().NoError(err) + writtenAck, err := ibctesting.ParseAckFromEvents(ctx.EventManager().Events()) + suite.Require().NoError(err) + allAcks = osmosisApp.IBCKeeper.ChannelKeeper.GetAllPacketAcks(suite.chainA.GetContext()) + suite.Require().Equal(2, len(allAcks)) + suite.Require().True(osmoutils.IsAckError(writtenAck)) } diff --git a/tests/ibc-hooks/bytecode/counter.wasm b/tests/ibc-hooks/bytecode/counter.wasm index 938171ef84867121a5cd52ae935f2628d3620ddd..7be9989275b5fee837f325b4cc388b094eaa7e48 100644 GIT binary patch literal 162007 zcmd444VYc$Ro}Zm&exnXXXZ#6$+D!x`y5mt_^XxzTj}vYdNvN zo^c#YR$S3XSYs?XGB}9>0Sq<4Bu-=}HdU$9nAY4XeGG`;fZz#5+?pba0n<3(HsQv- zB>4XRYrT7)J)@cNN1TH7c=kT;-tX7?Uh7@&yQ6Dwc~=}oQG7Puv?n=yI6kbu(Vq0M z-RlzViB(+V*6yP{b=`XTZF{0_t&7|I(QWj2+ii#A z+q@fldYcLlAGSy8E%d^(PSH45evVasdP#blJ*XYNjYg86OUBc^H{Dvl_8srue;{h; zzIoj{uGzo$+Uug4ezo}Z&-dSOU~d%b=ZHOg*Sl}sJAC<;cV2r_loVBO+I#STSM6SV z-F5q~x%Ju`Z@BJS>RWTGtc(ipzUhW{^5kFajUv_bcdviXyRN;dEbHB}_nkL?>l?Pu zz3!S@_wK*p2Y=W*SwAe^zxSPtWdAiczvmrudw)3Usim>K*L~|7-tf9_Ur=YFD167Y z2i|%8f=Bi1_P*miKjgFN?0e7N{XcxoJFma?hMO4ghm(7gRdL#Gr}{5Wdmw>Qm?0@ozYP`tML}Eqz&GxtNFB^rj50_uTwK>wYm+Ouf>hH+lWW>Ml-7UfA%`h z?7tBkM50${k?|)s1qM2%8AMStS$6>=XHd~tGojY_`U{g==)mN-gx7?->G+gJZ@jNxBPW?+}po*-+OM@zxS4F zXlL$*n|>(zV7#g9f_u8AUdB?T4>`jxA-vA(a+&LO=`=9Y^|M9<%cfBt@9=|{SK>QQ&PsSgL ze=7dz_-EpK;-8IwF24A~@f+VX{ko4PGvAeOf6MD%|E=G; zyJp*MH@xeIW^deeXMB_wfB4-qw;ue*&&F@NdEYJX*?(ZqweP&{|N6nb@7VSW@wWdj z{)Obxc-yXj7ynB9w%?3*&76uq6Tk7X_-+3o{;l|l_;c}Z$G;ly`a=Ad@qdf|JbpU< zi}=6CKbqW;+@2gsz7~Ht+4ZaOdy^kaemwbDa(D8+h!+IAKtRr{B|5CVK!+o8~RI_&*hc*Fw7U8Pr`hdxaPwMH6OYh z&L<7?fgqSq>hno8A7)?9hkA?VlP)tKfK{1K>ht;QB&nf9of%pMGc<%GXNHEDp(*(4 zZZM*YF+(F8ft>B}2oJLnA+;%bqAbcr7BNGkWQL}gp^-I<+D&U3q6*Bwqq3>M3{7JO z9vCxNpTk-uGr%e|62=gip&6J#jfxo-)h(F89vd^X#0(7pUhn-<3>aGHu|rGj(5kXS zD{F}z+KbttU1f)s1N?Kf0^rlLgA(A)A;96kAboTPz_}Q}n+9-u48ZwSiVVum2Y9mt zxJjR8Ch23fkv>+VkUl&rn_3`!cwhiuRI3Cy=qRO+y3;Tk0pMy>0AEzM0JuF40N;jm z>3s@dJGi%rQCs=W*{LY%ixLeb;NkUyIIGtVBUkGO;OR#Ge7tXWzmY;sdAyHG$lBJR zp^E`5wkfNy&y@MaEJdF#k_-B5<@Ar}=}idN+qy|s15^E49`~8ObVS;XI(dYQ?x@E+ zdUNkz#YPvr8@ZHBJ4O-wxmZvTPa09Yen&DP-VwPh`B0BuCOJ*dAzhD*ByX+bpA-J3Lj?()--z`H9N_4g$+^7}AS@;ZXIXPAuh^}6;} z51SAu5k*tcC=J&1D;Z_#x*MQC0^G$rJ%3#1A^1WvAg5X?L)kgxC3+d{mgG%CE&-e< zlQe%K3Q&A;F9BeLr6yAo(W9=TERmE!4HP4xH|sqKQbro07?xL<%j;5`deDGyHL3ov z)}Wq$4ERh&(e{Wr&`pe1PBihu7Thi>%05-qs;X?>9eoh~vc!Zxw6`tp3y=qg>t~``AdBPjtr`Kn` z^H?7NHt`*%fq=@m(Fx0x<+{>0O8AH&nIz`Koq zHh)c)%=PZl&*L%H6t)Q>N%9J2hDIinov0~YUk|QT);le3m`pM^cWQamdpH*SQrMY4 zTg6#!#UTf_B%24#9YCyV#WjZvscO$gbUfb4j~`=zJ1BUXNuAb@`|pA*@5I)-JuQ?P z;<7Gkq?3LM)PohlfRG$E49N-vYmgO)aX8c-BcmnMVal3GDRD6>YJo|eioZ>Mn}km> zT0`xc%^DLl@Hdajro2MnZ#@uy`;f|7Seh07ju-K_RVoG+_`4SPThGMbiyAEW+a4Q# z*JWDBa-RS&$ecxHc3p~~UbQRgSzUGo2#S_RP~Gi{kCrId_752aiA1bGBClo<#6ZCx z9Vta>oFl6LnBS(S&=jil^`ijhNqX>YdC;{zLDh;%r$Wy-y+*`baFZhtRd#Fm7Pxyw-OKg5J!8B*o^{c~K2*e!2Bo2{ z*HEygxV^BCtSWjKXqMFSUb>_C8d?~YPy%^H<=zlJHV-|YidN-TSsCSuRWrT%UEX=l zZ%srV=p$fTySvs}ntvWZ+6yTA9mr{^lJw>s$rYpcW!`##LD9O*u`~~@w}-7`fC~Dp zQ6efMyM=}28_znsjeJhWqn*$V=zI{|*c1xfrTH^9Jnu}lxM{irJCf_T!{6TH`tY1l z!-cB5CtrI>S1KfQj*6?!Y!5Tz8QS{NtkrD^qAi;b=1*SRUtnuPct>+FATYX(0lGp? z(K>*wwr+6K^s7w<>MEL~+h(;{CVjY^w8Pekdy`5J34a3Xh%N_ZMuK94PdDBGagWJt zKmSG1R4T(P>l)Y$8Wv$la~Xys4opCJMcDwj6c-hE)XdRi1#=<}#EnGC_Q{Ka5wa$% z1*b$BTme#ZBhqYidvY}>YHd%h;=&lNI*~$+lNA1TZO#+Li0riljS3(}g%rT%RQXn3l*-+n&@^`~?k2hN#zHqvtY2~C zOnt?@qXYm~vZ}!tQgxeKnat8^s0vF*nUZC`)0haog zB~#JWFlf!5>et&)D*ri}8~Y}$nXL3*J#G*iZRCTwu}%^d|J5yC3f;xMhhnuS_7{gu zMI(JDcUcg%eCs6`b$=9HvY*S>xIo`#$Dr9l%@`J-TIBLWWUm13=qlaedDpo>)q)J+ zLqY)2Xiu6IKG57%)yxB=2Dh>ax&%06e!FZ-$wmMf%5}Dw^X8b&>4E~F0 zsC>j9n4RbZw zF0B%yAFp6kn$dCQxI(Y<9x(xsDL0cQvSf=ePVjaQuOc>`o-z;KN)SXcXcH5Q1yNlI z(sp-SAO{S-6?0r21-g=Qa$HYER|v-zkef^{9n=F!PM7SE6US_d0HB#1djw+wFd32P zb_7ggaXS?(Wpy{q;!Z~=FmYuR3gr#6nbXlVz||>zCsICiz0(E`gr=fz?;D!jmLFiB zsgRv~mRMym%#I~EHf;xSFx z(3c8*V_9Q2X6}CRT|?S{hKa&!PI zjICg>Xc-aNE(e1lYvkW=XTVCKC#k<^0r4XomTSoD5StYS(W21@@Gs^rD=s?_uZ!-q17kKcxrAEy+*D zChmGX?eg=!c(%Wa>jPXTQbvsa308s}a1CzF3yO|rOxbB{lF~NzsBbSzNK3$}y4YkY%FD2em4t2)uA_>$@WREkf`|k- zI|nU+0nS(XP*#pG@|wH{N?+G!VFbxf(a22HU#mH<@Xz&t;xA_T%6f9Rc>Kj2erW?K z-!Y56)QP^-JIHi@hU3?ANFlQ{JPks^N|6_CxAbAeqHXj+LQR=vZ|+7L@--c%GRD|1 zQ0qgruuhQ6hV5k~)G&j2UC(64Fp7In3$36Q?vDlZ$>hGE7VeE%XX5ugG0uS5 z9d(50x(>5f00Y2Ucq;2yK!#i$8KJ&@H4Mnqi-1hSLc6(QH5>bN56D=3nk!nsg{Upj z0*WZfS$|*90-Y%!V@@TrY&g6D-u{8X2Hd2Eo3SKKkWi};Um^065C{f^ zA*3fY1WZ`7O_+kL8aSTn57Ou)O&VsgkP{il1wF1edNgbOLbuifwRqi6EU0T1#AD_n zOp+_q9|xZ_{YX6M$d2$SkE5S2Rlvu8$|$-t8yEgM=5-n@^!fzD@2^82ruW7D3ufZ} zTC}Oe)(Dm!wUMa>;x^dCR?}v7fgqh^YqlrH1F%?xV-0zGa!l8CJJNZ`XLonC8a_^= z-V!pywf{jG)(Q@xC=U(R&Sb|*_$Lu2ms2-kRgmseqhke$m+?uWZ$rq&r3D3Z<-30@PPca z`RuYhJzyYi0W6$d&s%Bnil?q9?IWb(mOWh%BP9kYDpr0C zc8QJcm%7hj~qh*X(*|)|t9v{JRE11SCK6B#?OmKrZ zO4QO;*elrK>RN%ZBf<=^BiPi~_7E40MjIcZ+rm_7HB1E`9}JAzrcWje7Y^1L=Nh{< zvUTvV)Qs#4w0r0st`gT7Q`IR?3H(8kFe4E>un$ux6^}a;Oe{~JSqCZlSLO@T-~|t4 z$`?mujEL^t>4|&p_8wFm!@OPv2Nms;Gr$G-Sa`3D2a4ZT1fUUc(*|YvHf_e%j~H`E z+T)3`)oiQ;*LbD@BWG;9gzDq0%|np|5kB`TfVXUOADTJ#n!qWK#U+(RWRGD%xeG&B zA`WpTeRDS=4G|X>Dr8iIb9x@lL67-zYG3SX*(_r2N!C^IuR0Z@C1Si z98D&h9DEI_xpKEPMsRbb`jLs_-SXT`fSYtQKsfBYaLw^i!sHSL_5K>ka!--F7gnBd=J$L4#P(A?# zp-aNi+ys;AJFasEe1dF6Q_JR z6`v1tTUvoEo}Z+!gGo;z3SDY7&VQqPGr~u(b*7XHi}@jpMrVuLPZqYXhLVM?3&hF7 zwrMg?JIv71m~Cm6hUFJ&h+RidxkT$;6{e01y~bEtw>4TT#R&wis8vR0R;w)>7DFml zPi<{hKm^pQ&}Kbs!d7)HH$Y?fzLr?eUu^|*Y6So`yLtnB74s^pN_mu3WxQec!l=ap zU(=Uf<>{9Tz{rTO0GwV*DYD~D)#W0|j~7^L8!i{I+N9O8-9!W>2b>s}@2%No4~Xd1 zDbKtcrdY1yr!QeGc*H~9dt{Fz$$cTr(w%~tZIj%yV>n5GC~%M^){#d&&;7Pb`&&eLXJ2sxzGN)u>}*QDL0@P4^ciUxgQ z(r?LTYProsi>~~t3(ifkfze|zh>w{>tq!8nyA3HhZxAc5GA}s@TW_}B&1xot+3;s8 z&tbipmFHkpqHF+Sgto^dP$-%^bO@m2PN0;LG+cQWHTW8{ud6s=koPMmN#cZxmx{4a zoQwlxBNc2c2wq!2ZtX^GXz{oQ)OvDMU*f`awo3Mf7Ntc!o^m`~dJgN&AXNjD0JM~f zOP5=E7Wptekq>5&$OkiMnmPae-KV1b0-BkgtFAo%n`*wETf12`W-F^N8)!X(=~;-R z2+?|oB$feuA>*CW3kuRoN0|-mYp#XL=e1R|v#oe7i)Pkp@dF)@=C7NxaO%igXd_sj zQm(X?AI@c~OkJ`O(~s)*;*I9Bu;#9jJ`_u37Z$l-DU%$ZZ<|cITE6QtA+K;iH;yo=r=SqI`Pgu=_RIz!hq90|JSF{S_X67l}R_fg!8ft1#Y zM`-D;PJ?EABPpU~97-GPl55I>tmW@L@w#Ng;ksqpC&g;*(?nA+1Bw*BbGZKvB$dGi zF?9~>q)6XG5GBD9{F8XGnW=Vyoq1LvgkWes8TZFTgA~EpXJfN9)wutYBs^1ek(hxt z7P|P|xE~Xl#3Vtr=Vua&wxeV6bAG#y+mn8K0mf1=iqo>`q6@nY&CW zs2Zh~w0K%;jncXqrCXwC=1>32uYB~xFP;6@Uyi;P zS;iPpS$WE3fn~b5lSaOv6SdaJ7jz-b*I1$h+Ld{VODDdx1yz{2Fi+QqfHjl_g%m;S zO>UlUD$G+4^N*Q%N}N|)J~~};V~l7%q=~kOKpX57ju46-OH5Ltwev^)*7P_)4py4z zEzC(oIS*#+)vDccGTD(n7xD}pb%j+2k`ydwAeePl)jM>JK{ERzWa&HwQAzfmb5;|z zgMCY4IG4z@LzxvlKbSdA)w$cr5 zY(>gkN#<@Vb&?LETSCa>1LN!Xij+TNMXKShD!#dfr$J0=rY;$__>!*#Lp={GQYLr8 ziWDJVSO^KzG}4wQ)ip^VPrYa_D25ue3Oj`h| z85f^9`dfeg#XorDsURlWE+*Ow#l*rc>I=J2TlIwBPPfh?Pqs-o0Zet}?%wGG)6LTX4LY5t@Q3sL1UFUE|JdI}-+d5s?-btVX@ zGrZVvA$7)t6kcV~^Vx+$>I_1PSrG^TO!8|aQ^V9);UzbXX93=Y2kC_UplLkDX9-h` zKnrhftBCPrR|-Fvm14HoLObT3vhMK*dL85F_gVH3Lum1X!4ukEf_I88OtZpB)~^@| zA~04Oj5{T0+GzS-A5x@E{ZwXM-zjq3P4h`Q(vTUFBU=*=^b>s8Qw9%`CC?`PSIxxz zz6Qom`h1o5D1mvA7E%jz4ODJapgB94QuCr0q$j~aglKUPHS!D+-{_S4r;|ZJtv=Bu zX;zq1&|*t^I_dXmkQpJePZ*qB$z4KJSg;EsX@fc24l`B#e9{r7e0H=@uo-0fh+3o-=nkX20HLcc zhhw3bu`j*jDBCDE!4!2#{pV4RhUCCL7G`P!23OQ(j$d~Y89KTffbTbt)G70YTGjYYLjD4onFS8j zdG#@|EBY$XmJoPO*Y+Euui4eIl%BVB#ey&ZbVdJqt4L%I1?9&ocJVRvN$@tBxstra zaZ}Me6kMye{(-M0suEp)UVb9=w*XPJ?t@ss zfdWIW&${datq~IkS|=HD0e?yn0#8;g`|+w}Pw(s*0ESDN0;nsQxh8DKOLdL7Ejj6I z1#4HASX*OQ!(Z$6o6d)#jkiI4Q*&drS`=yVEv|-A(40+y!m!E)Y>S=rYbn#TXxDfV zJE5H`joczN`Bs{=*hw5>C(3q|J!kFI9#+WYq7!h@MZ`_6lm@kQ$Teb{n)GPsiB+%f zR&*ph4GnN7&TjM(?APhsBAqF)|e&w2=XEHSb){9p?R_*XbP%rk`&Ir0D zkPXc!Z2`7hGc{wIWeOI%Ocd=&dKzcJJ(2*m4oGrqK-5uDiYA?i?>x+i5m0Q$o}a(@ zjw1sTRniTn8#AY{L1IkL)GaD!8WGAlE6Ix_HuH)uAoIAVtCp{{@0JOAF*GJBs%{X=3G36QM3*eq|^*YZbYvY^TD9Bez2P zO&*{K@RBzrJ%?nIq-K6o(F27@Rv1E4o{Ao1O`D)7GPH&KT!N7&g83Mg$;eRpyS9DDVw~fm`cs2R}UKDXUn*b z)d?o22&8b=i0ha+fV4Ds4QXjo6ZY=9wCo}W>(YmE*Px*;bk~%$tmVHVY1s_YvMaYJ zJeIVqFM1494BaJnYvC(;w?$ZDE=~yWW5sPUxk=)cGw)w5OPB1zcv$VJkXMHI6T8KsBAUOh8Oa$q}qwWS(OWUoGfDctIl+__-6 z{=6-hwQQ4Z_=HM1FHdjJGg5Oe7t3&@+*)P8m`@>VOrv^$(QHW{z>lXAp)mdutPbwV zb8%t%gOKORu|FWcMW*Z)WT*QoUsViyEd;D)J8ahzy*DiX(igUdjr!8oE6}K={FAbz z{X!WTN4`aXkij;70phJ(fbb-j)!UQJ8LI+Wf_P6Z*{JP&QPx-9V3d(QHNgcxj!YK$ zL@h2D?<{92KoQvlv}k3x!Pi^6J#lp`Tt zc_l5%dvk-vW~na{fNH_^QLY9ulbC?=V}h`Yr=lqTmbtMsP9o$&lE+~+m^(HkO5(w* zv&eB^S-qp>CB(f6`-kGqI7WUxb##_h{Cazspv zlVtGbz0s_WS?)ba8pIviwGkDK5eK*4v--ny*S_r#;<|ia#uNJ&S~xD)Y@FrcGYfa< z0+}QDBNXRxN95E19!jl}4Dv%fgs}BS8|9uhTyR$2c15qr()@8U1Awd`31kV%a`T#5 ztq+eUYC<&C#zw$qfw#QY@QnXe~m!>4VGX0y=%#*!_?Qqf<<%%QeFi+g{qLN5HCla#-~A(dzv#c&!vNGfKL(kZpgXB)~FC0CE9PqR4c=wF$bXDaSY;o6;4RX+!`aBb3 z*&si$|6^^eWVr6N8K<3%b=sKZhKJqooWQp9r*|(X{RIwA4Raf0M%z3o{aodT7i;-X3;G#m2AHM>@QDTJX=QsKA+IB3R z4^V2v1_R60^U1lvsMwFp_^Ie@EZ8}z!1%i3Brz`5A^u5$2;4q-D+TNgDeMDRmlE2( zvqjrJ8HdlDV9NxI%94+$37Gc+bW;e~T zJ!fUmp4X~`D7?t&Q*$6=;78gT=jQJ_VqJW?=z?ul&J4REvX6so-JaaXeURli#;v%gBZw%cGsez z=>T5i(-nsnI$SWc(5Er~(w&a3?`V_Z%SF_4LR7=_n`B<0;a&!sirJSMPElc!g%Pt$ zh?K{5rU8$So0dIaJEh0s(M@^*fvRDB-XMK8=5#*&JVl}g{#H?+PC#U--5w_opZZ|r z<$~qE3oOkc{hH>L&R2s=$b@AGH$nVBKkG$5Vyh%}bKlA2m~4x7ucTm*{UXTZCsa!r z(?+~pM;8z=jZ}#E7mAmSg#EOfg4`FpDJq}svD>bofD-am8o!{UV-gB7e`wM8Y4}Bq z|8ap9?_`(vm&?$9qR}o;NH0UgiJkpl0XNf?0F2Diu>8}2hbzL?)2^II{+*g1EeD0cxN@}@K|w2z_yv0y z@>%}t8XV`@xT0MkrL?hO`H`9f;}iTXwb6WW6I8Wt>;%h!*+C8Y?`d$X8-gFK_8zPv zF}os&7Perp>9O0|#4}k8%fp1=XhDhRtlJVMySp4mzbvtkx>D5p%1eNys(oW&Sq{u# zxd0L?LU3Wd+z(i!x_gZ1P1y{+!op%_{qnFOq+V?MKi^c5do&1cS1=H|Yjng=VV#^` zMb^m+zF?a6_zLzB=~l}R85d&Z{z>dhmJ;!jWTGPq1yWgon5I(q9Avxj)9X%S6fu#*Bwq!%= z)+puWS;cmizqRER=JJ~22h?E|-&P)~wFW(tFl6~{j|gVdPySgboDhp#II9#!R^q89qQw>_iro$>bzt-`qBC!j?1eR151L-rIRAEzv zCPe(r&lhh7uo~zeTSjdMf=lv~yim*au>r}QlQD@5bscA?L#{YGVbqSc8`D`9c|@Gq z*5t#dRCxbtEV)9YPtOsaH(Q3Q9gNZYN3LaTB+G~Q(aJFj2h?g`b~x{Wg~7>WTFW|9 z(VJ*MvXJvr#GO*_FL?#R0JRb{h)E~10KVP@gzzzv6il8UM6Kr^zH{NnNIt^v*A^cm zq0%e9o*)HXT~CneH>?9+Oe+rPV?{xq^;yq?0yfctm4wD{`G5ry#htjARRt{|BUPv% zF~7p{fv=+sZ7R`by$r?4TqulmJ8#Jb;b$%dKa8~4{3{}5RtUuH`idFXG9b_>2~G*L z%|LPCD3%2jr-6lp;e2LF_;8fftQxe*5LW-)??Z~G^t0SRaSf(1*i#ghup$*r#_)u2r zGQLSzAyAywS3(O<{m0+^@rKMzEx0gFWeAvKo5iK{A}g(^37c3=kWfl59@|ot2HOQz zhNzn4xrro!`FvHH0Ave{3dpIx+z{%yc{4C^b2<)zsK;%;n|;3FMTrbU9~-2Gl53mJ z`f?KGVkEls0;{WWo;ksa>rWe@7@7GOR-jRIxva@kaaK7#M%HAF0$W(NF|0&mFDP;< zFPtAZMnY?BCN_~aNTRP|1$YU6enw9@stJRZfG>GZla|R~!pGLYix+|Ej`WP+`pl2P=6{0mE{f`X zvzk66(8VxI@*l!Sh00!3Dq!UcVR%&@^0ZHd#Cg!5`YIf< z5BX%NA1|>*TSWH;kzlFFRxQB}D>f8qR|dmBZ-hpL;va=#_*3~vWB7VZLr3^jY0nQ4 zl2c)eq%W(Y`m@u9KHn$~ZBh;q2M%c-=wBd2297XjU)-|;aCCP59wTS; z1wQ;~5~;!m1j9P6bUGrABp{PIG@jKZA6bAaY9k(Kh4SD|Yi+J*N~6i@bNPs5n;x{0 zP}b+L771*Bi=qhjtMV4|JMJvCsZ}Zl#u!3_=27dJMBbtX3z27!P2|-q@4FGcatCk_ zjv<4ar1L2Z*1AzuOI0=4NbcOC1gffc!t(qNf@_wL_TjGg$tx%^{ zS*irjg}*ul<%4=r2?%b+CBckaZ5=V*nlhsJ`(!CH=x|GN)sEz1<B97wHY}N%-Ow9MWJY z$t6d*NkTC^WhQ0Q%;Dl43Cnys_rqS`k*flm;HH5R%@%ND%QbgAu|rL(h{FX=N&pW#L0WP8P%Bmazut-r)bk059A$Nz6-pRLbgs*@2I=g<9y3Un&F z7^L?h+qejk>bwT4s2L1j_xk!&-S1OvGejuU+*;&rD|eZd)wtU_Y*gH?lNKOG6Iqrt zXQ^v`r!zx9Z{=(;f@TtLVw)1l@Rw|ifq%x;c~&{wu1Q|Xri@&k{0Y3rM)fORp98Nhc=+ z?eDNbq8ILU#spt#6jzd*t7+ozVDl>FR8p4_N&1u0++clt(2)Nh&vw8v$6$)}oB4B= z=sF4ik_Fk$YL_FxYgwDqW3o~9qo)UE`yAhvwFPR1ULX21G{A z+E|uc21IMwn28u+qrfM~BWCW0R%Klta5$#u=J-#ait9IG2mn(8wZ?JcQ6BR&Oc7_$x*gXEB(%9qyYF82t4M(1v;5Cp4%ot6lV zozXhfvmDfu#h{8&KD4;tiK1Y^NK;WA+fBrQMq~nm6abrm7#e#zv95w*L_}e00_OqY z58X3#ax0-H0bh_!IY_zo76{QWvqm2gMlJ;ZS&}R1{h#JkGZpj!J5BLrI3ZS`XJ17= z|99y=cIfT*@3$MC5H0jpwB+B6hxWZ4Ye0%+fY6!E*w`1o8qXV`RaG^{0cZD!qyV;` zwy7zaMC+oE42v@OA)wYGL^djjtVM_yNem+fA&p-kO@>zR>q`I#pCFmNf3FM#7708J z%c!dmc%gq-NUEAXUFP}sMqTEGd!K<=d^XUY-#Y=?eTThcNHbaGFB0%<^bgFM{N6=q(Usurc!El;{0? zUXM-A=;g=t>r1@+7qNfR3y)v!sCiV9Twzeb{^ygoQU};wX>SW?G#3K~m8YSonmI13 z>XC$j$~aM2lHda4eXJSm)0v+^!9UAs92oT4FoRv1+hKTdK0cd2b@xJ#@{g*&f4}@8 zxk7DqvA*|eT_$8Ic?64J@}N_LQ4PS_cX%}hG3R`f?K}3}4}J7Y`*a$%Go;BT0&eFC zMl~(pdMME3sLor)Kig~c5uWYI^?1b%ogo0r?22v-6&n_=m*nVe^-A5M&G0A?Y>{;^ zHEcSpzhWSS6MH05uI-&_T}>bXe42 z5p=M}5)1*A9J33j5@#~p1N{|2XH(Zcc(j@vZz^3)-m3sIO$f~^2UaqOzkNr#Q*T|N zmT}pQR*j$xK9U1^FWqS$LSS`Zwm1>dNVNCOsQwV9)?d~o9%3Qtr9u3b?$>J1lHCIK+) zIBA>6O9Q`OI2SjrYDUb=`OyQms&w4Ki$5t2jJ1IdVIu~VK(kYBLhOqM+;~w_FMYA8 zjD1;{UX3rAscGeb3=wZ4L(C6+Z+j5PP!B|gJ|sd7UJIW~$H4|NlxWV+49U%}DLYuHip@MI+%H$U%GyOA6dtA;(X~Xsq^4P)Pg6Is0&W z8*iL1%Ci%YbHKnHPj0pcEIm{FR20f}dsFd@&E7nFx>-JZx>-JJ=2|a2{@cTf+?P)| zFPf+Ky{}PL<-UB1=H}_CBi~Uz<-UB%hhTU*|L}jUm5=q~CJR}GQDe~Ro&Wd;uN}U_ zkFt#<7X;=%^o1wW;S2h8lTA9#BMvPnWIS+-zDEQrDnL)E`%xM1ao)+#okmA~8P&nB z_T?&6lE4&RNhhaF{9Rz#=+&(e`KxuT5u+SLr%?{pq$=~^!DIsh$rQf5X`&|u=bP=5 z9%aAM&H0&MLv?TRfk<^HCNz8xrL`e_C}WL3l~A@xnh6EZBG{hzhy|Na2-V=3See+_ zf2|b}X`*M#GNlEiZIUmrvB(0_Hs!?u=^;~EKzh**HnCR`kk$q#&|ys(QxcGF`(j(2 z#M;1=idK3pm{LbYmjP*dp8rtEq-w1bS}V{+gJHXv2c$JK#ePGBg>Fz)UxSm3B@p!~ zBOJ-SZJ0LzeP3|gSpav#BLFX#;ajc3O=hZQBKg|i{M~WmozGd;`_m@ ze_Wg1gmo@&4)pb*b<6~!Q2z1QJYo@}8sB9+J&O&B-dxYKzSLlK3&<6^#@3gdkd}G) zbmsT%sd>j-yNb2|xa2+*uWV@ESs*_wz~T`%Bx@Hri&48K#jU zW9Pj2{ZM!!$QO}1{VuI>g&6Z^Fdlh_AS_$V1vLiL_MR9{r>7CoE>qGp&!@l|Lx^nve(AJrMHviNQ!eN~Y841U>=e^?ifUS@?ReI-58;7@s+O zlvc~ee&mjs`QpdnI|k!db|b5qWOV*7PUPvW8M3dwk7)yKCp(3Vfw>4V;RF-2)y8My zAIZkmfOfR%Q>%Pu$SfpL8jxr9vi{}9*hiU>>Z`NWGx41Z2B4%X60_-N(BSJX;8}>i z2S}nW>9B<2JPWbM@nJAqNA?Xk87PVtO$54W^_dIA58QSgD{O}?q*`5J1{i|9?^erT)-Z+i zV%*ToO5?W3pMY-TMkOv?!yNi@z*>_H16G8R880>1J{p-v1ZYm=&qu&RaYDM9qcX+x znOTuMOi(ZBsDaqI2&NK6wZ}n%Y84m`D2L1i!gx-up8dEHU9>&9k*z0LTTve!kYWa~bKC6v(`-rT*A%jn( z85>;(`!Mo7Fq3gn61a#cS=I_9Gw5ZjUpyDVj?P0+QOkK~RG@78>@!<^X^W8>S+qPW zF{ls4eWe;I<^nng99hZb&|pFY9qx6%uMfw zFA!+@fhn9rU>Br@I7Uq3(e`Az_-C&VEHEPxV)KrYX-oA%pjSnaB(PMi9l-~vl6*dy z14tqpBa#8&KfjIvDwTzn7|kXJ@^k4v=ld;kbYXH@=#g-i!foRIZQSh~7ET8J$CJ$T z-+h2P@`FNPTV8%>0rMvJBR%G6PFsKnbvgW;mMmCx&4`eWxAhr|$VBlwUIRvB6## z`WiEvI;!|6IEW`QJ>Y8ty8)I(D7b^jG*XS{59sT8fc*ZLuj^DMz}H4vaa10*yyLivNn45y zMA>E0F_5mLLB-e$mc$;>omf>2&sWbRCShUwK$P79E`%5XAc>)ctPEjs-X>J^G6@Q2 zX$}dzfTZ9c+x%)c$mW2SMbCzmP!HBb4WIxhjGFwP^Wh6As5yHzRR*p*+F)Y{*UlZu z!qAipFI0;9Dp{J-42^GNlbNi}z_+?D`4$~)tEhYrPo9{qdVv5|j%3Z+f|sPNt*a=? zlX2`GFiJ(|inqAQP^cAH+Ek@+y-;Khz2(Z-nz4j|>=#7|!GK;vzRl4(7Pyx8%(lQ} z1eORXnJzXKg*rVrUaS=OC-HU(*I~JViDP0|qPuKYKyMyF^gZ2(>7J4*{_1g5u`MX* zn5TtR6T5Mv_&Soo==0qNtP`5(2)=4!z$=qqwt{-{---^T`Cs zy)Yf1kcB2z$2itJPCDd4HJYsvxn0hb9Kg!$#H@C7ls%4E58BgM7PY(xaak6jc^QWi zSIZ(4w2BZBWf69-ieRizxZw;-iCEH5;Ewkaw7IXO43d-(u zex0-W4%f7RbtWplXEi-H;6yyry}EEPVTNxYdn=y#(r177w@%#shrj&g=%^0TRM8jz z%Ll*o(@#A4>8DgQNfC80ZZR_cs zz;neW0^b-NHpJd{Qu;h+ExrZrO7q{r;)yA%y#e;YJz*VD;Q{k^E7}b25a~1l`A+ zKB=C0*gVQ8)G-e=Ks}7?VRVQ=dlgzx%c??;4Bk7TH3qJc+QXxrzo;dR+c4COLw4ei zbD(6w1ETti2l})qk}SDRfX+HfwBs9rI0&P*?Po^OJxlhB-@s}R+I&=73->DRJ@1p%+ez~9m$jZ+Qv?Y!o^57dRdJKGjG1G`X(q;bSXWM@7(t==txC1>em<@ zgH{YSN&XSmUX~sucp`4Jli&bSHbU{BE-1k~I9i7WbwDc63$Bn59)UqrcPN(t$eN&y zS7~so*=w|(=}u<^WNnVQ%$xh5nj}9+C@E`en!%|?VMScQcGGxAiqRhoc8LR1`_6ae+P_)jCWu-k*(JW(Z`8vxdW@g2O~O zln9{(-V^%lJz=nXPZ;zwb8)&Z?u;3Qp#^)>8}g|0JE&~s#1aYfbYB^-tX0PPo?s%! zQK{qey|;jGDZlU9$Fu#rB91G7Pf@z zBrRBZL`H-KM&;D0ze)!>yT>{xdL*5Zg3((S4Po`I5JLW}kHV7ts;!ij&e;o#+wA6i zVl4)2K@Hhp2dSlSF+_m0YB>HdYN>V}XweiXG7n-b&?GW{a|A$tVDb78)n1_`qJK)$ z%s}8%%;HmK9RzVd0QPY|e zN}S(iel4DzewSIb5xw%;3?{mkd6y_}ioctO!<(MtcV)Oc^?W!TAI3%=OWT2xT1!N&!xj3oIX-kr;n%ZLo?NHw>DH>3Fk znpit9SY*oQSrS&@BhJb0*b4FBe#2h;o&+zM-Hmc5C9L^tkA^t~v_wUL?cRAc!K+1^ z&*6M}Fr}y=Yu5rf&b#N0;;B#r9QY_!=w61i?dFI<8apAc^yPXRjBoGI!3Q9l(HY{g z1hzq(1{0EP3?=~}i9230VR-BHSb>hYZL__Lg+a^6VPC@WW2d5g2L*%;7kwapci@1p zkN7_s(@X*qYo(dVG%e|ZU=p!N_yiF)sL6sQ|ANd%#255wNRUa$W2CugzIU}@2+KBX zry*OtW0Y?sFXARj;>iwHUFL9+YseGrD-akeW%imnRISd}5*H}*3YcIQVQdMngc9In z1G%jQ*CBnUwmNILP+L8J{QXWD#9H(@TcSTK@rrhIrxUBExq`TD=viogl3&m~Mob-Y zEJ&Xpk_)|~eEp6=65XG465z0EajI4`JpvFWQYWmSeF40yA!&ZJABJ>qbx7JY1O;Bq z1$NkJ!*V{*0CiwCBjZj()!-QFr9M;*ycp{A+!8|-wKCM{^M{IPW{2u*xEKQ+O{QZF{M>mg-K#Lfv1+p>$I!RGPqyz5 zY_vQpoo}Bt6a+<%4-!l{@ursN?D*uO=camwc&XVA2j64bs48Qy1!62gHO}*^9zI0O zzHCn+hY|T###e33UW`D*3t2tk(0adP@k3q1yTe24`H(X73frbrQOm->a+++Rg;vC9 z@;pIL5qnh&EEw}m=NEB^{Zc2`f8I#=QZ-@>sk{n|eJxtSNH6gOd&xo(l1mNq^8gnL zpFv9Nk_7Xw61>?W9n-B6Nl(6(BT2{16K3u?OWcj*1D&nohrqj-`h@8gQoZ#dG-V`N zoC3@!2m|9|(4%`Mh=L>gr;+;WWT>Y35t6g=b;Xh~B+jF+sx0ok*<%2FMM8+OQG{x> z^QzUV)g;yJTLR2aX?%(kcvxWRgY_*Iz-K4ipxMIKL3}0+casD@0?nkE@uJkF!sVTx zm;1j0z%*R{_X>l~fHyKX){I8f5rtgR{6UqBQ$nb^_)LIEx<-&D zfYKVN>%Um(Zq-KYlgzbBBl72j2rkx$MQ4_VriFJ5nnZQ5^;UqUAsB9s^G7w@1eBM! zqbEcg3@V~f}F^Z^Lwm~EJV)zEP0Soyb^M(2~ZOm zYAQ_x)C`;WMx*BVOG3>GZ~ucpO%v3JbDVE}PLf7nui`jN=bK+tiG789S-!C*O0KCi z5l}O1;v0>chcwt1%{42$9Z>TZ8x*aJ7gqX0_gj5s{LM&r1~W+lj|p*e&HIgFmmIgCwDKmy zCrBjQ;VsGyVhppAHVWXdo~_{!Q&N^phcyF2ReE13XM@#R&TbwX<{I8XzTfkI_qD(M z%3uHSe|SDRq72O3_c=O5$fcJ}MG%hl*e!OnTL6|!w`>G2*D?dy5;E{Sam5EPeh7xy zPRx8<8Rq)XJ(7G}+0J#gQ4-3*+|!91Y_@G;u2}{GPZ+sYDu{?p`7xFlFWSe-+%*Yc zt%VjMYgv;>b$)2yphGu|B*}nEQ_a=sqmxHh&}~yMjN<6^6LYWGIz2v@uir;X=%^IA zy26Ue#&5OgGr_yw0lw;o!n8W%XxJ`JW$l|0XU!6dwWTyWAjmAHCEnI-(|uS97>V?* z>DL&HKB>(OqwLI)?9pMUf)`{GELJQ=W*O!lQbYg-sU1ukA4f6Uj%Jn4={t@Ymz3Ez z$q4n?w`elO53S6eR3qMOL6Hk*FB_SC3(EIzF>wb0d3LuJAW)7HofosWW`T{)IIZz) zSRMPK07RvZ#e4~@nlB7`pbGFiXM4ppV>MveM3jaZCswXbHDl2;X+0WpgAs# zB)fqyggeJV7NKXYiVm0$J(FN*nF`4?b1U*Gn~E~WzS*~)ZQ#S28%g+C-(Q`w)eCd4(g|Mzatb9v2>z>bzC(D788yz+gM*= zWFOBO2K+q0F@O7#Q<_oOSpdPMf zDM)?MD=k0`R!WZ=l6AtPqjadHARZn&O2RpU5TZjapO>_$V>HRbhSK^m6bA<7c8WwO zvt^B?5;s?qhK>wsWUD=WHpaKsdn9gp*vqn|Dv9g%nm$&?DCWe{bGJ~#)g`^aG{!5$ zzoeif??r<7g|`ms%ISnN=XjrI3@lR-3xfLYFs`U(#-)a0z!!UMRC{A&GNh@+oTzIR5ayCwW(;dC?93%!^`>P-c-Z~ zO8xzASRm1b^0A_PY*%C}61q@6UX+jTifp|@7s`7@d2d&wlvny?^_CB!73F-CPT!WG zoShL<(dwdn^{z-?yr7({#HnaaQNCtZq%V0;&H(~b(L_}^uq(R2%P&y*`l5XOu1H6|@IFh$Q_+P*`Gvb8eH({z zz63uNZ79k&>_UuKIlBUBfMft0DMX&a9K7=_HT~w4`v@5#E%P&H{`S*-P$V7gIglvo2&>oQl)HE>`KP@-$ zmZz%e9}F zg_lexC>`0Z-?cAGq|g$nGa|%N85|Gc%9Tcy6o}Yp@V@0^(Gmw>aQ=yA=;uU8+Au?w z>`v&zyVB;i4C0nF^SNvzBY8L*dw3?h^9WjM#3N8^b|kF~HE&+Ia!R$>L;SbqL31;O zNy;P#P|0eZTD#U1e18Jf>{6^T6h-3WiEJ%qk;Ke^^Tog8#9(Y6nj0uC$jmNep=n-> z48#cSOE%I(ZRr{&2kV6#B-b_7MubuhE}6Uzw4n{s*2g5^YC;_y%~6#?dd#dyAgd;= zvpzh>tVy0-NGXbJIz8BMg@E!mhQ3jXtpi^I03ZfZYW!FacX%c?V1NhjW77t6H?n{N z0lmOPyK8m<`^E*t^O8=x7D?=Uyd94#xP1y-Hwo-&)eg&qOAQ1Q1y$ZN24V{t%%z6y zEpw5a=%$u^_-h#-LVeRVYH0;cTe$c`e7?7ZE2}yvR67j`gGn33QHSo$g~J()jCpcA zw&Xag3cxA3C+@u(Ylpil@%*|9)isqfsWFUj%K-qoCDy9=p>AcY_>pvMgtI}a6c;6b z#$GUUW-_^6)s;6))yZU!s!b+uR~0tP>-9-?*B~6YUWGZzu4 zdBQ46-N2;F1k_^H#_zh;Z}!Y(uPx74h?RnUR;05-i) zC@Xrs*QWgS^a^y#UO(hV2{iNjtuSbgrs?SI67 zipl4{@tS0{pC@x)YRQ1T&!W(^s+mQ-pVuu?2!Ua@5*Uf!K9HaYCzFHhgX1zEBj%?o z|A-b9i4T?1@P=xf#-}v%Uhtw9KBFE4gY9mh-+tu7E4_b~;n$KRu=JPmy@7LBP~ z=5`1~Y)|hpy!`WEm!+4a5H|+YdsuMSC#Y$U)jNT#cd@=y$FOtGL@zU?(em%sbXTw5ezt^A;l{5N3;YN&+NK7JB$Pl0UYJ79zfq zaS7<)tHL>c7dg8bQlHbr>^AYS-RE0q!!3Q9K=M6l|^1 z_Kh@W;6-bAOd2E)fu@h!KxYf5yt)JlU8>Y)YlPWfRMt19kak(7lC9LuO9qI7OU`}H zC>07WOP;k7D7YvQ?Vg5Kp9a$B(JpgYf_4Q=qg|NyMbR!5pj}i)nnBH9rYB{MJgX}* z`x#xas-Cu`)c_`1#z!kCYkh@YmAiu<3XzIBaaD|1jX-%6s0aJCsOw)Nw>9)tp%Q6U z1xZ3rvj2;hiTOgpQ9+U;B1t0rE0QF>ijgGDUXrBnUCtG&-sVao&4Rfa1uBE7LWz9Z zl-#aBx+Nth%Tb~)H=r}6Uji}Lt4&zoUkIyLngD_Y*K>$lq_~q4m5{AMjOUA#Pw{3>=w9)lE$Oo{fltbwLDuM9s`6&GR;DEMn-mN5?+psR>j3E~OX_n)xtg1MQ&XJ$J6IKk{^Nu7F-60d`P6&Vt z=Wp95Ku~<8mtNt82reAsef#ZUrM-_WXpbM&_Bs+e8uv*$5;7ms6=XiZRq{AL^JAcj zu!UOe5vC|Kn6-*3GW>lRdGO`=Q`D!q{26|oE`L46uZPNChy&h0{}#L{olD8dO3B?M z-LmmkO&#ObTn=&{xV6onX+F>G8h_!d)Rq;*yU#iZ2`GedJWYY$YSND)05mJvRgdY4 znf0iyJbQp=r*sdC9;ZZ>?{oUSZby1nSM06N>xwaUMpv3W$JG?y7`DHGM*=&4j!-9> z)=oA#hr=4-u;Q}HdP8m@Yj9dPYS*_?bzLJ>|FS*MPW^&A12ettmc@0Ky*4BN{6tC#K znEZ=Beu`{ieoW7C4jt8Q9yDbJT2I)$vh7ClZokQf;{Wzu-tFooZLf}U2FhctChCYd zTYxeT!iR~L#~$#*419aX0|9F+Nz{L^rL zCZMKe-|5HU#%h@&4w>v(XDw$2JL!js9*<{z`&OhtQMjEUxBeJlnPF!)LVrhkkb8Dt z-%JIQ31WxOAb#?5NBGm}y@m(cbjs|?C>@bm<=CgaAjJqSD(wj=Rynyct{!U{nfItn zccTP>orFVmiW5cSPS^J3LEtLEi9{OqH*=KHo*~Ka35G6Ii+g1D(cnP0P!_i`aZPMN zk&`0UtEB$8Ucu;eL_QsvrCIb*P=iRwaz&wAXH^P(%toO>85$!~PVlHK0m_t|tCZYh zB~K4a=v)WwT*Z4Jg1?NmsILJ{J0t+j8DS;}2hd@Fk&=Jzy{Dqy2gFvMzY;$@0~j9q z5nATk0`bO-O#R+R$gK_t!8yRZ6+)_KIGS}e8QBV$v0(u{Mm3OZbofc~2KXI`0{{;N z05(cYX#0~hrlw$rEhIvlK~1v*g0{v{NoFSrY+6> z&Bl8FL?+z5(q0za(yzPqYqhn?uS3G^IKPxagRNy&6@3MY!oq>ZEKX6DJZmK`_#|P? zrh1tUmzHZ@g2$DO@xF_v26wg@U2#nUgORD>5B}$0pP!6if61TiTRZ$|t z_i2Oy&ik*)hWi#O&`18PemwJ|NQ66yE*8{EGB|E}=tC%!pZb2w23+_Om~ zkca7n?`+Y#N4X7wJmd^crj?%6^zkEO4*%zh4V6`mk@N1CjqIuRb8(33anM|%Rd_;! zi6Uf^z*C_h0ba-7E zz01KZAIm6SHg1@Tp0uOb!YdD&XX%ZZ|NGkLj|_5uY!0}&w+o9b|6wwDD)z|Pxwwy$ zu2y047A||k2ZP2eV<6Xq1%v=^-9RNyl~PD#6t@jMprB!`9}z7j>R8jGG87pK!<10U zH24u4+;y5FznR*eLEXcU%B-|Lt}a76wGfJ|IgM)oZyPkRYAqNUhhQW-y7Ccn7-g+n zFw$=84oH+c2DTH^l@`jeXyjY_MCO_rEv;G9hyakRrVx{q9b8nq)T${cNoZ&)x=ioz zQI#R0>LDlzNDUi+w5_RuC<4=ly_!&+Cev9{5}Q>r;j&!>Sd=4dK}iMm+dN(zlnfP` z)e4fSX2&%bR-lxivd_ zMR76};AF9@%v!7-i+{}Pif;kS%g8!ts=h$4?DT?CrYn@IkN1dNa^P+RwgK)C-5RYD zmkb0%Y`&qM0#G%QJ#7LSA~m3t+s zgw0B-6w(#KvdI!hvdJRYDw7rWW%xFB5vqA%VycWC6)q2uS{j0D9QM zkxX2N*=faTDmr8bjH#ONjnirIt;VkC5hzTE_9)*QqfhBK_979kbfsViiVMxz*|0RZc}2s=+2dI^!Sa$@w8=0qQj>1-{H zsoL6_q4tr)TT!a5f|^WBJ7r4I+{ZDY%(ie{&H)QRh^CRL{wnnQ!=B}zz#>sX5x zpQXXCX<^H>DWQD}&D(gWq1Rgmr>2ysevY_s4joB4)q-#?^sP|#l&=q}IZOp%kIIG& zEe2C6N@QERZOqOi7KhBZSEdVeeS^6a-kZDHKs6K= zbcE>pScPC&NU_mYn|2^UNnpOG^*qz}v`WtGu@kW0x)b(gOA#S(a%;i@{_0%qiLIWZ z7fGCRx*~C~JPbN#xyqKx=M_Yk$OeBNM0cZ8&rt{^w_!+%RxI_pk%Yb3;y2+3H$+hii4^LhOys4X-SUzg3t(E2f^ zytWWW3R)}X=N4sxJ7obGl_Ig_h!?-LX^l_~;SdY88Kn*M0+aGsjK44q`6;rca}=-O zWtlNL^@Km{jWzH12{>1vNTU75w+ zQT_zYtofMy$_r_exXf{c62VNHmF z303L&MxIL&Dmn1y6RIBv_sUJv>D72P5Njt}g#z^G);M<_D{_VC^7x-f2|N+=Y;ECM zJf>e|eC#3O&ncm^A|&>|+Sqpu{$l)gv-Y!52H&-*XscGs6V^sVH4)-X1din5$qFH{ zj?7zqb}fX&Dln7}7JwMQ2KY{w0Wbp{C6AUR0w1Yr4qI8gXcY_(kBOZm_+oCF^dJu& zGi_LjiD3z1$Xc)i%SJW_W`=BAQ?Amd786s0iitg&6frTvD*Oglr2|G-g_2X161BJ> z?@1QRNnA2qzhAo@X8aZ&(}%~zp8Qc*eql@u^}8r0_N8x2*7@-i^L0D2NXc!S`=hZd z`V~Ge@3+TD?Iw+scoF*~$Rt}j5T@|g3;a{<|DU^e0kiA6>O9Zm-nvzF>v3htmMl5( zxi=<}X)940V;d&{?fQ@(2osWqX$bvIhxukcf{N)ziawDU(s7w6Mh5kubOI=#fC2_9 z#7QgQCJJ~+rK5nL1*kzyMB+>oa6k|N3K$SQ?)LotYwdmRxmBgI{76ENmDIWCoPG9V zt+m%{uf6usmOH`<^Vt^RAhGBkVq3_^M9W8qPn0ERKWjCY=#hRO;rDrdMMph0(&hpvLG^^7q&BJ{VNgK<{o$}`#KT&w17;lh2kqY7#kOH_ z(NuczUK^KJLkJU1V0YUn@O`)F3QA|&x)%1+d9z39<$mk@G=tufJ+M-b<0s&--TTIo zrqxs4%I+TN;%F&Ve4wSEbsI7#95p(6Ck@ZSc06TN>XUnJz=ymxDL_s@vHr)l%zno$ zMWL_fdqgBq+%}kWuM|6Dwq$0QW4RZcnz_bs@-_VuT%mjyW|VU5dylu{<#NJXLXON3 zIh~f+NoKZTE1@Lg9w?^<(UQ{xb7|S5N$Kl_R7!PD9Wy5Y1zP?MPhL(|wt`;7cE*fg z(8c9~@cMQ1=Zi!*n0Kk3WYtlRnxuVE2PU1<+YFyT2(kS`V0}_n6>xemN73VYB=2Xs z9+u0C>!Eyr8|u#KN$N3|m%*t*r1id4RrxJqvG=XAqB2`h;IWz3e2FWQyO+uIrW+qZ ze>BfzUx7yDRG)WSFw+SOATw847C9!oEWj?wN{y81V|dgz;4}TyAN59y!w?hy* z_GzMyB#B-i6w-!IZO56<7;rP@-af$UGyu|>J56(Zj0%{SV^qTPHQ`S(>>NqKFhh+~ zMSJS{E(TzeB*NoA!XR3`qec;RE7U#CteN6ezmd}CRk|E4JzY#~>P~GGeZbb(6p;YK z1~MNZ??X<7IGfpAJUJ{FF|ct8^lW^HL_P*snj9qj8zdZqb9sNG{KcyRRSXNsu9{+J zB1LVSS}*kFyL4W55$YEwWrfNdlrhz8jFQd^{xkpGD_Bgk9UF8tnH%Dhz%(40bcqEye?5 zo=r-)K7@x=QOH}H7jm!FSd24!qe7<>k-XQ&Z+uIuGJt?Zwi{t*nrJ<(q$kc{CZl?V z3%q7zlRb7UigzW>6(=jc!RBN|R|0_~Er5@)>>`23S474eYL6F0taDFnv+cBR_D$G% zetKtpc2=@t??yWY>oPZ^(I6co6j|O1rd4zaLMb|{or@*}#=Z&3URR4qFe|iF{tgu> z(_0x>;|U%g$~4q3QKyux{h(bYy3nsBJG?X`aFhp!D~fTwWCv!cLymrD$gp@yFgg@> zM;A2;_UOJ=;~`!724DZR&Tbm2jhdIfW7xsJGgNUFT*ZMhwq*C^OB4#m8x;z<3ENue zqS%{hNb8wE@lAs%S1CZUFKp6VgBHSzCnTp>qEh7LaErzgH3E9LB1HlcH{Ak~8;gnr zkEUFa&=Q~eq}Ja++v<-r3C#;F^+}UhU5~ICbhc5=w+*Wa=B=ipZyzcVtp3EdC6K0u zN`%qZk-SzS=z)>DDG?;NplgNw!>dG&oFdDa(ODAlBs#sZV|I zbJ=UAkrGMqXoXXr(dG_(}O1{$^&UtmMd5JsKwGYuLO%`~~7>J(!f+Zbg}Z%NChHdXK%fm|<44oYOVNjp-%q5y#FtjjNp= ztpb2p(YcJ;*_D=$Ay>$dlhz4$hK}v094I4LgQf>gy3#jmgh}6EO%<(gxfD`etD!+l zITG{rm$eqc3zrd7*g{5t3L~u=L(14~B zvTk49lEd2g9gIh?dW{PSEx{)tVbJ(B(+kiSYE9voJwab+Y6@r26dsM5!Xlc&QGVlP zZjf75lUqNMTV%&Sk2WSsr=_|Lf^*Q&U=5?KJW4AM##WBf3c>9@(aeC?@(80$2DaYe z&@gdP4mO&SC5MWqN8jZ4XAxI8UZWIx8MVJ6`_D|%YR3BV`})aB^BG-Pc|5HvzS_ri zoqm5++P?f-i^sTEv=N<-6(d>M$sb!i#0`B5=W1t7p@kF#rIJiV_3y^=G_D#Gs%Oxx z(*^{#mvEOhAQa&QcWDCxwV2JZ(5UyQJsC#ffNFbk7Ld|&$>x(h@Sg(CB}6xtNufOm zhjqQ`7Q7~0d8dFX(~38+`l@Hl(MNP85$!Qusb-ODxI~q;DjP0xhwI5l7S400+(HiV zbKDV}I2`qUIjB?zszYB;S|qK2&b>Z|Nu$iChGJ$vSxUvmYe~zCv#9nHU`l$09f71! zxww{N5vu5+^*!6AwYH<+espS#$E1Hi0QRQh4aU30)3P|S(_P~a%XDlw$t&V=m2G)e z{G+9b_D68jW2d>g-s8s1vzgRQKQYXK)3L@$x<`^D<}*~|AGZvE{0 zzF)Bgo!(2tF&Wd1*;o4t4of<%@T!zr!Pa|P;p4t$lx6N@hwazvO19?H+LGPu-gM?+ zTJ}L`JA%OM1ba-(-#Xz-UGiVc0W8RUky|&%F)rqKs0}Nmbs#xjVRsz2pj6znkfW5Q zoS0O&&|~tsueV-vcM7NR2H%~%!Ihg?k?e?(h6%-DKdc=o%U`n}C3Pizr`Af0UEwzf zX7hqI-GYh&SmArNves>`^)`pP#0C#a7KWIyfO(^rThi{LC4!1y3${KU7G;ql=ZXajC=!K1V}5aE z?!)1i<}X=+d^$@|(GruLMITKX+SD!002KhQ?N5l0?zA;KGudW`aHRG(FeQ%%+WyT_vMna z^*2o)1A}6Rnm}; z-pBJT+3V5z-O%ocY%&J#^Vi!MkGJ+#G_QVp=c zW1c^IOkEtPVvjk;NG_+C_?*R=W{-voH10K2+BLYPw^zD@#R9s$O;t;TR@=RB*nX-@ zV~~?hBeVP#xOzcVjr{&nnxealLi{?AHXaJU{A1yq3gxmcV~|=dRq@+ zpA!gY8(fx!&z^kyJ31Cf2G*!ds`05M`4(b%B?V07>4BFgT&!81r`QMQcx^`udtMs) zaL)R0hxV-_m_BC%{nIGmrEZw|4p(QL<)m6~`8vx*TN7dw;YnWrlHj}KKRa=ZEO8`4 zbk}?&X}N<~Ka$e`R|`bLQdr><^avEAb(r< zRA3i{_dpX|mXxOIMO@H_3opQGjR+r5gEECq8jVt^R%k?QlXy+?s)IM|YTITH9oU)> zn`zY-e3W)Y6*Fhb1wbYFdR|wL$TM~8apK)Hu2Rb^1~}-zCnESZpB!J;b)Y2 zsEWX<+x32*H5Q62P7E`gwkK3mKT)K?2%Akzbx|Xv+T&c!`y5BCafM@$(ojKIq>iEY z`GVDW+~}y*5VTbqs1`aa;he5~V+k;XsK~S?mN6}$ADNbXtch#=3qF^71@L~`2-}i# zrOCE5ALMy?{@4~i)|J>6k0Z;_zKJH^x@*X9RRlX(BsVx%XTZlQE_sF~G84kv^#+++ypI+na zY0U`l>iI)EA`l1g)AKA@5s^1NXPza0O`_+-wqEXROR*P;ZOQg~&TNZH8fuYgXVK*t zwIAt)OXLjqhlxs&5Sel~8OIi%i;VIVKa*che9Bo8jPgWo>X@8x3aZ(XJ&uSM=)_uQ z-ToD8^+j#jzweP&_Om=1+P?^m!zkr4&3Bt}9ZeWM#6YU0qd2#WaZF5Aub;L&LEkOH z0Xg^O?uAmZy01b`0!E6HpfKZhxpe29pdOhaN{S-g#cdVN{vh8$v91QJ)+{vkmR zwjUm0LugPy2bzFPSmo|eo(749{Xo}Z-f980U{643{R9<-G6=5pL?UZZ)~jj&!3)eX ziL6U%kw#2pT^d<1y(m(UO^dV+F0qIp12472y2N_vh{WO(Y}yrf`!a-m@<(x9sBPLk zJn*^7X!XSf?Wr$wD+C?!B> z&6g*KhMBannj(!{GvrcHtZpeydHbnCY<^zQJ)>ZCoswB$a)k`}cDVD{HQH?}dIM)+2zZ7`A)g)3MXkC6i%<#tS)49I!h zRklg(O1D^C<&2ae13VNl$Yn}l#YWx=wlG!07?<8l|^E(#;_{7P%SwEUuqA+j zt=zGd8@5n9#bdSaFePAVC%<{y6R>Q@X}~k(fsnw{U<^9+JdKz>r4d*1F{#iEwhc%_ z-t6m!2k43Q-ojqX-c8nZ8}UAI(`C7jiZ^RDI_52rZ$)E1kP;)Ky&@^8}zZgJ_iIuCsfiXP;ll9TY@$h-=ndC zDw}T3YZ}GMZ*xX-+s^Pu5@;`^A{fGp^~r59TN5KT)N2CR6u0%5#$W{?6)JD@xzU(Q z^<+u&%^%>)5D_}Zcla&9WLaWc27fU-^7Hs8JU63_LM)_)#+&L<9Qq+f@uFun3ZVHM zMggm#kEJ#qh@U-^eO0J^Y*RD@tu_Ie9>YW^$YR(UC+Y0&XNAe^#T+-Cv2WJ}8cUaj z^oetbWnmJh#N$zj<1qnJwQN{HagoX+g+%i3H1cpklG7`Bg2&HPPm$*M4D=M!$4w{k zofK#$%k>dar6t(+s0pbr@66@AGKB^G2p_3l_2mU3h6Wt(#HHw~Qki8DvPd#yx_=Tr z|2Al-=zV|z%KNGH7OO!T*p*a%`?9)^nX-2dwXwCk_k#jl-I}UAMzn{n>>u$)J=2;| zgj#;)UHETH#^*sRvLce|uDK($qWRw{D?*B|w7JU`(1MXvA^t*q>aHo4pp%){yFm{Y z$tbH*qAOG2;v6;dK@r2>D4tc=J_edsdyOKdJxbjbkR9j;qaqrlCBg?>{S!5!*_zHL z8!_B>0F0ecjldP|MGg1`J=q*oZQXJAU{oMA@F#K!{{>;gYIlh6$aH*FbT}`z`Q$nm zgA&hMhkXYmYMtHLLac$q5f%={95ue^WV5Q)Z84!V{)X>LZJWn3mC@)fnnpWZnxQwo zG;`psi=+E-Of6orG&6y~!{GgodH2UU`PjWF7=mUdbnF-!Ebj(57>Vv<-E*7>`O|qn z59|B~29y721!R`}48-DwNCn-U>(34esRLf04=4 zQcYwUKsm39yLrH69*dN%_}prr`p0csyjp}O3+i{X`J7+#oDDb5J{$U4weHzPaJZ!m z=R7p}&Uv!Dxqc^uZ3!#@VL)~S9;zw&#gRKKo%B$=rRbu$FqnXGuHQOdTer|@D;%ZE z_J=|6+1R|BFX4oq>krR$kO%*O6XX{j)*JoN8&hEznck2xAVRgm zKh6X60Lz}+`&cf_16`X=XY%l-@Ma^^O(KMn0hM=e>b;lO%zSZBlyp6;Uu?8DJh#fB z?~Q!^8IG~xyspo`{T=_|@6P_x&peTJKa^);Gp%hl8!U7QsaBtQP7heN4mn4DwYrvI z0l?8SjYytif58`IKUExpOgTuHuQ&o-qtT154F!GD4~~}DmvDzuh*&vlTU{3s>rFZg zSOw}g(naGz>-^HI?(gIrd4?5=^@bIy-dD5=dl=+9&}mqtF`UttJt%j2rNbSGW28^x zJM`<`H-_t3dhy{`rK%-ofci+(N#yuF4Wd*xi8K&!vHh5*z1O+v$?Rdkf`*OFo3*hS zFe2S#ejcP8G`K=332KxiuJ;%Gp*}ma_XWVf>*84!j{NANCbB~&>wc@9@5XyO_(D*N z-R2wZxk4Kw{VYKM8fat=cF6kDnr7K_W2M!B-ztmzEveaD&WPNFanC8+93^Dh z$z1Ps0E`2z#nx5I1JTQHB&QHue6N*551OZyVs3#{i^bgd{=Oyza20qsoX@~?U(Nw| z+%M!|@xo%(dqNO}=)!64f+i1qbs?{^`Q8I!<@8u*yFc3zeS-d6!H_8Sr5;mP^kazJ zk}>c-;o)CfG_#EzQtv3bA1U%O;#omMqj=Vn|C)2+J?M*&VM3VI`Sd}+GV z{a1M|ZiDEx1IP{1Qs@xrjCGtG2B-l1>hWs|3OxL)i&&sybLV;MA3c43LWt#FRG?B;l4+?$SXTVvgn^; zPW*UX>&k<`wG_vZ1~C-}@%XP$)pYoRE{b+$5Krp&0ky<<#go-UcxQSrGKi1l^wq}E zFC2CmoVpH=72_zN4Th*)m}7ZSw%TJhe}4qxMR|KiA(4}ZPkor%N!`la55N2fw`+8Z z`y&rWbbF0%VLcqs{(p13R=3EbJRH#5b-IOpb-Oga1$$~G#%hX~KZb-lQ zSkv}qF&&*ARm>4WC`;oM6V%IYmCsXzrs@1jerd>LcnxRU^J19fxfO*nkjSc0$EQlp6tb<64W9|_eBS;~LSyZ_wLfG!=eYyv@R4q9%At3yH^_w{NKYJ31yd2s-_ig?$uChJp-#4V2Ej5BL{tz@ zI7)?S7D#U2CNq}jn>7U2HBBeSP?nlaP0;6>@uvOsT2tqlrfT!=o@<*HR?o2d0w7cU z6I3XeG9BVi;IHv$z6ukXuSNL#*e;{f?4vgtB>X^wTv%<8w&rXT9Uxlt9aC@|8^dNI z>upW50((NMO=&;gWuz`3Z1rSzT1Q ztPrGZyJ5-QTgmu9`zvq}4L`QM__ToG0es8Y)%1(a3L?&6UJ&;RKKgrlIor~;S z{Yf7<3%|D-7X}_%0k`GWFJSCAntn)VWX=>+ua8;Vr(OBjHVh`UbXP!XmZ{wk&Jls6 z8`l|@s6;myy|R)PKcf6rh|?;yQiSEHFq)$Z<04{7l3sGzATZE(OGTKuT-N|R+|ht1 zkH70fI5XBc7+5e9Qm44cwZR3Sh(M$sNQHHb@*^EnQAA|{IU*T=un9*$s3|3)&dnOqf~|gv7HmHbS6|xz>##Pr z9s?1E0*_@CfdG1MG)NenYHM6>O!i7KaG93?nsVP4vhHse?safGps>we%*2Igz3Y}L5g&HAHrR=~b!)HxkW zO&+EX3}3zS5zOnnc)AFT)(ra}do2dci}w~ADFWMoXW1qhQ?OsRRPON6^CWsE>0LzH z$D@LEk^OoyY|Y0*CUH%EogoCLbv7Wupu_Wyy<1c)kMcj2nn6O{sLAM;xb9}Il(?-b zCBe3Gw@vP7t@wv1#JG{T?7a=&TH=D_kHm@|WrG6TjpbG;Z`di~5K`Fq`Zht>xf2Vp zsAA7}7-#-b4&%=vHsn%jgAF*CW(}@nVWTZ<@POwW0}N zIx^V0>~2RawJ9L2b}O%R%!%;D8Bsd)uq}LT5Y`57HNtc%%MygO6~nR|VH^m( zZ7IUq%EuWo#%hI~5c&gU(Q<*3G%IhyH(SF!?4NjcZ=lWNOryfN+xuW2DL1YCoFGn> z#fTUsYaRUsUg*m@3f=UgK2Kr3^h6Q_`8bdqD7GbktP%MUF0i);z1k7PUigtC^-Hq(07I)@f?EoCM`$?D5I z#DVEsouSr}4Q`zzEaPlY?pb@%OfI6sxm&%CIWk3rs-|F50P!7&yF z^E2HdOaHa4yQbni4Eh}LA_nC~X&b#N=NH>T?m+$hbauyXE`;mvX64B#f{TAS8WJxX z(-5KE14?qe0+1CK>tyLfr)>c`0Eoudi0GJ@zSjnt=BHELLhfW|ddEI)pfOqyAt*d8B(Wl~gjWo=Ojn_~c=(&ER)WO~>p8%-tGayFppQIG@Mb~WSA zEX{Psql4K*0;QKR%QT{!pVy|WYJ@BZiesK(dQ5P%Er*ARN^XspJ%Ri(Z+ zc)-K88Ib}!S)*;9R+;MH)mmObp(PYY1$N*;!AYUENPXL4kP!XNhUjsS0|sA141{=HL^XUf;(AN=jlwZZSv}&|MxlTYw(+%3 zhX8Nthyb9Oa1P!~5K0`0eomC8kvSC@wmXjP4%0=ecVjGODL)%L#es~aZxSnwS<0;uIFk0F`^1{}n1%=0iku4ci+fp|)h3fsEoWYw#&cB2nmMiW9kO z*GHt(hpb}yFG{r?9?z0K6~-5I=9{-;)5_MBR%Ve3E%eSPeU-=`^Ur3}0e~h+)FghG z!{vA_LN-=}Uz;F~=In~#Upl*7qNWBk*PcdV0{R1z0%HosXX$#c2c<{mEDvUtn;^ix zgL!1)A+q+2dALlblQ0ilKh8V~Mctr)zP&8UCF+dHtmQIOXcgn~No%@Go~HY9-9=uS zRdtsFUcqYMOe>q1$aR?U%d#x|)gR<{Oiw72Oc{O>->w}cfdHx15$(n$c%hI;h@ZFH zIj-nd{kd(rZ#6!b<|At0VxODidS#**#if)JgsTXj$Y6oB-Qb6+2K9<%AuVhay*Inb z8Cycvkzi?@1wd(3vDHc!uHAf+wTIPE^1LF#d)4~^1$g*)_^o~`F2Yn;m02Zsy$8;f!^})P`X2Psj(UN zbJzF6E)p&eA5!TlzEz}h!hO9r{9}6C(OZ0C>8)mpeY;<8XYB+NTVBe;Z|TWel@|#` z{Is$|x0FQ-)%1D8HwVW}qnjVBQfj zNqv(7PsjnpipD=5^q^BRh`Jp(sVz-kUrp-dVfGp$>N>2x;Kv9De;53GRXB7S-_?RU zzRJCW>G#i#y=Aag`NyD>wZs6Z*{UPY$E1u%CM?d6$<4(!dcfr_+of1BEL_r|cr{TL zg$kJ?s`n7y5Us-~I%;RTD!OLxV2+~eBKan@k>Ree_?bnSE=!};)M1=BgJNbZWBRvX zX#t-tlX5QaudBw1g`et%NuE$|mkU8kQ+>6;Knc3Yp+iN$%qVuIUCk(ZPRGwoBX(hG zv(%1Jlq+a`P=r_A0Z+w=s#|mlRP?#5zm9^!RI#mOeo|k~lpS=03u56ELdPXM`qRMh zZ?VO~!9xJ`y6~_b{Jo5`iLjCMUOOx%jzD}ikXUOwUrw9X%srLAhE%(XWsbeD=j-*H z76|Vk50g%^QHjF)X(cw)C6uWtm9Vs3gThK&TbC#sC2Vl9#KyV=S)S@T+KpDOu1mBV zCB_;h*48D)8YMc75?9qFIa~jI+_wTDV%)OMq*UoL`@5Z?Sf3Kdq zj=yW?uDO5TU~P5PT#xHja~tlrJWdPezV5BO8~3}5*S~ciCC2yb-KE*L@_U1RKiRS8 zoB93UOFg}9|Gs_uZp|c~bVTb?H01VtqVar)hKa`DCL1M&Xqar2=r&3W(a>#_m}-<5 zqG760V!Bach=%D#iJ3-;AsS{HC1x8XhG>|LCCV_y8N^>MBrunRhF+tKnhmdo>h*k0 zm_{Dfs|4z{mK}Zel`=8E+z8pw=xh@q*EXIH5pr!~m>U}QlU8BSc8YPAZc|oJZ3mYYd2zg1|LhTBriKi(P4>|dD&q}Xjoz;dD#gjFJnJe zl9wGIHLPPLdD%fv^AeJmUq&+2N|0Q~BEuXSY|G7oKcfvvOe^NProu;S3_=g#$wWv= zC%TY`G(9*_msiN05yT}^nfho|*q9}%94}-`Y4Y`*7l7a z)x~j^5>Vgt|7reD75#DkKf(XenmIxu>(8R)t(AAgKZ5LYm@@*m+~1=$}yIJ=4Vb^Yt=f<=_BF@gDq0dcBlVU#lIXvM5-L zc=hzgsTW#EG`G{&>Qsb+f5*jP{ziBu5IPoIud@kC{xx4><5(?MlW9EQIvjaP5<7dj zR#}2L7IWmKZ5g5cHA)dP#=mB@#*%nBi`z3Wl;O)nhmX~Ch+YVRK>%o|3iWwjryVBM ztFjE{ccsee*HT)P$aL`Ky#ZJp+89sP-5!T1Nl`7@G_sa$Dbg01i|ogl9GE(2-7JI+ zsj=!9DTG(aUrgC=gply2MM&ofJdeI7F=o!lkfTckJbTG;Z^;@%qt>iqRn(TwUZt^oE{(uC-2aaBp7G1 zo03@9x&ZSnN5WWLHxJ`3B;m`N=e9y_e1T)kq6{W>m-NZu4F>0yfO z+vS-Bkj#zK2ST`DNOL{^$?Z5=@7#vrZIBu~S2Z7iY#iu%ym|R!UX7vK%xzuy6|ZNd z@BqzlK#;S|1-d&W8nZje>OA?tEFLV{?u zu3CG)4wEsrU|vl@9#szI;Ce&G$W(-4@GUrhSNzFbfnAO-AZkBn1w7LnayKp4Ve7rp zCJ*`mX}h#^P{5$&k*lU&t;(Q@YTew{SPZ2AdS0m*`v%v|ZH~oC74tKCmefYj$~xw^ zH;Q^ddXtrEgQKj&I`v}c2!$ttUD~&{iuGbK&3_yvUtQqD!P_F~gg;@ErMt#9ma}JL zwMGjVYgxId*2vLAwg%fp4h$1IhCmV~&kJP6l&SOU0gva;%~fkvydNv&t=QN5m@Hi# z!D+sv+p0;A0g)RBZaf)=F(AwU0%r+1NurszM10{K&rlv_h$Vvm+bX@Sq1kE(j!C7) zAmq=YAWB7BdGKGUkUqjz!lmEQR8i#0S*|x24R{zV)L_9Wyy_74PyrMLtSD$3rNL^o zS;r=e-}LFG02ZtCTX1@L|5eLMUt`lg;~c@her)JpUu&Ls934X##j=wvmic)6<- zF9%k(!uBU`ENf8aAKnHp6FQsC&c4LeDRn9|#fhfGWxEVs^vQ=Sym3mU%C6czl zjBZREq6c!K_Fk#>&sn_Ck{x9StogJ=`&@REjn*{V+)?)9>x!9s3psjW{T*1pq9!rV zWPtIDMe*`q4Om0vzj9Yq-q{!Ki#;F}S&0jGUSri{M$KR&-|jws4PpX>&kh62-v~;b zMOyfyOfUUtS&$11dqS9K$@43|$xC8dwBgv&T1GtpUeCmGWjr z-dnYbd&AMsxa+mxxxAw#RgHyBY&PS|v9OU@&EyzE|DHsP(3#^Kcfx`xrM}|}b-y%Q zd?9KS)NuMg!CFj6Tx90q3tiNM$et&pT*zL8uaDn|DDTbPcK=|_-0k}xl3sdyrXFi2 zx%e3VK==18EIyUJbsxoU-v1C`f5Vd6)omr4p21$zGpMg#y5uXEHDAHiM=Mi4Umg#Z zJjP2_(3hcqvDfe~(#PmuWFYt#2fc>|Q{fuLA`W}W3Zr;#Z}cflo_eb_`{u4&(ju%J zp@rgiIRH(lz!d>#GL?Kr0P5OT%K!u;SP4MWsf{ZI(ee?`sEU<9H>(%RKnLd(fTk`B zpf#yWPfI~~cpQ|^2taG?t7QOM=Z}|C&^3DeoG56$YFGvaQv6?rf)E!1&{dZO(6uUX zMHIy9#j^m=Ci`j`fUfh$O98}L)ZWIkr=SEyd!FUChFUn$WFCnJO%!_ary zim$=%jwS9T-V3|qUnswKFvTLB93bs#QtBxcn3NTR>xXlR!4=zJk!=k00WnG{hu!16 zQp&6NynJCSG>BJn2}e#X;gtvVz<4D&#H9L0UfJFPubg4=FL4z_hz2H;TCZjs3 zs8xDjRv@Lus>yrMxfw7uaxwNbi3m{7>0Ui3v3|x(F$HK^F*>&=Y;7=8RCTH}|E$$Z ztbsltc5k#^Y}LBnNw0V8)!3xg2A&dpS76iHU`zQP+DrXe0u4DWtWT1Iu}|zee&w)F z)LF03Vn&51_m2H`!sVn0O8_*DTZmt*?@VNl+#S((uAB4Sx%!>HyI9{Llfyz?k^zN- z>26>#`l8!VzERZMhU$RRJct#P%pXuzUD7~<+wRWrD#=}Rj-3NcE+juVM=c{R2D{6) zno|4YzeTUi5)>_8NNt5Dcpkno91%GzNDGx;SV<##{~a$LA^x<@X)jYqdY!?-YMouH z*G_wAh17dg6br9a!ikIu6ck}w*V%mFR`rt)x*?E-Emks|vIiOJ7iDs(UurgnzN(g- z9sJ7h7mHXm75iE2*cp`z@6;w83ev}r_kK4|E^;YS7FXL*`m}YZWAu*jH(jQ<(8=*| z60a6pv^3aoM!z4WL$=$8jY2qiq@GhZ?RP&=k{+gFx6&T-U2gNKQfcpxbT}!1%4TKZ zuc9#}-GbzHFlCgFgLi~>vwm%ODUwE6=*$}xFPPu(F*r*B^P$op_W>0X2>wlqca~E} zITO$mv6)$92TW#Fu}CjS5sWO4jRl}vTnR3q{urE0J(DV15Ly*jMBPPO8}{zTGi$o8 z{4v^@Q?=L@aj%ewJ|DM5&<1aC;i97|nRyYnMaYArlrDH)^kq4ZTN47|7h9wnTPmDg z0&r|Ut7;&2NAge-#yr`vj_lc8wRhi=0c3zQfY)mCQ+Mc2I`t3;5i3mw&p|c`_=AhM zCPF_vno9W6h@d3A|3;a2;x4Ur3e2!Z92O;!5GEXO5Ry+3?j~pqIy*PR%?QzjmDK&* zt=|!LyxO~a_W(?SY?A|M^NM5yj~!;_80t4391t{Svc>!OSn4CdZpjV8W!_3kHdvk( zv~~;s5GPdlhv8XtR4KI00H4c~Zs?v8o_x*`JPVo>9+E)=3Rd%9ro{-kw}d~7ZS#`_xA8`!~=FT$)?VR{h4en8k1EEoP78MP3KbSr_AITXYG2 zCxWnxa(c=e!x&n<9KdKGhI7G2y8_igb7ROk zq#A)*MD~ggR>)?Xp>6gl9+3(`ZeGb&dIlifcW9e1Pt)levrG{_1?()GY~F*k#peC- z`o^~;s1ZoYRx1FF_68Nyj>&6aG8dHpN)3A=Ua)7fHcobkP%{HJi6{%uD>ODYgfS<+ zO3aMM=C72`?3I;G_M3Qjkq(Kk`P|VqFGYs%hdtW3%i=&GoEuBD5{;a`DOoNpgChwc zO=ig=Q52xm-yB!1XnTk^!P6#WnSSJ?NN~2Eco1!i2dP`mPv{o?2sJ->S1a+8l@N~5 zTY_#0BcQj0$%MtskPAm)%XuPACiC1P8&Y9J4tsv|Is-_e=0D7UCjUX=hy`U31&s(a zL)<_?H#8~eK?rDZMGC5RhC?4%%r9HXx-6b*?UesIh^fpaH1XnmXge;I?2#Gmn-j*Qv&9DrA=j$% zstU!Sf3L|C)u1EX`0jk?qT={*x1iKw+l%RHp`hL*n%qtTdq~Dqz5+O#fC3}%xG18(@oQSr$Xeh)*`(6#TrWOM8U;wUrlxna*8nxa~h zHc>;*hQE}Aza+}<7ygluJzLej*kph9ScB}(apPpaDwdyYPL+N2H_vH;{CVk|=5*F@ z&S>gC0701(J*;6t4D><1l`7@rrQhW*S>`Yqj4s6i=?=31(~- z12d%=@vQKqo6O8|9WujbX7EhA!SjJ{D%Sey=|P+*0ytl z+L9eXgJ$FD4f_3_k_BHs=y5Etm7Is+JmsyD-aL+Y^?dROV1n9CS>4e>kSKAhG;u|AN3f$)5inqI7$G@eG6Eg3_9>IUKtMu!9< z?v34!`>efFbZ+UeYq62mauV(m}pPA zBeqY!L_fdXsmhKw-CWZQ+yr#|j8W&e2*(N#5vIR+VCRyJx2JB@RxS3FBUno5HujEYbu=jb zwd2Ngt~|edGC=~2jV^D&myG7+2aJyUq~R+T9odOL{StB}w5MJo=&;#7eQcZUsU6FZ zi8o>I*>~?B&-e$i$&*aGF(sn_DrZWKnRAXyG&-)QN)CbHdJ@|7Bn-1w83Wb{<${@D z!eH8D@65^^+8iHl0uI@oB#ovutYiSntE1XptX-g+cuJIJtYBD0kpr9A6{=8Ss+b+A zg4VVpWM@$Xwem3IASU{c88WeZFky)c*xjgv(c?2ktE6&!NHim$5!p}o$7#Jw?21S@ z0FBi6|LG$a=L9(6w9nN97v@zS+(=hmVWxc+&)g zNv*fWP7(-rfmJ$9B7N_Kv`W#bfhf&s=Dj)N9-)p_IAN{$SfwPX70Bq;;!*k_z3I5E z9of8s?2M5gSH_-c?Lv&5TrBNCwbaSu-pQ79p!20f9bQW+7L17UN)++^4EjZ~QM!i7 z_%d#2|9*=5=ZyjUn}lIcU$V-u>#wh;ahV;0?Mu~TbU<+=LBbO-I48W(CMRJ4l3n9I z@x@+-h??3y{Zgw-_0*4zQS)kxzuH0*HZ4s=FfFHb&$R5y$Xo#t9iOIGC9r4JRWjca ztvX6jLPyc?RwFaV15;#GJg|<-`X7P#bmT-y^dQ&8vTwxvXh}vmKHoazL^`4o$S7$C z>t~wq)i^waB=Ac_u#}!9RLyrr?NT;S5hMX+;rS{_D?ADM%{SSKYa5&$-;!eyif%>E z;(7fPDb&72?pOcNGw;U(TS-+jO$=&?EQMd=Iv!ec2PP? z+5Ps3%dP{adxZtfE>fAG4I0h4KvEqGR-dtCaYEA_czhoSL2^iztth}Gx;n-sr(ASR zEfZZ`@`ivmRiiX7kjGGT*)if#j$9%tB#EC(5}#3c{R7`hk5R^;PLf`FAn7%Q^s*y@ z(S;h{U$pN{e)(wFKEr6fP$U6n->fXaj1ZYA=vOvVY{nqKx;`_efsGwmJMCIlmq-%w zTIMVmXIc3C?|t}Z$B3nrY|8ugPO8mx^BsNPj?nP~6%8nTt*XvcU5$~qyAhWB3Wdau zfR7ZPFoty!{EhW$wqq*!$n>tIi#C~AEeP-y{ee3+B-GnJj2Lb88WKkAa5V|#vjEbn zB?_G44y}_&qM-HZjOk?)kR9-q_Qd@Yk+65Z!So}qc{--QjN3GrK909lnT_qWTTOHc zFts3vVEKN@vvGO(Qr$pixztku$-GJ((-d(U572uE|a~!bs4TcERKWT6`Mqm@Y8i=H-}9hLl+!c*=%FmjxnX(tVRf8VA=?j z@=00C#v4t?n;shB6V9PbR?{cc5l~kvQ5VpHPL}^PY@#Jz>VaO1}!Y6 z`X(^gEY^z$SQ(I}Ss6x`s54{Lgp7n4@!gi@kuxMyGs2PBsHio-=(c1>yy@1)fVqNq z#EG@F(V7Q7oV3MHr&f*!rj>AzN3_ZL%}Gcdv`S25YR_idG%BRAsM|#5#1fI2=$9BN zlVvvvU@0G(nH6U1l`b$TnACSTI0Xl$vZjDSB{URiZ zFoi#BvfMGv92hbWeDAs?Usc1RKK9B6F%K}TT4+v z*`#P*ZFneh7n3qYxG;yBB^kKzoROfC;L7UTVeXMBuIFDM^G8i$xOVBaYq9ou4Y_?>Va0Ho8 zL&U+favPTy|GLFsRiHBLY zmvy=&<77T*c;fZy{_l-x$L!| zaXtU)hTc3_|84Lo$VQgIZ-am>+3&g=(modM^bC@eHfS<(y&1A{qg7LiF~zI@itGz~ z8vceyL}@7P8c*@`UnrkmmoSatG@VW??zE4xQoH{-Hyxm4M68wpXp@ZV6%sCju{ox3 z3qo^Qq_c<^eg9_!hv|A=b&iUELlRtX>N*w&l@imHfv5q9FtlDOEb!CT9^#Nxl4pns zgnuO4%S(UpRmBU!g=BsO&Mmi*LNq{pp3W3Ww|F_`UNW}D>4#r?m8HVJN^{}F7G2$pAKlgP&s z4%v)L4yHpQLaAw6vUfQ@TH<0to5ciqp_?EttZkAP_=6Xy#v=`)evjrNl^s#NqfF^b zXp@*sCNt&;H#+F^^%`~W?M-e(>Bx=t+b7PA$kfTy4ocAqH`?#qNZ&4`d5azxRlNJe zxuhb=+x@(G_{n;ESr7kJwYEhXbd%NU+MDP?^pgA^Lz`upi+_!|_$@0g8*uBdzgJ(w zd6JJ`1-4|n5<6-uOYF)j-WB-x*GR=%?&EJ|6+5TmSyIKlS0y zWv^M;)8ER9)m;6mXm)u;M%>TA-%keIFM_}Sh&bPP(;I^xpB4wc#QuJ`Vt2c=*VUXR zVi9YcBN$b!;`o-my#kw!t3gla`gvab{qhBj`1>Qga0xd?m8(7b6<+-pxL2Qw>c`39f1STV1B88HA;ZkfLjK3% z@RwG4d56F9FDF~}yWR2d20(*EsXhL-u24nYIwp{3hmDrs(m(O9s)lIajNP^Ys5jFl zpl{Qr61L?3DjsEd@xm8UZw*X?v22);C)dfQm_X1$_M04^Q|wnCDRb?zuQoKkLga`F zrmk_(LrQWqKsQy)ZKr&^amraxk!$L<+sqcdaNA)j6TP^d9?Es+cT@>O+Rluv%I&+& zW7M^04Xxh&vX@utu^Rqy^~UrDH?VzK>3o?E)<`}r=^RU9AIy|sp(CzhnYYYx_o8!1`ckn}0#qL-OeD8|vM zBRwlE@qpcQ*bMfJX00A~(323VPmX%?_EclaqVEm{kInfxWPv#c75^btv0~rKMAmew zH`9Tz@v&&NdW1+PHG+{R@|q>mmdAy)H3B>B3=$()dYV-mZY?)(!MCgfs<0|`Kou6{ z6c@;KoC~B%T)R@cWYyI&>(>dCWci!XZrJFIqp8uMjE2>$;4@)9U%^@IJQsNG1>Op7UA;nI0vBdQhO;R z@Nktba%BOqJg$3aa3Ddf2#$1=kc+as_nsV&6@xh*87&K!+MsyI7yI{^t^o6_n%;jO;s0xH#m_VxL;%Dmxqn9e`$_dLtFG}qX(UP! z=15~A%;7-Min#V6utkHtzO|niT6RW+t4R4v*3exF9Bf%gT}s+wbh+dxp5GexfJ&0= zaE8lpTicK<)2~YV&J>n2A({)W>eZ@7wh*qfSSX~q6UxGQH__Te(SGqz? zhn_`Es1rKIE8L<%Tb<_FQ7@G0hD_Evp-Hg2_{#})l=XhC5*KqqA?8~9X_ovQ)j7RlN%1S{6mJrv(Kc@B4SDz}eKQ;0uS*2oas582 zKXC|p&^uI^##T9-)u-=Nk;xUC6SHZQd_X0;E0z>9X_WkL8s&KK0D#fKidn>xqeJ*} z|E774ydA;53}OsHoM6RDPOFls;py~{&}A#pG>?@C4#&OyCejyqBvfh|H%cD%Mw%s$ z#*&(*jgn6wlfqRaMQNq_jbah%(!;ZAd#dYXL7+hJM1ghHEz z1a%IW5BzK0y$R*s_CawDLLTmYW4L~=j#;Se3}NX5%rwm;2`;q#5EoWU*%bA{;?X9_L?K;zTe({8u>gF)e5m-fdSG>Jer(dxe{xN@h-4w3BBK%Rj z-Q-6%eJtKy?}uBxJKnz7k9GUo|LEUt_7j_aE#BU$wc{fEc)Wdyt4g2ws29G?=6`so zzBQ%g9~S-XOSObpgwMv?4K^pk@5S3$SvE!Z^>{layQ&E9i?^HPV=2PH`qsqaM?c~< z|E?b?7~U4|U+Gvn#qm6X&es^SjY19ioB3&{KX>~Q-LP_38N(Th-yj;X~KVj8q z-WEh!YG1Q{d9DUY9?Qtc)dY_+qu72vC`Yw+*XsclO2i;rTIu78Y8&u=R=2&($rC>y90LUyx<}Nsy664u z{(jEc=tF2;29B)=M^9wke*WO->PrKT7H)Kfa7<%aHrju!>^?>juv}3Di>_6he2JbI zrr!b7e&D!aM(86~4HT;6sKB@-%wt&NmQcc$60Rm5%Ts)e?LH>DydEeI2xXDvZ%PC> z5U&J)0^dKq0x}#W(Gng4y{tl%%Yb=#63pyy+ZAT-N7m$BXZh*5aVJVOepQ#YK&0l-c*iTem&;H2%)f!77?z~SK=W6^G! zbYq_PDsFpZZsoS6Id;l(1A8K3_T}oZ13QhAZn5}JT6$%>Vn6u?!c-)%wd?je1wUkS zS95Xwq^%5ce0`5yNM+yg+S6aF5?)4q#EsBv#v=Bd_84{I9-}df>!4-EP&)q{*?8>_ zbvzU-ZJpKQxxf{G0+*^Lp((;5Dxk}g7QIVdNLOhUTD&4IHYeieF+zdq47)Niyn5qW zdm0C87MemrJVXZDGRMP5IT-fEnf*6)+5h5uIpi$I6@DCoCP)$mZ=;D^p$AL|1^wDK z=5?qo5QvBD(ipQ$4O!bD4K@`%n{Hn{y`I}oWb-T~lKPn1)H8KF4NO;h%Bi&9lJy$@ zjodVzulUmo=e#T8d(JcOwR&x-3s3g_{~GhA~2>Awg9 zPWl4h!4-UA@iyQLE+XyW3ci?Zw1I+g1z$`zzCZ`Lf-fc-U%+D62@=*ofapRieXO__ zo*VR-H=}?bXbZs8krW?3^&w`i#bh$I;FSF-F}NwKSk2gMRU_>4x^sFm%xcqiSYT_P6`|9U zdv*sDFtj_Brxyz+n8Vf=mE?{ipS7VoCuwC^$amkKt+l%`CDHW#5tM10R*d%>u^m2`FCv1M<{iMvIeGx1t83pKY$hEp*JOd^|UOnR?xHeYoHC7p~ zw9PbU6zq{@0GfxU`)LVG3?BxAypycxpjr$%TJsaTo`9n>_o^;|egYH1QUK`=kfBMM zNotm;^Dif4pt^q!i*BKM4bM9CYf`>;p%$8Cg#`joEw;5<_2?}+i@Gw!g;fn{`DifG z@-6)YnKBoCeK8CDa6xle>O8VjNrq8#_=Oa;2)p!^sZZi%qx+1MCgbF9P=RtzYv--s z*-0{bcXs5R-Pt?bBT}arpNtdKGD|>@#LW2RcFpFhbXR#97U`*MWl8;Tk{jEW|G%UA z70i`}JwRenhz07vNtI_M7y<^)nHI^kFm=HK=>&OCmFbJ z&vGst)0uU@%8Z?n*04TI`2@}~aZo+G{sB0>Ti<-0btYLWl1elrsiZzjDnaxbvNx~B z)pu%Ru}$B9V45MKqTxszQUHCym*?c^JQDcS>`&cfb2?I$uIqKJRq zTQJmF1FjJ~?+yHsjoMmp4dQuk;fY}j&ZD097XEVB0!oRP-}8;=KN+?V70Ktjg})xQ zAlWCHht?|zJJbgf0c&C-{16s810c!ZX}e3JYzk5KMS{TJTK}HW?AZE@=hLz;+F^DV zhSKESQ8=y!b)a$)TeGz{Y(@2WW-}S~v{ee+t%$r$`q(DK6@aqh#N}8T!T>`Hb|P>S zMYDz?v?5c9rV_#u250O+LyO|jL2=S%6?GX?ah6pv9m+1OwH-;{v=%T$EXH@Zm>F_8 z!~g=mZ90o=XL2IBz?*P^7X{0TaL$sX5^!os1?P_6R6KaYh|n$LP$Und#Jv&cXIQ}XnL;Y;w}n)Y z^eg7?GWY4eqG;7wU0XLEx>iKorAF*ms|=+s}L7|cDMeM{BGLq%p29Qz`=tKkY9;(`|hZ8~94FdCGR z7Dxz}XaS-&iN{U}Ww%x%V@3`&dMRw^ZP_9LZlkCrUObt!#CBL0>`wW}cgR^h(rOX) zeW6GCenMB>f>ivPfWX*a{`m+0cnq+0<+DTtgN@z?^6qP`W{ty1VI}P;E{!JAln$qw zrM=44Z5orQQ=c;OdS0vif33=&DpK-Q)??dAM>8T_MuD1$##`#qGkvTY&?sXf4!wZu zV-m>$WO%%MZ6@q?hTCnZR<+M)K4T}~3c3prF&iL3EKTMm5KH|MD^f~n{#<8^TjmUh z*>FnHU`zyVCWE`kJ>4oAwkh_AFRiCtLlJs8@WnKBEAPF#=q@=k=mN*!G*%$KHF5!F zE3_pI8IUMzl*ZL3GRjuVErm43nmz<{(xbC5TGMRv%%FF+(BR$QIkGCP4ziL!hL)nt zyRL0#U@{92e^%WRJrTl)B*43)=#YfX5hJk$<|p_h%Vu;6n%-CZoLf%oAdR z>~n&G3=*5GB1H-9J7=a($Tdcf0@A8Usf6};J88EMbYLL1IJ8cAi77{IH*r~3+d;3b zS(n-eWfV`rHHTuMBK#rsz`F!oxam(xq1Aa6fSc%(t46=Q}=|zrS+;?wk$TC z&Hc#vpFQ=V``-8HuiQ(h*4!_?=c(Vk@U|cQ!T+h-&BCbzA63t`;}^(fYZ|G<9bN3GlsMaY1@~Sao8_1If!w{p@ZRv81kzYv@n6|s7E+_NQ*toT-$&4l1>)FFT zjGVi~@8}{TOg@avtl6ZAG#i*r4Wt%l>_Joaum=qf4pAuv|3)|KkD@Z778?E*Q$}*g zE3Sse5ttyNi-4+e%s}k5f-j;Y1z0i;@Fny}qX=2|bwD1ldbkTcbV`9Lm1ay?n*E>& z`+)oL`o2DILINi|%G9L{OQKJTxQscyqin1%@~!Rj?6FzlbYA7GG6De! zsX4~$hwPNSPt#StDr0SxAmG2tp4Z&M`;+%Rqbfd;Z|r`qU(C8*h1X-;7p4Hv-^vA; zAP*x-C|DWtY;{@=d3b{?C?MepNzu`LpI zWrs3RdGC`doA*8i9RPHhzPkN&n}m6I)2?t3EbZikynDlb#}^JO6)yMg8Q4A(Y=7HV zuh+E9`6LBA2i8qz5eGQebeW=FbOv1zdlnWB6Jyr&{!lI~2+X0G!e$Wep4+0L{UZ3HX9N50=5c&?FTF(h-5RwM~fdhk`!;${mB!;0{Xo zAsj^n(0ky>goEP%;~K&{NMsWs43z=l8bhpQvK&4HZWfL>?)t=)Mc?@)c=rs-a7ZW;wTchxN*5h(16%#zR*-iWIikfHLAiWOm3`kX=O)xz z?g15a^fNhAphHXaAjkDM$VI=x+n!y5+_F~1-mUe~R)Lwf8u4wdrtvk}jxcf{GU3z{ zQGKfkGMiZ|K@91i>V)yrropV#1}Fnr8Z8sm2s7(Se=`~cAao7A!0FTaJKi;1*oJn) zm$~hYK7k5*4~)u5u$wAl=4+fB7nX)=#7=XPr%NlNy)4T1QPL;aA=37?bZt!OoHdbf zIL&XkDa#lx4JCG*DGy~9{t)CO#L(NjE$g$LLV78A&I7|1gBIhw_l`lnNg_p0k)C@h z-BQ*NDUQr=S*%EenFK7r0yWkjy)ykd(KRbC;z6!c)0W67b8=!m29BgjQaDrv2nUX< zl{P`Fj2M!CggQcZ#>v}qlxp=Gd%=FwNef-VR#1cb<7CfRs=`k2F%I#dzW{j0_|?x! zh@$s6WUak+A`j!B;yEW`71?%b;AB$v^swlX_5MibiDtb&hOb$0k2Mowy#t~e6uCf6 zL<5fPKo9Bauu)YutPzk=r5`HutlDMyl=Y2)ihB$uy^6_saxi_GTcKLS%iP3lo8p|b?oM(7?PR4|Bsa;@XwGy( zw0mv1RZ_LF{%IAWu4<#r4_gmQo-J(O@h#9Y#`00nniICJjd=pj>s!q07rxG zr}N%pD(f;-5J!eW!P$^$HCa^|R9Ngi6RVP4S~F$KjnW80nsf%W` zQ78n7;PKvb5htc`U=2(2AYhCPwZjQ${y4J-`>1Hv$(X}piMmHzp8(r&SkLl)ge4}e! z>}>PRgG_q(Y1c_ux^gTH@eov9?{Lw_(s>d*rU2R7T@Sv z7dxSwrS&VOVt&5$}&B^#i*Sgqax;Y)+=vo(hTsLRq8(r&S7j$zjzR|TV z_JnTE$2Ypx#h%p7#rQ_oy4XIf*>EYo(X}piKyMcKW5{Y2d#7&p$2Ypx#SS*#L^)eC z7~J4dFht(klpW$-VmiiLoqd@cNA|IffiDO-ZUXrEVPGD?BYrJa3$BH;=DD(O^hk4S zReASpi)ie~M*T2=LZa&rOwE%lE$u!zWyI1cUH1MTiPESHTVlB={0LibXtb&rhV~ez zCh|jWB%HKzXI)M%!g!?~}-o-P$J@y?McrlA?7L$w?9sArLI z)_3;1sw#F(0WW`oJ04uZy-lF?Y!I#nfhsT>Ya{m?X{wr$t zAF$GzL=k;}n#BGu^_aj|dKL8)0S<5#_y^@tlbZ(}7DN*@j2fbmY6=?K&4p#ViS&KH zB@_U%+8H=t$xv9po}>v1fSpvMg4sk%15hZOM(PfvDT73J4SCH2AW_TT(nP31V%3iY!!_WB#E}K;BwIobm3YSPoBEo{_Jq8 zzx!hyqh6fX@LYF4N?*+#jF;t*fKNL%=<_lTss6}37;;FkMBSnb=aBmNi^m}g=0)O> z-XwF{hg0*(ToWK~ax&AMg$Q?LB;C2VLO$6jx0Fv}!b=jE!ye)TZ1gZO#XK^_h&GsF za^-m!6H^qYNvtWcuTgsm_%30JQ9cR!vJO_@)m^isAs0ErY1owk=B@uoF3o-!l7E1y zhDBrEe)Fac*I5k1J2ok_TC#*n_4Be-76IOr#EfJ?#bhzdW>84-$2u^q+=F8t6N*r8 z?ek#GD6vpE#NFqSTsLtZkPISZz2C^^ndqsxG-}pN+?8-IAYvvmF4zx^0Lov_-7Jx9 zLYrFo5p~GjPi-4#C1#4Db+pvPFU&eBmYMjFelqcyvOd*~)kOceF7hgNzdK_Qj+p+O zMY+@aKbmdHw76ksn>nM_>M`OXJorb8#xS%K#7|u1auapuEV_xI=+{mBs<`49IYs$& z%9gFjo)jOZF;@Jt8!}ClaGnM=Xjt%59mdf6H7)*k!`b*;*C3!x8=qKGUU9yUdr8oz zU*Y7>tCMKI@o{0lf<^*WQ~fjezBwg+3IWdS`#`Z{{@6h-6)rr&jlnbP{%{?l1md(Pt%k&t z;fOK1#N-dWPr<(;r-C{OSYoM+x@=#v&hRKHA?H;|0eZxJW0|$IH_BtOu3ly(Tgj8T z7RvCmNieBu=G2WP5mfS9Q3(o}UdNZ>H{JtIMA6QZT!YgzB+O((%#UC>Zj>tFLQW;Q z>f0cPnt*2EZ)zqBj~h79XkCRUe4+pSc{BXOL19vA2nuQxC|aw5LMl!Z6ly!&S0qCK zNGpOuAd_-qpn&ZrP&B*CL=%8*7Hnq*yC^k@3ZCFyIzQTgpq~i{auT64_}HHq8GCoF z;IZV{{(`D~ei5)_b0tj}EnI;0Op}g9pX@G3SRoK84uZD>JY`yi#J_7Rm$zpeL$B6} zK$EJdH1ZEWE_&3t^iHbdX`;fZtxnBX21;!b2KF{hMT{czBBH~s$<;zzXA_j;={=P~ zf)lU0_oXmUw;Kh&}Od^XRJ)(a=In;kRDh23Z74S{qI=`zsD{!%WKjS`| z-`$<`A62%idlf&!wR*jGp1;@Mv5B{0|8hxL=-QU76$-qNd+QgRchRMcUa%b4eF?w) z3oV-M4n_3u0fzKkPr5HuIn02|yq;>jw)iT_CRZW(J;lQqvZk;)_ZHUGY$_}()3JJX zcKteUS6~~j^WAF|fX4uP1L?&%SYd)gz}+~$Dc1gmKld68cx@xx+1*x$ZNS9&G^HiM zrDoL8U|(nLK@8hF_PNNuezmX-7u47X8oeKN1Ecq2cGZ)gE@p+=1tejqCXh(|tlY-H z(dM3Fx6{^eD-9Dv+#-f}6K+TNu&8cciXsnNd#Sk z#9uaq2kv8nYd466_+j|10pvhP``tM(vMO%Rqy<1%5k>z_A4oPmvGCEX_f#IFA&Av#UIkke6)+| zfQ1O@Fq!Pm?hmvIwgbJzN2|#$jRAz3i0MPUk&-mzf44$?GQ>1wxQI6VmZ+jJ5|ndJ^)m*6WeBjP*S2LI8czzU8A0KXJLc#BXCO^pQMeSawsA_GkfFjUDEvlYVn-}&;a=W!e9u4O`8jGt|jtYc}NSVR|cubkK3Iu8=Y7AR74cu&Ot zh~+i^5kW6D3FRfD7tHaJAV`dM*$ef{)d%tw+vwT7fLi+Akn^((+{0m zdkb+*p~7PRuwKW`%d$SL&d;t>g=(S;Z+9F>vy}Q`f(s_@Y9%H}Ll19zBxtRN6Xaxi zxKvTB3L`oN*kh8&VFgCRSMh2yTui?Y{3$5DUuH?$RqyYLsy7{RJkyvvhE4a@pe2~3 z%H~|+h!{BR8NGyrn~-yqm%60>&&JW}6DjZi%vB_Wv+JfdVm_tQ&Y>PXPxq$75nW(| zbRrzo@1IK#7~RACCXJZrL>zDiiU(mE%WXIsvhHWa5aEQ_($Ws= z&x_*m3x-qF2JJiVM8FkLBh3!PXw9W6zBgbKX!eCF#^iJuE(1?D*aKO9vF-N-uUJLt087fsoE@$ZJPl-+pWA0WOslu+gv056V_@uahPZb0L2rT zPN_Shv3AmI*an}2--#`2t<{1~^_CwzC%KRFEG8r8<%wZfmIjd1J6Iq!C?lJV2K+a+ zur|O^4ne5|UV5YItz>vJJI&J*q!V*VefY?|-++tfCPtEe74@&ueo3VUl7@D|YdR*s z$gGi#R$|4V6oRIQx+cKaMs=dP5quhi{snl*maM{01vc;4M7KqP^Wsf~1RX; z9uhLrFYVP9Ey4p_Nu|lCy+T4_OZ}|aMz2(x^HLt$!WZf^9Y&*P0Th7nnWKvZZs3h% zc74~_VyPOym*9u*H#WJXCToMi&35JTr)`-7LRUk37G6tgSov-DF6VDZ5aVxh@jeu#3!4}trE9?2Eq3L4G?I*S)VBDU#vptgqFfd-`|U8ce4_jrEW69LhMhFfIG zt(`9;Tdw<5E1wh;lTZvd#N}LO((RcNdk`#1bg+z46O|Rz0#zx)2bW&l0*@*%KA4n? zAgT!pn}>dp27SPgo=xWrI47dOO-1k$9o)2yj0 zW_`$}g_e0@jo9`!C7v+5)OnN#3}~*>NPACTknvuyxyr=QvQD6SHaY?G9CkwUj|o00 z&+~OVAy@+uEWRbr@?7F?=mq?#faMahkI>pVz+G;3 z^An`P$g3#^EAS9Mo{M=~boe?hXe~V|u}vlYysp#+I;<3@q*cm6lZ{IMzwXWiKCbGz z|L?t7rIBPAjQ8b90laIsHo$mnyn$l_Hao!@Nh3>Gnh`T28z%u|<221efHZCLPeKa$ zQy?oz{{3gAiPP*|0_i6SY1$?vB@JyUq1pcliTeHB``&0I8~BHi&;Or}ef8dbcRTmo zbI&>Vocr#J2bCIgg-+B`ZDIuMs$J*lZ1{Kq9>A* z*WU6o9@v$jm;S)NS%nE(5KyvwFypQBR;fsA(*tHHeW_Q+jnZNqJ86gK3D}2Nz|JM+ zpcQO}>~_cUSk1T@1;wIx`mfK5NMqlaNG~j<7fv)X!dfv^Ba;w4elLz}vkAMdHH0f3mqJyR-? zek_zsk#sGJlX#6;7viJ_$FjhwGZtla4wE_73^sYGit6XS5RnDhfvQcs9(+EWYuZ2xhTgO)w)q7M2`=3TYu z1`Q~Ce4K&J_tOa%*6L(CgEf?yL<%OOVKa8V^yJZF$8WrWuR}-;5y_Vy@R3mHr;)cM z_<|$*hRaX{Xa$BcT6q+pRZ!Cvc-PoaD8a z5>my>0WyMX(wS3@xMQvwU$fcZ7Ia7&ms#BggKiE)(jX95Csd_b=a`Dj0*3-rl)5A0 zab&BkuvkbjlmL2y@j?vCLck>^g&piPifcgR)&xvsVfs~1o^aBy=8s>sB<-c)A4_0k z6`BgFASb?pqh zL&$NF43^{4B|`)<;fLN+ZmGCz#X&Tf6ln+n`wjT5oL;uMX>p)7=K;OMgGmc8mb&8k z0eL|%Ou81YmdqJXu%{OZgjX&z9ipuL%_NCo@k{^QpfzUSw#P+k@C;QMJa-t%XaTz- z64@7&F_{Pj3MC9W99Q(nP}v#Hib677R{>O(in|GcviE5%ULHafMOX_OdeVT zuSN~(751QBF3E-(@0Q3WW^UZBxcPD&8{rIlKwc+UN%I65mrlZfE&C@kGFpPJ5gOd4 z>Fy&2VLsgGD0H1Y2G!ovRg z##&%azxGWJJmM6wu-;N+BEx@^2X6@3uH$o-j^V@4olB}8Ydl^GcHwI@t(UR|!9zd5 zlz z2=D?b(L+Bs2)4~nI=D%2)1&wPd$EbtzhRthwk+^WIYSuhxPEpXt`fSqil zuw)iFc)yr!ciM;NHNs;X;p#?n@+47f=o8ha($7GTX+Am>GFQo?DzlpPt2i{*uc76t z?RbQR2vkFh3kZp`@8}QgU0CGoUt0kRyBZZkHJaIdaU&og898O7*62VJ&go6q{_EzQ6gV#^mP5 zoyo>3{&Mn;TT1^O4FCFOhhx3P%6QQ%x%rMSJCo0no>cmYbcnQD<`8{iZ*=Z5dhQ0ytGoQZUri;~U{18?2%_7+?4W8wP%-fUumJFloL3~nf}kM_ zmrF=nPn|j@B zCfopM9#@N&p<0zROdsK{)0R$AMqBpCh^}3ku|@WQ)X}(`xCJ)Lx-q>rEi;f|&uC2e zmE0w8Yhh4O8m^s8ujdhUadx5tYdE3631O&iQ_J?#Bmo`;^ZU766eBA7_*d77^`4(Gb@1)p`t4r z%K=`&G}#y^#0vlej^q#^!m(Vqp>h8uG@uXYK(g2(^u%X9b8pYQS!EU6M0O6e69wHo&!KWF#+1*LE z_*JLqj)j^O?JhBbiX*aV#pgp0QDeZ=t15i?P(st@O8v82R$Z<03TZ0oBVV;<2F57O zHRH**S9|^*3#0O}Ixq0l8?!K*uI2epy|Ig<=@KU&=fiXYF!s_Q4AJfBg>l$jQ8urZ zoq#eo{6=Tnd=WNJnHg^Nz!3;hXlar9mzlT(#VTPC`ritjFVbm2r^0B5!&Jb03Ds^! z#g_RJBsx<3*~}(fvLFidX{L;ES*N}cFMG2B-I#TaY(wrvl4!i&PX%&2U{XWDhLgaH z6KRJ@y@|R#snOa!Xe?N=mfcdk-m+-R*-3;&Gf9ojnZYizXzl_Q&0WBvxeHh{ImM#U z3dN$6hWAQ8hmllN(x7axX!xucR>WijAhzlN9^V~S|KmWwM$VvNV?N?o0~B2WV?i(v zO<&AI3yluTW*;dZM50MPryz$0{gz5Bv%?9A{1Y5kfPP5-_3{Ysy(DQjmVO2qn2=}) zkO1c+5nrGls2XD?79-)67@bm*I7CO{hYDtmaKrWB(JT#~Ezx@WpQWS~E~iQaPg>A6 zNaEpF7#mg517Cs_A_9>&^GBA*QjiTEc94=V#7lMW16KiN4fM#f7QUj7@`K0#pr3R10nfk6dCC=tve2<6y=pD`bW} z#%Dk}Cs~kN&kZv{zjt;3JG&|+RvTzmUU@p4-mfpfxbkf~1-rVHYo0|1@0+B}H;yS} z9Q4cs9P}zWE{B>ZO%8hVDr^j0{(56{fdn`JeER;Y+}phxvGixTH*3z=X81kkne-Qb zB*Rz>cgnL1{PE1eP6KD+R+h0ob0^!)mF7+xdM-A1vf}KJahp#i%sv9$09#-lTFnpk zXsCrQF##r_Ew<2#!%VWxid)vdicDf!Nzp|^88R9PgL>n}!ma~GxP7vsd$YU!f9Qtt zsN27=_nTw3uW$eH^Y(Sv^hq|oTjWTZoWgrP%fJ}w{qU@^rL$tInv^~Os4#NcZBeH%a!R(YcaSGK z)tWVwjrljEV~0|ob<3J@0tR+!$QmR*%pPtSllE}4c9L;Y$I%#m2*rduwG-N@4O)Vo z+RzoVsliLbIE)~YAT`ifbG;f2cWehew!GEwGbO(E$rCVb>Zvf_YsaH>USl3$$M(b1 zy+}P*FIaJDCpvRRy;;{}0K#W6g01H%+aWGy>-q1hLmWI*(V?$RcZiSA zJ^QfK*$&m&4%OKX)jey6=yDClO!IwGy5}JE>eM|~mvCo2(i1JmQ(~Q(qR5`d=|=D9(t&XuzHj&mDd>jBMKkG zn$1o9+fZaUgPFH(4xrRkmX;SnZA)02HHww`13+EU!b} zqsVJPMR(PKgN@bc2%cf&vrz-Z>JW{jo6me8Dy__oNchu?B)4QP5?b}lmdx8ZYb?-5 zLdlGJV2iQfj~w(FZfQ`m$*@By){u-~X=-5OD1L1VJP4TSk_J2rYCWJ51S(!>H|Ee` zJZ+r2j)GTh@UEWm9V3i~aw8{VxUNAG7H>|;#sdoCBHaH(_dJhsuh!%lRTF66F_Z?~ z(i7>?!e3c#ayu5m?@yQ9dAKRmi!h8VtCi$PIt4$lH=zXCU9&M2TXraK`3eHh)*Z1*;u4N?r9x@q5# zpq6gvOEIv>Bl$66>4(B5&tUhQXhF4TNzrJ&q5#PH-UaW}RY1o^c?Y?qW@FPZpTU`% zS{R$1h`g2s!{F^>RBrz8DM-6|l@CR0OlZvY&AB9k<)LHr8|EMv5S|}bN{UCZ^qbft zR{x_wDUe329jA;0)-#%S(+w3l05$!OlVN_ka09k0hlU)!@>k1^p+)4LBgKuUB0e)u zbt?}V&pz;lnuF;_KE8G*_kVpK_c1&=((vB#YO8 z_5DQ)n7#z|^sS|xX4#bf=ugPKD*cB)(?UKtJ7>Z z5Ps1BSV61=O@a8YZ%ja>_@oSv<&%P^{|7mg71B$3^Ry#c{oW zifu3De%NGlnT- zXRcvqOkEXr4?+QCgP_$(@pw~*%n*jVM9lWcRtJnQ%50C6Rgw2`!{|SGcF?O#cg$Pu zw2Nm%A3OsYzs60HJk+3JlCZA@g{~yIbWs*E2BP@pDD%Kupq1lQfO_-rza^X zfl^Tth|(^!UAv=t+QAEO~*w@SIJ7kGb)Aq0r% zdM8QqY+-@nV9=od_Ffl=Pk*o%YcDc0k!Y}Y>h>p3fC%lKk}|_YtN>Y#p#+caCJ*J| z6sk6+Zkh^i<9S+MiHb7Dz$yS>5NcFg+nHUbc+pfwDUtX|FPid1FPd_(FPef{-@a%{ zg=SwA?!QyLXi6905m-|yAP$zIr+C+ty$8m_#MGBND|o3Cby;seEEL1lhTD0K_N)i& zKlGgylkJsKp*g0%axXIGDkuO1^TZ769YT&flLpYhY~p+W?c~G;Bbubivd(2-wM{hj zWiNcAo!ZTN*^^Rspu0`>pXzh4|JYsTC=ce`^!II^a&J}ZFkl1}LdBRd-^8*JFoyZ+7WX4ym?(_3GKa=zOwiXI~{-Mn1M0OtS`2@j! z2BCSPSZJpG%xLpKrf?wNT*w|6DV7RHnu~>j<^!N(qQ7Y%KeoO#J224M*3&cC-;*8a zZfkEI$QQ>BXNqI%i>1N!txauBt)@u!#_@ciRBS2~9mlPAuAz-P3BpAfCuK(b)3f4F z1@Q|6$VmT$aPrdP0gcUIA#-^DV0JWnAXCa0_7}2;GlfAqHZrJqF2BPEO_5v z?$KbeG#z2sZO_Yj_fGUv_CTh%e{^JQq;zR^eDuhkTrLX%7bgY=ppR^!kS}CL4`+@P z^9Q#==|{F6%H~R?BjZ^}-(WXeOow*|vqub-KuF_x&_PAHQt`K-k;702?H|alA0M44 zu5W2-?QCi>bTXbP4MQYnM(Ukw8SmAE`Gku3Se)oL(_rSLBu`}-&95*H|1@;9C73^# zg9S)O$f%fA`$uv^dDE8WXq2#ku#m8bkny3q@zKl?e`IWYG&@HBGonAgkS#$W%rfSa zL8?EIgVwVHrR?D7kr{J(G4(VTAh3bv&Yq#3f%f*nuGWF>uGXP}*3Qg8N5_V?*4DP} z)`8A!SEjwArKh94d32<|kYUy_lk)=xL8ATK0nMW;qxH^3)cFL=M*L<#+$dY9 zr!Km8VlaPFxt-J0e-eZR!>oWYWOvMF%f7<#qaoPYxidRfF2;?a(cWJ2nY)cMa|S4Q zDYF0q+{vg99B%9F4QmgmV`iCh?Y|jN{UbRBueW!zxdKOkJm!8Wt0qlcd|&jYu!OLb zu#E6RX=NZ^$Qn|~O^h{<^UpP^K^ffAsrEyD`WUwl|V9e9*saBv(%*ZXfLk7Vh4xeAY!d6-lF zN}inv>Iw5?Mqz^!*@@9n$B}lSpBWiWj=lpe;QNV6iM*T|Rs^AP#C)DL1i{K_1VX`Z zh>%!{2t_l}W>mtb49hjidQ)~k3eqR?6Qy!JZ{wNjL7eA{BgNkFY{3vs9%hFiGyQ>YH?@pq zOT+m=h$UMvkGB{R>Z4oa3sNq6edm&@dZXc7mdi|#xiIo_m?O_bJxk5FInFNPqRdOd ziMZLlTopfn@HX}8rX+5&-zYkFlVADX#Z{Cm>HJ0RHTtu;*(v!{MO`EP14zoD?7$JE zI<1Mtm$G^aW_1aWv$(q6Xm|}=rOly#Aypxx8z!>3fvj_GkiLbhG^yF~&(bF*p!4^h zttU!8&5SJ;oz5EWRZe|aOISy!d?rcuJCVA>*-^&VXlE6Y7L?8uvL66m(ds6GW^H9$ zV-d!;%t}{W>G|B~5x+PwZd5@(ml=aYXHZA{iE(M#quJa6^z4=!xA6<>x;!ZRTXVw^ zWMgw?Ff-1z*qntqW~G;jJEre=3-kSw=j!?coIfa~wIu+D%m0N^l73nhe{Eew&11-} z5%jT{n5DKJLOA#=i1g-zb1p%XLwgj5oDT~b#x*OGJ;ZI=`Ax+p!Kzd{gxy-0l+j@Oe zI)vCD`dcBJVP^M_W_{`A@GmD?S8pcbi$jE{uOq0>nSp_cF_E9+bW{IjTyG<2Y-Wq+ zyGa+5dyuQrPbErEkfuo)<_Sf3S(GBDD}=c7c#!`mTt#D*c+!L&G%J(Aa8|Mu9GDoj zN^iIle&M{RKU2(hc1ZDW4;F~FInc3vj>Sa|7+yjMsW3&V=z^;+6I9Ag*Ocn0^s)3EaxKmib|PH|b)EVSGRF z(<|a*#4G!A3vn%%!~CxyUfKSg#I6j;fnn%pon=z!bfG?FS#a_F740>7R*l^ms)GBrb&FTZ zjG=jc0pZ0YPNX}Wz|Pgj=UV#gpbaS~;v)xuIh+(H_pRS{s)*V{{;+&A_Zq)SzQ2{Y zc#VD`%I#F?_3u5+s<Iut; zzlcuv?K)_&33i)QX)i_$X`WhM@st>_=gPjHv> zCyLqWtgH$k5^^E|GlNb3t~`V0zmmpOCagx@aEdU^`iLd)(KuQk^Okj`%|?Csetyw_$)9k;>iRUy=2P z0Z0l}b`;e;YwCrs8LdHP!mPO57S=Jc+^zG+jG>RJK5(dij0QfLlsnQt}AgV3FLW~Ch7L3}6SLV`>^mQ$DV=*prUp+xJR&=v?) zRYa^}lO05X`37ysob_zwA&Y#DwfQJ4%G6Q$prW3o3+j!D!sHpA7|Y}+P?5fgbhQ&0 zSN7%ehQ^K95s?gM#>cZcs6fc)e}<`ZfDttVd-+S7`Y7K``4A^b_>5#`7(XkB2Yi1= zrZ~JUUx0y4PtxaW!Z|@3(yhZf&kyRf3s&)YzYQgjnG3&w*s^8X@ljVcJUj5zId5UT z(J#ZgH_n1zGQP4u*9GxQv92?B#_=p@3TUbuv&0?LCmrQQr@t{+QQ?RYXdj@Bt7$`Y zC;l10f+Yldz4(hj2|*)$>7sgLo(jupJ)&}#1tue71%>AJkxx2nD5DGLlZgK#{&=Rq z%8!0Bv+Y_COk0lEi%KGv)7s=Xqm=KgC|?{okjr3f#e8Ij{Jo@$zlZe?LkvNZ^EaeP zmkMBFXbn`x0AD%3c1@SRGyv~nK^N4yH*C@p*-2E#IwY_nhl>d6+rHQuJ1!VGGy*O4 zAMszFE#!OsL7q!qg*uSd6|dx(+(ef4Fh`AO3Q7*hO6e<$a|d}er|#zpD+=<0L}S2% zVDdKeL!=8IVLl@*hOjIQPU{qp2kmVM#DG!p{mamv%IY80SrfBqd`Z0{<53yM*&EBL zEu=}`3e#|VWSB57N6ieE8Rz*}#3nMM=j|e|%$mbowZ;w0Y&Oe)a+S^`>FVot+$DvP zfihO_=DBDo7$kpuqF>S}BsJ%wq-&mFyd4>mjZw2HNc{$Bf^&MX!VxGUp$4**^zc&h z*>T%^wJ&g3l0}v{Tvc#l$UogZvhm0qSTnK-R?uSHx$Pzl3-tzLcY~ z{!2;UJ3P8~xNvd)@JlB~aVn(;2LsBn3j;G(dzV>bR+_7fi`%)1AB4D~-h3gCdC82* z%syy+Vv=%$t--bJT7g2u3d?Ee_&!tOj&Xfj* z?L=^%;F*k;L1mUKEMqg-gcs=`3szV@^EUEp9J|0_2cebFL|98$MYw=``dzqp&u#>} zggNThSjNu`Nrp*P8`VnEjFV(M>Tsq|uqxJAX1u9fP+I5VVeE6p8tBVBGAbU35k~%Q z%ykuYn(CU&1foUMAQZR>K*#f&MR6P+p~Gk|@F3J!HEWuYhR##zAkyN^a&Az1A-r#W zchjE!>!p#3r%3ja3sz>ft?R#eO7P7|j+3GBEPcLfo`9 za1C1Zv)n;JVgxSj8hC9lr*oqxbRpJa94bG4%0 zm+M%$ZY6sGOu>~mt*j^~#2%i;tH0`kEiEnIo&2KkJN?YLvj}JKX|K;=UH(qwxmN69 ziFQiJnxtPv{!=^CcLT{VqCUNM%g&v%yNtW*B~}9r>;50qDQ^2a!a(4{bet<`_hqzm zCPAz8Fn$yFjTP~u+^-{Swsse0^pMe}pP>Bj3Qoo_^tA$Dy>lJye}W)5!}vc1@$$ml z@cQSrJWo>B8Yg|?ON?~G^9~$e`&GstudK+4P?_m#c;UlzvemZIFjjMxHH^KHZp!dE zA!YEn%wjlitvwMZM^N_7l#@UU;~(bUuZVwy``%e`O@=W4&$yQo9LAsFzIj$$ifEYr zEAF+(sEjvM#7}2|)-)@wAr14-BfT;%BXnhc#VgZmiO;DhUo$Ix&aC*{AU69g$c4UI23^Q^O1u3Eij?Yi|Xt!?cc8#=qXdp4yvZ@FOW zw(UE1UU<>2m+rp!l1umQyX^8Sue$o0zD)nXV0L)q`h%lm<2Mv$=Gzlwyn>u2-_QY@ zGnXfCu{3e$@Qp`aKHbdPbxqB`T@6jm)3v>jnqEkm=@!@T|Lw}JZMM5Gp5w2>(NED> zJdv!bPSs3J)z;0apL^Qr^Uj!W%Pd&9Xz`Mz%a*V3%}7oKLpik`#3+Xy(WxoMwD+8I zr>4%^c)l(8`}fyCZpo9boELOp27aco172)~O6-JmZi(ji4+B$yr@pdxVCKQ&Ybo{hvSe--rI`{nYut zVgIN8fA9bBYK#knCsx%v4-ke4t90K)SWj3-SW8$#Am25}Y#Df>glh>}9#lS)8r~-x z0s6$Rnyt}gosW*xVvQWn@JzZ+cs0x6zUlZX^2w+broV6{#4hsKFW1!C(PcIQ4rYTD z0|q|KIw(}*_)`X)9keN(JoA`Z524Ece{cL-}sb`UG{6zysQ!Ms+xObYiNvvJtKYf7^W?I2w`_GN*78Q4`= zri~08F?Ju*4}UnHKWJT;8QU{$uqR!f*lVdn4)ob=n3BpzJ8vP6boDP2ZA`v!cJirb%sqX=`dX2<9b*a1Gf=b*9Ao5U4IDB(gY4usFbRcniVsCJSmvm;^sDhblO^LEXXy1x)!CNQ2wPdYsYI4?Zu>8>?m(4k1p#8FV6??5| zmw{j$%+?3%mFI;cJpsp*<>Fk)Rs2iq^<5p-So}(!X*|NKo$q!Z!^)NG{Ck7+KjRu9 z-zy0EnKE3%dir|(^8HuH3n`hr;ry3L=w`w#1Yf^bRIjUE$Hl+NziCzVs&&=ZnEc_K znk3)LLOLvOpodOG|4@TT6RON6Utm&X%s0?v|d`mR8>2 zXl-xpXx-4-+1l0G-P+UE($?D6*4EzE(YB$jv#qPGyRE0arM?zZms?vCya-JRWC-QC?i zJ%HFl^F37EL$MwnW%M$T@t0Xa(Ce=mz@F}J^jq-;h5h~>10cSj@d$Btl>1|ZTM4H` zU0}HD>$13e1(SU_dBgZI;<8tqRJMpTL^fu}28IjZ{_T|a$tRvIyAp52LH*WTZs}9I z$3&nuMf1y4p+~`<;=iE|(c-tbHkRw)y{>?L)OTA)O_*-W+uEl+;fC5NWZdFT3uOfV zHm>3+?*HSTlfLhV82{S6=ln%x{i6EuU3(S%{u$RaH8s7=7;gg1GNWhAe&Mta+1X>A zNhPkr!6U)E?PnuHPK;WpU8S4V*2E)(O8isyUdq%_=0jXXOCRPc?hw{7?Shei#Bv>8 zqdCVHOO!pRD8IVD%5GR(Z6FHad4jsmrmnhP>-d|`Rr*_4_sO(YD%))@Any|LCZP3Y zTu;gyxPY3+c>~Mn0}vMq;se+)KohiK@BPOH+$#7T4C- z)y#?3M@~EK^s4#pg6KkbQDkvqiM!NWG2f4@jjT^Kxh;`aug$&Rdzbg_=zEgC@O~Nl zmG|q&RMq=#Jo38R-q~`+m9KmK9ZUbIZq7x!e)&vO^ZD1lZ2xzU-}Z((-}tT%e*6=k z`}~*w>RXS0Z_0_zJ#94#XYV=Z?Y!`1$KOEWpMU%lpZ}{bKm7RjoM>&GN$ovn>$aU2 zUN@LMe&^fn`qGyluARG@M?0^$=GyCcsq(fv-$jwned*hefA8tqxm$M*W+#t-=%G)3 z>T8ca{hznK>UH9YMd-TeLsZ~4SS^A{{%v2FYAJy%|R?R7Wb z^1na#)vx{I)BpLCLh<&}#Gjnq)O`PgANkZ59)9%OZ{76fx3t{8;_trt<*D6!uD&Lb zoKwHD`Kce|@?Gbhzj^B&ckVqf@x?Da@|AD={r7)8<@oy>k9|9O?1JQyXngL`_ts6m zC$^&M=#t2yq#JFHc0>~#eiKj3t-g59X^G1ck?7Lusz@@DhdWldq2+d-I~y8GrbuSaa;0gjct)YVwnfrJBjFFRqDAPQ@m_UGu}cB3)HS zubnsf(d6V`$Ep{e6RD1OC$}YQ;-%E`$koxSswQt;xU_nH)voB|Yvb>^w`M`K^`7X_ zZ=Ri~iNz-Gt3UdagzK+~lX_cp@{^GzkvX+aoOkivs258lykxSGgY#lGWxKl+6C zl>c<}=iVp0jcHp4;E?jz4|H>;C9Z-ua=A|G@|2iK@=?HeUXtN4^rBx3IJ8 z@+)q6_xm6Giw%#R_UhNX;T>gS6fN%FGnl>h!yj3)G?A=M&0Emf)BC`?zVY`}U3c91 zK%)AbjYA{1zj1DU|EHe%!PWgger9U#zPG-usd?q9%kH}Sp8t98{SUnF;}3l{o~k)x zS?~Ec8Zyvsblu_wKlG*Ts7=<3f9V1KFX2 z#T#$B<+b;|`@s*Kc;x*L=JKEXqw5-95sO6EM}{J9bJOIpWs%l7OQUC2Esw2@T@bBX zGx_fLnb9+&tCAh5-CK@!Rn4zXE<9&zPh=oj)iR&cvzEl%P2JIpV$IR&L{(ywzcN}= z)fwrHEl%(`s*87awb!;Mnv&H=&%X4cwaGQ}7oWX!-h!&#G;l%fqC|CkM{;G=L~8TK zHSu#|)$vQ>Zmd2Mn|xjW@*T8va|idJEyJo*0&8!q$WT6+Fb*+$6M;> z-~R4n+wb|wUtd%8&hH;>pW`lz z*F}>@U;mou!B}miDpCK&zU@_|b0>dVT}+OjvF+uW3RhGuntb)q?U7e)o^!_Wi&wI*uPBvZ1t{ab=13c?ghKfoBYdj<8Jh_*pd$K zXx+N#V9n*#lke|dR=X}*#f*qgzV+5`MCV3oBZs5=iW?BDzb=2@W9z&J z`qnT1WnYu?YrpdyQ+=Jka=+8*RyTB=S^J%?_ta&2nit;F)3P+P<44Qy*|n)7bMe#H z-*d^He8Z)8J#^2d&cm6#*{|HQ*ZF3{KIgITT=xF&X0CYh@rJ7&dE%a{eCMgFo_24! zn#E$mS&xF^@z33nYB{6c&BEP0&yBvsUB2X+RBu(4yD;ij!3<(+Bj+a9EOh-Y3Ph7| zu|&1E%TF7}Z6z`n?fxo`FspH}Ohom`Y^inP!-&s*tk0rMWGeIAIF>sy^OAkMBP85e#g5wvMtpbeTCaOXEpt- zjdE!O2dUWzgBo+HT<<50JQU&HL3>e`j|RofNX5NK69`9fBKM{90fky# z9;X3t4z;N%*I{%!Vlmyh@i`6x&T-F=Ucz&y$ywepLU#Z-f9!CYzfl+q`T=FhB&(Ezq0=P4B;-q;g0(M E0{xx;lK=n! literal 161782 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 diff --git a/tests/ibc-hooks/bytecode/echo.wasm b/tests/ibc-hooks/bytecode/echo.wasm index fc51d82f64b6593e84d82724790e362af3cecb27..27ef2a31e0f754b376ed75c23abab182517a41c3 100644 GIT binary patch delta 58327 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 vU>7h$rF delta 52813 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 diff --git a/tests/ibc-hooks/testutils/contracts/counter/src/contract.rs b/tests/ibc-hooks/testutils/contracts/counter/src/contract.rs index 259d3634924..e54e1506298 100644 --- a/tests/ibc-hooks/testutils/contracts/counter/src/contract.rs +++ b/tests/ibc-hooks/testutils/contracts/counter/src/contract.rs @@ -366,12 +366,12 @@ mod tests { // No acks query(deps.as_ref(), env.clone(), get_msg.clone()).unwrap_err(); - let msg = SudoMsg::ReceiveAck { + let msg = SudoMsg::IBCLifecycleComplete(IBCLifecycleComplete::IBCAck { channel: format!("channel-0"), sequence: 1, ack: String::new(), success: true, - }; + }); let _res = sudo(deps.as_mut(), env.clone(), msg).unwrap(); // should increase counter by 1 @@ -379,12 +379,12 @@ mod tests { let value: GetCountResponse = from_binary(&res).unwrap(); assert_eq!(1, value.count); - let msg = SudoMsg::ReceiveAck { + let msg = SudoMsg::IBCLifecycleComplete(IBCLifecycleComplete::IBCAck { channel: format!("channel-0"), sequence: 1, ack: String::new(), success: true, - }; + }); let _res = sudo(deps.as_mut(), env.clone(), msg).unwrap(); // should increase counter by 1 diff --git a/tests/ibc-hooks/testutils/contracts/echo/src/ibc.rs b/tests/ibc-hooks/testutils/contracts/echo/src/ibc.rs index 401770a4059..afea3c2a040 100644 --- a/tests/ibc-hooks/testutils/contracts/echo/src/ibc.rs +++ b/tests/ibc-hooks/testutils/contracts/echo/src/ibc.rs @@ -56,8 +56,23 @@ pub struct ContractAck { pub ibc_ack: String, } + #[cw_serde] pub struct IBCAckResponse { pub packet: Packet, pub contract_ack: ContractAck, } + +#[cw_serde] +pub struct IBCAckError { + pub packet: Packet, + pub contract_error: String, +} + +#[cw_serde] +#[serde(tag = "type", content = "content")] +pub enum IBCAck { + AckResponse(IBCAckResponse), + AckError(IBCAckError), +} + diff --git a/tests/ibc-hooks/testutils/contracts/echo/src/lib.rs b/tests/ibc-hooks/testutils/contracts/echo/src/lib.rs index 463d4a4f4bd..c83702f04d0 100644 --- a/tests/ibc-hooks/testutils/contracts/echo/src/lib.rs +++ b/tests/ibc-hooks/testutils/contracts/echo/src/lib.rs @@ -4,7 +4,7 @@ use cosmwasm_schema::cw_serde; #[cfg(not(feature = "library"))] use cosmwasm_std::entry_point; use cosmwasm_std::{to_binary, DepsMut, Env, MessageInfo, Response, StdError}; -use ibc::{ContractAck, IBCAckResponse, IBCAsyncOptions, OnRecvPacketAsyncResponse, Packet}; +use ibc::{ContractAck, IBCAck, IBCAckResponse, IBCAckError, IBCAsyncOptions, OnRecvPacketAsyncResponse, Packet}; use osmosis_std_derive::CosmwasmExt; use state::INFLIGHT_PACKETS; @@ -24,6 +24,7 @@ pub enum ExecuteMsg { ForceEmitIBCAck { packet: Packet, channel: String, + success: bool, }, } @@ -89,11 +90,11 @@ pub fn execute( Ok(Response::default()) } } - ExecuteMsg::ForceEmitIBCAck { packet, channel } => { + ExecuteMsg::ForceEmitIBCAck { packet, channel, success } => { INFLIGHT_PACKETS.save( deps.storage, (&packet.destination_channel, packet.sequence), - &packet, + &(packet.clone(), success), )?; let msg = MsgEmitIBCAck { sender: env.contract.address.to_string(), @@ -111,12 +112,21 @@ pub fn sudo(deps: DepsMut, _env: Env, msg: SudoMsg) -> Result Ok(Response::new().set_data(to_binary(&IBCAckResponse { - packet: INFLIGHT_PACKETS.load(deps.storage, (&source_channel, packet_sequence))?, - contract_ack: ContractAck { - contract_result: base64::encode("success"), - ibc_ack: base64::encode("ack"), - }, - })?)), + }) => { + let (packet, success) = INFLIGHT_PACKETS.load(deps.storage, (&source_channel, packet_sequence))?; + let data = match success { + true => to_binary(&IBCAck::AckResponse(IBCAckResponse { + packet, + contract_ack: ContractAck { + contract_result: base64::encode("success"), + ibc_ack: base64::encode("ack"), + }, + }))?, + false => to_binary(&IBCAck::AckError(IBCAckError { + packet, + contract_error: "forced error".to_string(), + }))? + }; + Ok(Response::new().set_data(data))}, } } diff --git a/tests/ibc-hooks/testutils/contracts/echo/src/state.rs b/tests/ibc-hooks/testutils/contracts/echo/src/state.rs index 25c9c63cf51..5bdb309a683 100644 --- a/tests/ibc-hooks/testutils/contracts/echo/src/state.rs +++ b/tests/ibc-hooks/testutils/contracts/echo/src/state.rs @@ -3,4 +3,4 @@ use cw_storage_plus::Map; use crate::ibc; // (channel, sequence) -> packet -pub const INFLIGHT_PACKETS: Map<(&str, u64), ibc::Packet> = Map::new("inflight"); +pub const INFLIGHT_PACKETS: Map<(&str, u64), (ibc::Packet, bool)> = Map::new("inflight"); diff --git a/x/ibc-hooks/keeper/keeper.go b/x/ibc-hooks/keeper/keeper.go index 5e00020b9cc..bca8036cd51 100644 --- a/x/ibc-hooks/keeper/keeper.go +++ b/x/ibc-hooks/keeper/keeper.go @@ -7,6 +7,8 @@ import ( "github.com/cosmos/cosmos-sdk/types/address" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" channeltypes "github.com/cosmos/ibc-go/v4/modules/core/04-channel/types" + "github.com/cosmos/ibc-go/v4/modules/core/exported" + "github.com/osmosis-labs/osmosis/osmoutils" "github.com/tendermint/tendermint/libs/log" "github.com/osmosis-labs/osmosis/x/ibc-hooks/types" @@ -133,26 +135,37 @@ func (k Keeper) EmitIBCAck(ctx sdk.Context, sender, channel string, packetSequen return nil, sdkerrors.Wrap(err, "could not execute contract") } - var ack types.IBCAckResponse - err = json.Unmarshal(bz, &ack) + ack, err := types.UnmarshalIBCAck(bz) if err != nil { - return nil, sdkerrors.Wrap(err, "could not unmarshal ack") - } + return nil, sdkerrors.Wrap(err, "could not unmarshal into IBCAckResponse or IBCAckError") + } var newAck channeltypes.Acknowledgement - jsonAck, err := json.Marshal(ack) - if err != nil { - return nil, sdkerrors.Wrap(err, "could not marshal acknowledgement") - } else { + var packet exported.PacketI + + switch ack.Type { + case "ack_response": + jsonAck, err := json.Marshal(ack.AckResponse) + if err != nil { + return nil, sdkerrors.Wrap(err, "could not marshal acknowledgement") + } + packet = ack.AckResponse.Packet newAck = channeltypes.NewResultAcknowledgement(jsonAck) + case "ack_error": + packet = ack.AckError.Packet + newAck = osmoutils.NewEmitErrorAcknowledgement(ctx, types.ErrAckFromContract, ack.AckError.ContractError) + default: + return nil, sdkerrors.Wrap(err, "could not unmarshal into IBCAckResponse or IBCAckError") } - // ToDo: handle error acks here! - - err = k.channelKeeper.WriteAcknowledgement(ctx, cap, ack.Packet, newAck) + err = k.channelKeeper.WriteAcknowledgement(ctx, cap, packet, newAck) if err != nil { return nil, sdkerrors.Wrap(err, "could not write acknowledgement") } - return jsonAck, nil + response, err := json.Marshal(newAck) + if err != nil { + return nil, sdkerrors.Wrap(err, "could not marshal acknowledgement") + } + return response, nil } diff --git a/x/ibc-hooks/types/errors.go b/x/ibc-hooks/types/errors.go index 717e33bddd4..e584241af48 100644 --- a/x/ibc-hooks/types/errors.go +++ b/x/ibc-hooks/types/errors.go @@ -8,10 +8,11 @@ var ( ErrBadMetadataFormatMsg = "wasm metadata not properly formatted for: '%v'. %s" ErrBadExecutionMsg = "cannot execute contract: %v" - ErrMsgValidation = errorsmod.Register("wasm-hooks", 2, "error in wasmhook message validation") - ErrMarshaling = errorsmod.Register("wasm-hooks", 3, "cannot marshal the ICS20 packet") - ErrInvalidPacket = errorsmod.Register("wasm-hooks", 4, "invalid packet data") - ErrBadResponse = errorsmod.Register("wasm-hooks", 5, "cannot create response") - ErrWasmError = errorsmod.Register("wasm-hooks", 6, "wasm error") - ErrBadSender = errorsmod.Register("wasm-hooks", 7, "bad sender") + ErrMsgValidation = errorsmod.Register("wasm-hooks", 2, "error in wasmhook message validation") + ErrMarshaling = errorsmod.Register("wasm-hooks", 3, "cannot marshal the ICS20 packet") + ErrInvalidPacket = errorsmod.Register("wasm-hooks", 4, "invalid packet data") + ErrBadResponse = errorsmod.Register("wasm-hooks", 5, "cannot create response") + ErrWasmError = errorsmod.Register("wasm-hooks", 6, "wasm error") + ErrBadSender = errorsmod.Register("wasm-hooks", 7, "bad sender") + ErrAckFromContract = errorsmod.Register("wasm-hooks", 8, "contract returned error ack") ) diff --git a/x/ibc-hooks/types/types.go b/x/ibc-hooks/types/types.go index 65613470186..0dfaa74c1fc 100644 --- a/x/ibc-hooks/types/types.go +++ b/x/ibc-hooks/types/types.go @@ -1,6 +1,9 @@ package types -import channeltypes "github.com/cosmos/ibc-go/v4/modules/core/04-channel/types" +import ( + "encoding/json" + channeltypes "github.com/cosmos/ibc-go/v4/modules/core/04-channel/types" +) // Async: The following types represent the response sent by a contract on OnRecvPacket when it wants the ack to be async @@ -40,3 +43,41 @@ type IBCAckResponse struct { Packet channeltypes.Packet `json:"packet"` ContractAck ContractAck `json:"contract_ack"` } + +// IBCAckError is the error that a contract returns from the sudo() call on RequestAck +type IBCAckError struct { + Packet channeltypes.Packet `json:"packet"` + ContractError string `json:"contract_error"` +} + +type IBCAck struct { + Type string `json:"type"` + Content json.RawMessage `json:"content"` + // Note: These two fields have to be pointers so that they can be null + // If they are not pointers, they will be empty structs when null, + // which will cause issues with json.Unmarshal. + AckResponse *IBCAckResponse `json:"response,omitempty"` + AckError *IBCAckError `json:"error,omitempty"` +} + +func UnmarshalIBCAck(bz []byte) (*IBCAck, error) { + var ack IBCAck + if err := json.Unmarshal(bz, &ack); err != nil { + return nil, err + } + + switch ack.Type { + case "ack_response": + ack.AckResponse = &IBCAckResponse{} + if err := json.Unmarshal(ack.Content, ack.AckResponse); err != nil { + return nil, err + } + case "ack_error": + ack.AckError = &IBCAckError{} + if err := json.Unmarshal(ack.Content, ack.AckError); err != nil { + return nil, err + } + } + + return &ack, nil +} From 80e698f15a8e2840caf8ffa908099bef974545ef Mon Sep 17 00:00:00 2001 From: Nicolas Lara Date: Wed, 7 Jun 2023 13:07:33 +0200 Subject: [PATCH 14/31] make protos --- x/ibc-hooks/types/tx.pb.go | 44 +++++++++++++++++++------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/x/ibc-hooks/types/tx.pb.go b/x/ibc-hooks/types/tx.pb.go index b42f89f411c..a8ae462fff5 100644 --- a/x/ibc-hooks/types/tx.pb.go +++ b/x/ibc-hooks/types/tx.pb.go @@ -148,30 +148,30 @@ func init() { func init() { proto.RegisterFile("osmosis/ibc-hooks/tx.proto", fileDescriptor_93268c51ed820a58) } var fileDescriptor_93268c51ed820a58 = []byte{ - // 366 bytes of a gzipped FileDescriptorProto + // 367 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x92, 0xcf, 0x4a, 0x2b, 0x31, 0x14, 0xc6, 0x9b, 0xdb, 0x4b, 0xcb, 0x0d, 0xb4, 0xf7, 0xde, 0x41, 0xa5, 0xcc, 0x62, 0xa6, 0x64, - 0x63, 0x45, 0x3b, 0x83, 0x4a, 0x37, 0xee, 0x3a, 0xc5, 0x85, 0x8b, 0x22, 0x44, 0x70, 0x21, 0x48, - 0x99, 0xc4, 0x30, 0x0d, 0xf3, 0x27, 0xe3, 0x24, 0x95, 0xf6, 0x11, 0xdc, 0xf9, 0x22, 0xbe, 0x87, - 0xcb, 0x2e, 0x5d, 0x15, 0x69, 0xdf, 0xa0, 0x4f, 0x20, 0x9d, 0xc9, 0x40, 0xdb, 0x8d, 0xbb, 0xe4, - 0xfb, 0x7e, 0x27, 0xf9, 0xce, 0x49, 0xa0, 0x29, 0x64, 0x2c, 0x24, 0x97, 0x2e, 0x27, 0xb4, 0x3b, - 0x16, 0x22, 0x94, 0xae, 0x9a, 0x3a, 0x69, 0x26, 0x94, 0x30, 0xfe, 0x69, 0xcf, 0xe1, 0x84, 0xe6, - 0x96, 0x79, 0x10, 0x88, 0x40, 0xe4, 0xa6, 0xbb, 0x59, 0x15, 0x1c, 0x7a, 0x07, 0xb0, 0x31, 0x94, - 0xc1, 0x75, 0xcc, 0xd5, 0x8d, 0x37, 0xe8, 0xd3, 0xd0, 0x38, 0x81, 0x35, 0xc9, 0x92, 0x27, 0x96, - 0xb5, 0x40, 0x1b, 0x74, 0xfe, 0x78, 0xff, 0xd7, 0x0b, 0xbb, 0x31, 0xf3, 0xe3, 0xe8, 0x0a, 0x15, - 0x3a, 0xc2, 0x1a, 0x30, 0x06, 0xf0, 0x6f, 0xea, 0xd3, 0x90, 0xa9, 0x91, 0x64, 0xcf, 0x13, 0x96, - 0x50, 0xd6, 0xfa, 0xd5, 0x06, 0x9d, 0xdf, 0x9e, 0xb9, 0x5e, 0xd8, 0x47, 0x45, 0xcd, 0x1e, 0x80, - 0x70, 0xb3, 0x50, 0xee, 0xb4, 0x60, 0x9c, 0xc1, 0x3a, 0x1d, 0xfb, 0x49, 0xc2, 0xa2, 0x56, 0x35, - 0xbf, 0xd0, 0x58, 0x2f, 0xec, 0x66, 0x51, 0xac, 0x0d, 0x84, 0x4b, 0x04, 0xbd, 0x02, 0x78, 0xb8, - 0x93, 0x17, 0x33, 0x99, 0x8a, 0x44, 0xb2, 0x4d, 0x18, 0x2a, 0x12, 0x95, 0xf9, 0x54, 0x8d, 0x32, - 0x26, 0x27, 0x91, 0xd2, 0x0d, 0x6c, 0x85, 0xd9, 0x03, 0x10, 0x6e, 0x96, 0x0a, 0xce, 0x05, 0xe3, - 0x14, 0xd6, 0x39, 0xa1, 0x23, 0x9f, 0x86, 0x79, 0x27, 0x3b, 0x61, 0xb4, 0x81, 0x70, 0x8d, 0x13, - 0xda, 0xa7, 0xe1, 0xc5, 0x23, 0xac, 0x0e, 0x65, 0x60, 0xdc, 0x43, 0xb8, 0x35, 0x3e, 0xdb, 0xd9, - 0x9f, 0xbc, 0xb3, 0x93, 0xd7, 0x3c, 0xfe, 0x01, 0x28, 0x1b, 0xf2, 0x6e, 0x3f, 0x96, 0x16, 0x98, - 0x2f, 0x2d, 0xf0, 0xb5, 0xb4, 0xc0, 0xdb, 0xca, 0xaa, 0xcc, 0x57, 0x56, 0xe5, 0x73, 0x65, 0x55, - 0x1e, 0x7a, 0x01, 0x57, 0xe3, 0x09, 0x71, 0xa8, 0x88, 0x5d, 0x7d, 0x58, 0x37, 0xf2, 0x89, 0x2c, - 0x37, 0xee, 0xcb, 0x79, 0xcf, 0x9d, 0x6e, 0x7f, 0x8b, 0x59, 0xca, 0x24, 0xa9, 0xe5, 0x4f, 0x7e, - 0xf9, 0x1d, 0x00, 0x00, 0xff, 0xff, 0xee, 0xdd, 0x26, 0xd3, 0x38, 0x02, 0x00, 0x00, + 0x63, 0x45, 0x3b, 0x83, 0x8a, 0x2e, 0xdc, 0x75, 0x8a, 0x0b, 0x17, 0x45, 0x88, 0xe0, 0x42, 0x90, + 0x32, 0x89, 0x61, 0x1a, 0xe6, 0x4f, 0xc6, 0x49, 0x2a, 0xed, 0x23, 0xb8, 0xf3, 0x45, 0x7c, 0x0f, + 0x97, 0x5d, 0xba, 0x2a, 0xd2, 0xbe, 0x41, 0x9f, 0x40, 0x3a, 0x93, 0x81, 0xb6, 0x1b, 0x77, 0xc9, + 0xf7, 0xfd, 0x4e, 0xf2, 0x9d, 0x93, 0x40, 0x53, 0xc8, 0x58, 0x48, 0x2e, 0x5d, 0x4e, 0x68, 0x77, + 0x24, 0x44, 0x28, 0x5d, 0x35, 0x71, 0xd2, 0x4c, 0x28, 0x61, 0xfc, 0xd3, 0x9e, 0xc3, 0x09, 0xcd, + 0x2d, 0x73, 0x2f, 0x10, 0x81, 0xc8, 0x4d, 0x77, 0xbd, 0x2a, 0x38, 0xf4, 0x0e, 0x60, 0x63, 0x20, + 0x83, 0xeb, 0x98, 0xab, 0x1b, 0xaf, 0xdf, 0xa3, 0xa1, 0x71, 0x04, 0x6b, 0x92, 0x25, 0x4f, 0x2c, + 0x6b, 0x81, 0x36, 0xe8, 0xfc, 0xf1, 0xfe, 0xaf, 0xe6, 0x76, 0x63, 0xea, 0xc7, 0xd1, 0x15, 0x2a, + 0x74, 0x84, 0x35, 0x60, 0xf4, 0xe1, 0xdf, 0xd4, 0xa7, 0x21, 0x53, 0x43, 0xc9, 0x9e, 0xc7, 0x2c, + 0xa1, 0xac, 0xf5, 0xab, 0x0d, 0x3a, 0xbf, 0x3d, 0x73, 0x35, 0xb7, 0x0f, 0x8a, 0x9a, 0x1d, 0x00, + 0xe1, 0x66, 0xa1, 0xdc, 0x69, 0xc1, 0x38, 0x81, 0x75, 0x3a, 0xf2, 0x93, 0x84, 0x45, 0xad, 0x6a, + 0x7e, 0xa1, 0xb1, 0x9a, 0xdb, 0xcd, 0xa2, 0x58, 0x1b, 0x08, 0x97, 0x08, 0x7a, 0x05, 0x70, 0x7f, + 0x2b, 0x2f, 0x66, 0x32, 0x15, 0x89, 0x64, 0xeb, 0x30, 0x54, 0x24, 0x2a, 0xf3, 0xa9, 0x1a, 0x66, + 0x4c, 0x8e, 0x23, 0xa5, 0x1b, 0xd8, 0x08, 0xb3, 0x03, 0x20, 0xdc, 0x2c, 0x15, 0x9c, 0x0b, 0xc6, + 0x31, 0xac, 0x73, 0x42, 0x87, 0x3e, 0x0d, 0xf3, 0x4e, 0xb6, 0xc2, 0x68, 0x03, 0xe1, 0x1a, 0x27, + 0xb4, 0x47, 0xc3, 0xb3, 0x47, 0x58, 0x1d, 0xc8, 0xc0, 0xb8, 0x87, 0x70, 0x63, 0x7c, 0xb6, 0xb3, + 0x3b, 0x79, 0x67, 0x2b, 0xaf, 0x79, 0xf8, 0x03, 0x50, 0x36, 0xe4, 0xdd, 0x7e, 0x2c, 0x2c, 0x30, + 0x5b, 0x58, 0xe0, 0x6b, 0x61, 0x81, 0xb7, 0xa5, 0x55, 0x99, 0x2d, 0xad, 0xca, 0xe7, 0xd2, 0xaa, + 0x3c, 0x5c, 0x04, 0x5c, 0x8d, 0xc6, 0xc4, 0xa1, 0x22, 0x76, 0xf5, 0x61, 0xdd, 0xc8, 0x27, 0xb2, + 0xdc, 0xb8, 0x2f, 0xa7, 0x97, 0xee, 0x64, 0xf3, 0x5b, 0x4c, 0x53, 0x26, 0x49, 0x2d, 0x7f, 0xf2, + 0xf3, 0xef, 0x00, 0x00, 0x00, 0xff, 0xff, 0x2d, 0xf0, 0xb2, 0x60, 0x38, 0x02, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. From ab35895896d9a23815669e1c428f1c8819453a00 Mon Sep 17 00:00:00 2001 From: Nicolas Lara Date: Wed, 7 Jun 2023 14:15:10 +0200 Subject: [PATCH 15/31] better readme --- .../testutils/contracts/echo/src/ibc.rs | 8 ------ x/ibc-hooks/README.md | 26 ++++++++++++------- 2 files changed, 16 insertions(+), 18 deletions(-) diff --git a/tests/ibc-hooks/testutils/contracts/echo/src/ibc.rs b/tests/ibc-hooks/testutils/contracts/echo/src/ibc.rs index afea3c2a040..4b4a2f13b1d 100644 --- a/tests/ibc-hooks/testutils/contracts/echo/src/ibc.rs +++ b/tests/ibc-hooks/testutils/contracts/echo/src/ibc.rs @@ -11,14 +11,6 @@ pub struct Height { revision_height: Option, } -// #[cw_serde] -// pub struct FungibleTokenData { -// pub denom: String, -// amount: Uint256, -// sender: String, -// receiver: String, -// } - // An IBC packet #[cw_serde] pub struct Packet { diff --git a/x/ibc-hooks/README.md b/x/ibc-hooks/README.md index 5fd006f8820..22e30a7de69 100644 --- a/x/ibc-hooks/README.md +++ b/x/ibc-hooks/README.md @@ -279,24 +279,30 @@ pub enum SudoMsg { and that sudo call should return an `IBCAckResponse`: ```rust + #[cw_serde] pub struct IBCAckResponse { pub packet: Packet, pub contract_ack: ContractAck, } -``` - ---- -TODO: I think this is overcomplicated and I can't remember why I wrote it like this. - -I think the idea was that the message could be sent by anyone and the sudo message then is only sent to the proper -contract, but since we only allow the contract to send the message, we could just include the packet and response -and have the chain verify and write the ack directly instead of doing the sudo round trip. +#[cw_serde] +pub struct IBCAckError { + pub packet: Packet, + pub contract_error: String, +} -Alternatively, we keep the sudo message but allow anyone to call MsgEmitIBCAck. +#[cw_serde] +#[serde(tag = "type", content = "content")] +pub enum IBCAck { + AckResponse(IBCAckResponse), + AckError(IBCAckError), +} +``` -Feedback? +Note: the sudo call is required to potentially allow anyone to send the MsgEmitIBCAck message. For now, however, +this is artificially limited so that the message can only be send by the same contract. This could be expanded in +the future if needed. # Testing strategy From bfc1da30539281bf03bb392657bf4fcc09239ea7 Mon Sep 17 00:00:00 2001 From: Nicolas Lara Date: Fri, 30 Jun 2023 14:43:21 +0200 Subject: [PATCH 16/31] cleanup rust structs --- tests/ibc-hooks/bytecode/echo.wasm | Bin 165377 -> 165354 bytes .../testutils/contracts/echo/src/ibc.rs | 22 +++++++----------- .../testutils/contracts/echo/src/lib.rs | 10 ++++---- 3 files changed, 13 insertions(+), 19 deletions(-) diff --git a/tests/ibc-hooks/bytecode/echo.wasm b/tests/ibc-hooks/bytecode/echo.wasm index 27ef2a31e0f754b376ed75c23abab182517a41c3..f1bb1bfbaf18d6515a8e6ffd088c7c80762bbc45 100644 GIT binary patch delta 21705 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 delta 21666 zcmcJ13w%`7wf9+jW|9d>;E)hV2#+(v!|(_oNO(VX6a^JufJH?S0g-^bj26^7L8FZl zYc$avHCF7!n%bz*P$$}`(PEpnRI!aTy`>s8D%GgbMvXO;@4xmwXEH=;+wa~hzhs@Y z_G|6++H0?K;s?9>>@4k5JH*$g^qv>3?mzBK1cj=?8U} zPyR`W?k%^Mj`WZ5S?82bUph-Xd2jjEOE-##?yY-gX)&cedT*nZV_A8Ymb_jv7&`!#2+ zb=}n|0Xk5g^!WIsG7Oa=S@gs5xsOjzYy4razP05gkMBv}-J4wY!@7A-cU&EXN0h?JdvV8y?uZ#m_DGl|T6O zhPvnXJ~@&etK0IYT>;u%-u=cT+Fh6X=I{NYqq3aZ(y6^Xqir&EmM?4@hUax{GK-Bx zCg^1nk|F!D1Q?o=2pznLp6zv=ZPR#kUG87Y2t%I#;7P`|et5_yO7AN_`;&p$mCPvF z(^Du}%op<=zf3ySKOehBd(kHYsj^&sav^vA+b37{DK)#wP6?Ku_3rSxTRZ;VS5!S& ze)G|q3BQ1TT?a~(c7be&$6-Eu?sj%W~}J`4|tP%^`25lZ2nEh01uGq(5&!k9Tn)KYjz4nNeBUBT=g zwwUuOJmy+gNZPurp?7MkF z?wnxHgEnJbjZRI&eVT1E#i?wb=v5;^0cN&Vgv0qx$s?fzC;Ujrr+JW>t>7>L916A& zaCs@XWWlL!!<{wL`Z;@wHOqR&7vtUKL-ufSTB=Vo98AV^ajeRJpH*ft6lNVT(|Mxa z2VFYhX`;dB9K$)*fY4pWnd#+mqD@3&u62R@+JXUSmOyb?I-tjtLrA&SQq0i=9E+V3 z4nhKwLaE%a(4EW*Ss7A52Yx-{q7Zs)4M7%aj7^gwiE=z!SfV^)oti4(phszIDoHEk zlSvqq#y$%Y6TpXUNI@f-`5PQwkyo1^$2!J;?t{`+09fCjm#;C zO_S3zjkL6CbFDFYtfv)s=`L7*(7qpQ=ZInv@-r+Fp+tt=#M{deUF4defLO&g@Qdm755N)Emu0IWn_|V<$y&yHf;`H@& zPi5oE$P-%tXr@(|5=fTm5SE?n1VTPu+p)rauz_~)?oFj#zDqj_wjzrKAK#&V?k=z^ zS!77QyU42Pu=%uZ}hY_Zx`;EXU)dJi6btOSIAJo@z` zf`PBnmofCYR(_N5? zGaPC|{~WP}Eg$|2WTJI7%lEs|F5H&Pjxol!ovk6)Dh&BkI0oTqLF!rV={n*ONqUQH zrf@M6is4F$m{6OqW89S^0*`fKE}NL*OO~mjL>Q`2uMD72gejNXLY;&%# z;UjXh`f&C-@N7IfzFF3jU_jP^9}R#=){1&*dD?eGtk#$=q5rKD?;YG#qiGd5wwSD&9mP1hK$p8MXY1I zb_+YLR(p=P-b9-1e6Z$-!jJ`>@+pD2aE`e8g@9O47POO!ESXOdDAgFb4l}WggbiHC z`kstLR)T`mATDiTeQ}af2HTO?KqDa1a$h~;u(&Xbx*m6*`dg9w9>vnK43k)PDVfmM zjjdu?9|uY!2FzIRn+AW;6LJ8?2zz2mpX3w{;StYQk=F=TzDXrgkc~oz-Vx1DI{X20 zH+@>_U^b#h{r+!LKRmYv{uWq(py{M8*tQM+Xu%&Ru&|5-!eJyXF!peMup~4RWXOu+ zJ#1bx#cESSGvPQaVWeNau*JuxW67c$wr&d{76cx1e2?Wjw-kp)F#id8;2IE2A{6WJ zQ4PovkRO&JSa9@)(b>azzA~Rog>i7Z4(NzeG3AwL3RK9Hh|Vw(@6i=H^g6Nf%6!uh z`9bfkJgjmY<#7;U<>~YB-_acg*b^g8A6S2qj%Fzw*pj`#wwKtCI7Rg+dk7a8Ckv?S z3os()51R`Q^*EP@L1h!e2E)TVD(|Nf`)TF=o$&vToqTn)*k;>-?sHKg+kjQaFb)Mc z7$_zf*`z5*$-Sv%ho&6nlvz*b;E$HK+K7j_u7;4o7|vXN8)Y4wG(;oC9`m%N2x9Hlsp`KDE~tI^7}aJu1K z{9G4o9Dj%pBcDBCJ|` z&|z)|?K-6T#eDpWNZlh-M)=6H2IFdpoID^RJT5DoU~=*V`4{BmehEpZ(qNgGg7D%l zWAieY5NgP^Y<+OjV1Dk8U=m0UrO9+ui8ycPDX;*9;^#5>oDH`4!{K~!UMe{eYohfo zCXw&^3vw+>pO1_l_Om62!gy@cEeM>fDu1%x)B)Hsau_XJJo;EimgApg{SHPTUj@nU z9*f`|5(hP(Z=-_4s>LawCA)Zuh`!8Pa{dNTiUOYdV74*74*xXYB#;ejp>(Dl_9J{^ zn{ED(Z5Rp-VEO?+;wcy`3E-v+SQ=mpMZ^n)G8k3_LVXxk1|T26sz7KU!^rMH2pr{z zJpouYV09ogh+$12l)|t!fCLzDZy=P(us#s#%djDUvl9z925@!OLJWn#D-sl~7YZf9 zU;__71;k1qE~SO~q9%n$pq4 z8HTH3ECEmR>x2zAIxzP-WRYwA5jsKo1EXXMVBI3?ZuW<8)?nyyH5!Q1XdtFh_90i3 zh zvWjpsw>ScKLrf0RX#`7{ah~X8h=|<55ScuJuI1P>t^EuK7=va9(6MhMvX?k}f_qpz-#Z|m z{la)clVDGPA^X@cQBU$2L#^@|!>#lgL$2_Jv|*R|jG>qMjNzB~j3X5LBE~g}e8yF} zxoCt5yM%G2PQGme@8F^m7(sDqBwJ9EzaX3l2z`30l#QUJfd;L|Xtkihmt}1%uh1%Q zL42sk#Eum~hKRsj4TMh+{6>7W6-2?6ESyrD;PTdAfHo#t&uIa$$c#xhaFXYW_gLvd z&L)pY#ZwAP9ER%H+pwR03*aezIfoF*u!(QVoSA`-U>7H-xt`y+u9VH*OG7AVF@Wb?Js^d>9Cwmf7@b<}R7buWKj8dyL3Tb#0zD@lOdzG*9 zDUF39<}`t6l|d{mXku{{;TZ{&@qdQw{|wpx8M6N~WdCQ#{?Cy8pCS7{L-v1$?Eehe z{do;`e}?{3;s5-={?Cy8pCS7{L-v1$?Eef$!f<)}Iid~8i{)e+sj8tPDGXhr>Wj=1 z))Pw(Em;j3tGg$Kgg=1B2?K-}6Akv=gdDCC%fQk2o{V{{f-uf77A*>Y_Ps)%`?c5# z!YVw_%K-UM4M*S#-fUbZ#HuE1gG_nOO3cn@Y&~S3;7*4F2d7brmyHFW6l7a(pziIy z^zq4qJ*9GUbYLpPY)mOzjtTJaB{$^v1b8>%gPRy<9eNO$i0w!=_zLn%k;66W+b=lO ziJF_m;n;EW57tg2_O9=cECWt+jA4eLk_aD!xb>Wt%Hlrc*J&*ddf8$gK}8uHXP_3a z;6egV(yi}hh!RLs^rKNJ=iA7EHN99ry7Y=3dRaVucciDGD!!qnhmLy+<}?!_uRxWR zd8#+19Qd1V=DLU__xTDCYV>){FAzLi3BwXu^sp-YHZ~Q8TtJJMmkzG+g<+~7@?M)L zi~|*hMVzwg35au5Jq&e{0yb;QAwG74=)^Y{zA|h3lV#s;L@I61271UUkbi(VNS{W* zE{Lec8{M-08#M`a?wGobF2Th)hVdSC>OACFW9kW^oICVbH|Gs8+xE;rU%Rw98%v77 zIr5QXay08@8m?tK|Ijib@}HVUj|KcYmcjnun%;4YgU?-K96Ap7 zFd6wD+HY)8`5!O|V@07t8+C-ZfT@EZew$l`YpyKSRzKUR4sYy*BiZr~@#XUPRyn{e zpdvc4ed3~yt0KStHTHQNO+}2e{?DBF|4RtQjU(Uir6wyxe@7NB9z6Gg>ZN_jo5rf6>+p&LYH|M~F{)O3aA&caHZa4p1X5-r5zbgP^ zG~cipKD&>bXWoZmUC0ka+FqBVq?<##1dqrQai=!F|r$;%EU-dzF zsCn(?Yk-iZ)YyfL!oLkg)SzA`f{1}d^)YE{iYDNr83;JDhftvj4hLMbn)_A;$0TAE zjuK{C6q+y^64AF!8o*o0ole#$4!lv{RLmt^~(5dUbwhLT-I7Q@d2jaU+BAx zu@I1OJ26|ios8hNXu09tj6KOPJgUp$&9Lwxr$Sdu9X_~3zhrp;Z#?8Qya9M*68(4I z*1KP1+2I`?YH5em9VgOL)7wCk{0j|^-$~eDip#PHpPuPopmUWQ|9od;gE4uSM;ul= zCetE(%<_xLG%2$MBnO`*AWP#Xej|yLQZ}pPDRf!#A*P{ZXMwPN3Z0a&?=H-+FZ$FJ zT1Kf=UqC$XvUo_=sE4M~Fg1B9UG`1-{L!7ev72OhltB=J!4;z9Av{;|FaDk>g$dEb zJlZOHjlX$1z1)lRof$NqcB|qUG-q7P%a|cmzRQ3o!WU>A{9N=){BoD7cofeizf|or z=#;T#+%QNU_yqtf76Yo8^qxlmZ<X(F8P|QJi1+hVBJr&!RyC4n5Cv$oDjGEZ%&Fnl+1-pV2d& z9^W&aJ09Z(@N@{|2t43DPk&l>?1WmH9qNr)G$x~sx7J^N&LGjqx#CeZWHz0fR$R@m zH&Dk!q`@p~8IjrKe3Ra+o&^1rZ}e{l|2p5oSbRQM?3TTT6zKZ_h~F4duQKKwZ-oYR z8t9_9S_S4%NZmGv2EsrennTy%b1juMmoB7cRXCTbj>jBNnf}eCo>vR!(D38TIajsM zqqC?{&6-blQM-C&KHkq(tNxOPQm2|I=^Rn~x!Ngdn+vm*olob{Ayp)4h>GOn8?eTQ zAp;`9R9#m~*rzva_!Xo=wipG&b&hd|&}4MxiRl3Nx%2akEj1eEcvm=IL7BI3r> zq8n>QkExH^3+N;PMi-n$XH%_Ov5;n;P>n_Tg($xZ!M9_d+QR83e!OLM%{Q1$J-T0kOOX@9EPmq5%>)n_RUP48x_G@sXKlP3ARnz@wlO`=+{l%5iIG%0%-&0%=< zGP**P{aQVh!L`in?6O8{RX$gVQfxkWY^<{k^9w;R?@oknwnlKR@Fp@TuRT-sqT^u+(9oHaDuYCH-qgSM;^zevHl#=YNFYf z(I078Juk1n01ZgIfWwEMXQvKI$xfC&{Hs^?8X7|ND%XJ10Vc+eNN`8=OG!_biTD?5 z^j1Bj?p{Mr1YN0ht25Wqr5@Ix_5#at+o~RO_u~z%QMs4X6tD9kb;ad$+vr+t*Or5q zXnF7j-2EX&9dYoSiO_|YHnK@&uA^HoD&-mVS;7+9&->RH-ge6Nn0PIT+q@?QN%+@; zdCG>8&DX=O?Dwngb#!jf#ag1vu7Cj!bbGgeBcm8z=&&kTPYV$XURzHq5P&8W(8+0S ze=tn@Oqle^Ms-sGEfC!;YGMJLtGj^Kk91wHPn_%h7&CM3;EAYS-MRsBY_DqDKsSie zC)Jvbw2NI)y{1+F1VY?AuzFb z8_h^7`eU!|9qQ;ds!VU~JJ5K^e>jBw~d6D(Z=jSFgveaq_60-=lQ(*!A?XD63b6-=n$-`_MGT{3(IpH|q`YIELmdQ)vKx-X|Y0-;MZ%b>+WY^5LEIIqg^X-$=Lo%f9n(qPJs8kIA|8 zStCNNz=~(1`NcGfzNwC5y6sW7+)S7JpBTfmTj=ejo}Ob&?*Dlllg&U(hViXd))Bw4 zu4mPRTWO@)QcR)fQ{Sf($X#Ti(dKOE&@2M=a>mmcx5$2+{%{N~tQgMX2ANgdL2c38 zTWN5@&^tIM4j?g*)@hOoQNqR>Q6W(=kX21;%^frv=Y9FyMT7kPnDEFQbSWnQNo6!w zR5e8xmC+``gL>vp%0@%<;GOgiU2N9wLbPH>YS&RqXHkdw@i1SVW4V`Kb_3T;`(37w z8ED)#Hn8Zq=)elPONg(2q2~S1UZQ7=Bl@*N}@36|NRf189nUj7NaAD}k%*b_7sM_J1g^dP|Y zT3VCto>G4P8p=x$KdGfls8yZyB<_U!R3(7e^OAb=DV%H>Ptib8>LM$j!gOuwwx?(b zl8iT=LiZ{LQ`ALu=+@R~#ynhyZcXYy9j!w?1~5lmy%*Vhw<_I>A&1q$y_D}}@o^dN z0X6n#R2;KyVWJ_523m*iHLgd4A{Ift>>0_jH^z&)`j%ProDxq{;ri}<5Mw|2_m=?h zfgNADN?(Snd|&9#0-c__)StMgeN4}GkhmvQD&l&YtDyWdUmUqmgE?`xdh=<@$ask- zN$uT~6s6&jy9_4}F>p6l!_N);%VmuTc8U2g)9GQYguC?VHLGEbKOK$hc|>1kkJodQ z`P8vz(oeZ-P=3Y0AKS%#usZq;(-eO*)>r9XJMLdk!_VHweN%d_)rj85>1(!yyKOwP zHD;N3-RxD7dKx&d%uE{JQUwz0qSp=hFe^6g7_AlkBHCO}=TqdzuX2FQk>M149xmkV zE}Dfz80e?3nARcYgY<(gnw`?0Tca*IoWI={@=g~Wozjodzy8jQ&EY>65b`M(otBcy z=q`gs7xD2N5ap#Xo}XR ze9%R+%?IMeF_gdG4auMV#!USx*LJYfS14()KxT7U0<}D~=;w4Qyt?e?v^m�FoRc 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 BdXNAB diff --git a/tests/ibc-hooks/testutils/contracts/echo/src/ibc.rs b/tests/ibc-hooks/testutils/contracts/echo/src/ibc.rs index 4b4a2f13b1d..755d35c3d28 100644 --- a/tests/ibc-hooks/testutils/contracts/echo/src/ibc.rs +++ b/tests/ibc-hooks/testutils/contracts/echo/src/ibc.rs @@ -49,22 +49,16 @@ pub struct ContractAck { } -#[cw_serde] -pub struct IBCAckResponse { - pub packet: Packet, - pub contract_ack: ContractAck, -} - -#[cw_serde] -pub struct IBCAckError { - pub packet: Packet, - pub contract_error: String, -} - #[cw_serde] #[serde(tag = "type", content = "content")] pub enum IBCAck { - AckResponse(IBCAckResponse), - AckError(IBCAckError), + AckResponse{ + packet: Packet, + contract_ack: ContractAck, + }, + AckError { + packet: Packet, + contract_error: String, + } } diff --git a/tests/ibc-hooks/testutils/contracts/echo/src/lib.rs b/tests/ibc-hooks/testutils/contracts/echo/src/lib.rs index c83702f04d0..a4a194b6407 100644 --- a/tests/ibc-hooks/testutils/contracts/echo/src/lib.rs +++ b/tests/ibc-hooks/testutils/contracts/echo/src/lib.rs @@ -4,7 +4,7 @@ use cosmwasm_schema::cw_serde; #[cfg(not(feature = "library"))] use cosmwasm_std::entry_point; use cosmwasm_std::{to_binary, DepsMut, Env, MessageInfo, Response, StdError}; -use ibc::{ContractAck, IBCAck, IBCAckResponse, IBCAckError, IBCAsyncOptions, OnRecvPacketAsyncResponse, Packet}; +use ibc::{ContractAck, IBCAck, IBCAsyncOptions, OnRecvPacketAsyncResponse, Packet}; use osmosis_std_derive::CosmwasmExt; use state::INFLIGHT_PACKETS; @@ -115,17 +115,17 @@ pub fn sudo(deps: DepsMut, _env: Env, msg: SudoMsg) -> Result { let (packet, success) = INFLIGHT_PACKETS.load(deps.storage, (&source_channel, packet_sequence))?; let data = match success { - true => to_binary(&IBCAck::AckResponse(IBCAckResponse { + true => to_binary(&IBCAck::AckResponse { packet, contract_ack: ContractAck { contract_result: base64::encode("success"), ibc_ack: base64::encode("ack"), }, - }))?, - false => to_binary(&IBCAck::AckError(IBCAckError { + })?, + false => to_binary(&IBCAck::AckError { packet, contract_error: "forced error".to_string(), - }))? + })? }; Ok(Response::new().set_data(data))}, } From e19b66db52d932377ba4f41fee5cde118c350c5f Mon Sep 17 00:00:00 2001 From: Nicolas Lara Date: Fri, 30 Jun 2023 16:13:31 +0200 Subject: [PATCH 17/31] initial params --- app/keepers/keepers.go | 2 + go.mod | 2 +- proto/osmosis/ibc-hooks/genesis.proto | 10 +++++ proto/osmosis/ibc-hooks/params.proto | 13 ++++++ tests/ibc-hooks/async_acks_test.go | 5 +++ x/ibc-hooks/keeper/keeper.go | 43 ++++++++++++++++++- x/ibc-hooks/sdkmodule.go | 18 ++++++-- x/ibc-hooks/types/errors.go | 15 ++++--- x/ibc-hooks/types/genesis.go | 16 +++++++ x/ibc-hooks/types/params.go | 62 +++++++++++++++++++++++++++ x/ibc-hooks/wasm_hook.go | 5 ++- 11 files changed, 177 insertions(+), 14 deletions(-) create mode 100644 proto/osmosis/ibc-hooks/genesis.proto create mode 100644 proto/osmosis/ibc-hooks/params.proto create mode 100644 x/ibc-hooks/types/genesis.go create mode 100644 x/ibc-hooks/types/params.go diff --git a/app/keepers/keepers.go b/app/keepers/keepers.go index 9547018265e..17e173bc553 100644 --- a/app/keepers/keepers.go +++ b/app/keepers/keepers.go @@ -246,6 +246,7 @@ func (appKeepers *AppKeepers) InitNormalKeepers( // Configure the hooks keeper hooksKeeper := ibchookskeeper.NewKeeper( appKeepers.keys[ibchookstypes.StoreKey], + appKeepers.GetSubspace(ibchookstypes.ModuleName), appKeepers.IBCKeeper.ChannelKeeper, nil, ) @@ -664,6 +665,7 @@ func (appKeepers *AppKeepers) initParamsKeeper(appCodec codec.BinaryCodec, legac paramsKeeper.Subspace(icqtypes.ModuleName) paramsKeeper.Subspace(packetforwardtypes.ModuleName).WithKeyTable(packetforwardtypes.ParamKeyTable()) paramsKeeper.Subspace(cosmwasmpooltypes.ModuleName) + paramsKeeper.Subspace(ibchookstypes.ModuleName) return paramsKeeper } diff --git a/go.mod b/go.mod index 4af437de7ce..d34000a2d29 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ require ( cosmossdk.io/errors v1.0.0-beta.7 github.com/CosmWasm/wasmd v0.31.0 github.com/cosmos/cosmos-proto v1.0.0-beta.2 - github.com/cosmos/cosmos-sdk v0.47.2 + github.com/cosmos/cosmos-sdk v0.47.3 github.com/cosmos/go-bip39 v1.0.0 github.com/cosmos/ibc-apps/modules/async-icq/v4 v4.0.0-20230524151648-c02fa46c2860 github.com/cosmos/ibc-go/v4 v4.3.1 diff --git a/proto/osmosis/ibc-hooks/genesis.proto b/proto/osmosis/ibc-hooks/genesis.proto new file mode 100644 index 00000000000..3c0f9cc588f --- /dev/null +++ b/proto/osmosis/ibc-hooks/genesis.proto @@ -0,0 +1,10 @@ +syntax = "proto3"; +package osmosis.ibchooks; + +import "gogoproto/gogo.proto"; +import "cosmos_proto/cosmos.proto"; +import "osmosis/ibc-hooks/params.proto"; + +option go_package = "github.com/osmosis-labs/osmosis/v16/x/ibc-hooks/types"; + +message GenesisState { Params params = 1 [ (gogoproto.nullable) = false ]; } diff --git a/proto/osmosis/ibc-hooks/params.proto b/proto/osmosis/ibc-hooks/params.proto new file mode 100644 index 00000000000..7b8dfca492a --- /dev/null +++ b/proto/osmosis/ibc-hooks/params.proto @@ -0,0 +1,13 @@ +syntax = "proto3"; +package osmosis.ibchooks; + +import "gogoproto/gogo.proto"; +import "cosmos_proto/cosmos.proto"; +import "google/protobuf/duration.proto"; + +option go_package = "github.com/osmosis-labs/osmosis/v16/x/ibc-hooks/types"; + +message Params { + repeated string allowed_async_ack_contracts = 1 + [ (gogoproto.moretags) = "yaml:\"allowed_async_ack_contracts\"" ]; +} diff --git a/tests/ibc-hooks/async_acks_test.go b/tests/ibc-hooks/async_acks_test.go index a0362a6354e..e226f841654 100644 --- a/tests/ibc-hooks/async_acks_test.go +++ b/tests/ibc-hooks/async_acks_test.go @@ -9,6 +9,7 @@ import ( ibctesting "github.com/cosmos/ibc-go/v4/testing" "github.com/osmosis-labs/osmosis/osmoutils" "github.com/osmosis-labs/osmosis/v16/app" + "github.com/osmosis-labs/osmosis/x/ibc-hooks/types" ) func (suite *HooksTestSuite) forceContractToEmitAckForPacket(osmosisApp *app.OsmosisApp, ctx sdk.Context, contractAddr sdk.AccAddress, packet channeltypes.Packet, success bool) ([]byte, error) { @@ -64,6 +65,10 @@ func (suite *HooksTestSuite) TestWasmHooksAsyncAcks() { packet, err := ibctesting.ParsePacketFromEvents(sendResult.GetEvents()) suite.Require().NoError(err) + params := types.DefaultParams() + params.AllowedAsyncAckContracts = []string{contractAddr.String()} + osmosisApp.IBCHooksKeeper.SetParams(suite.Ctx, params) + receiveResult = suite.RelayPacketNoAck(packet, BtoA) newAck, err := ibctesting.ParseAckFromEvents(receiveResult.GetEvents()) suite.Require().Error(err) // No ack! diff --git a/x/ibc-hooks/keeper/keeper.go b/x/ibc-hooks/keeper/keeper.go index bca8036cd51..bf8b33b4216 100644 --- a/x/ibc-hooks/keeper/keeper.go +++ b/x/ibc-hooks/keeper/keeper.go @@ -6,6 +6,7 @@ import ( wasmkeeper "github.com/CosmWasm/wasmd/x/wasm/keeper" "github.com/cosmos/cosmos-sdk/types/address" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" channeltypes "github.com/cosmos/ibc-go/v4/modules/core/04-channel/types" "github.com/cosmos/ibc-go/v4/modules/core/exported" "github.com/osmosis-labs/osmosis/osmoutils" @@ -18,7 +19,9 @@ import ( type ( Keeper struct { - storeKey sdk.StoreKey + storeKey sdk.StoreKey + paramSpace paramtypes.Subspace + channelKeeper types.ChannelKeeper ContractKeeper *wasmkeeper.PermissionedKeeper } @@ -27,11 +30,16 @@ type ( // NewKeeper returns a new instance of the x/ibchooks keeper func NewKeeper( storeKey sdk.StoreKey, + paramSpace paramtypes.Subspace, channelKeeper types.ChannelKeeper, contractKeeper *wasmkeeper.PermissionedKeeper, ) Keeper { + if !paramSpace.HasKeyTable() { + paramSpace = paramSpace.WithKeyTable(types.ParamKeyTable()) + } return Keeper{ storeKey: storeKey, + paramSpace: paramSpace, channelKeeper: channelKeeper, ContractKeeper: contractKeeper, } @@ -42,6 +50,27 @@ func (k Keeper) Logger(ctx sdk.Context) log.Logger { return ctx.Logger().With("module", fmt.Sprintf("x/%s", types.ModuleName)) } +// GetParams returns the total set of the module's parameters. +func (k Keeper) GetParams(ctx sdk.Context) (params types.Params) { + k.paramSpace.GetParamSet(ctx, ¶ms) + return params +} + +// SetParams sets the module's parameters with the provided parameters. +func (k Keeper) SetParams(ctx sdk.Context, params types.Params) { + k.paramSpace.SetParamSet(ctx, ¶ms) +} + +func (k Keeper) InitGenesis(ctx sdk.Context, genState types.GenesisState) { + k.SetParams(ctx, genState.Params) +} + +func (k Keeper) ExportGenesis(ctx sdk.Context) *types.GenesisState { + return &types.GenesisState{ + Params: k.GetParams(ctx), + } +} + func GetPacketCallbackKey(channel string, packetSequence uint64) []byte { return []byte(fmt.Sprintf("%s::%d", channel, packetSequence)) } @@ -62,6 +91,18 @@ func (k Keeper) GetPacketCallback(ctx sdk.Context, channel string, packetSequenc return string(store.Get(GetPacketCallbackKey(channel, packetSequence))) } +// IsInAllowList checks the params to see if the contract is in the KeyAsyncAckAllowList param +func (k Keeper) IsInAllowList(ctx sdk.Context, contract string) bool { + var allowList []string + k.paramSpace.GetIfExists(ctx, types.KeyAsyncAckAllowList, &allowList) + for _, addr := range allowList { + if addr == contract { + return true + } + } + return false +} + // DeletePacketCallback deletes the callback from storage once it has been processed func (k Keeper) DeletePacketCallback(ctx sdk.Context, channel string, packetSequence uint64) { store := ctx.KVStore(k.storeKey) diff --git a/x/ibc-hooks/sdkmodule.go b/x/ibc-hooks/sdkmodule.go index 5ce15ca4f61..1f4cccda6aa 100644 --- a/x/ibc-hooks/sdkmodule.go +++ b/x/ibc-hooks/sdkmodule.go @@ -51,13 +51,16 @@ func (a AppModuleBasic) RegisterInterfaces(reg cdctypes.InterfaceRegistry) { // DefaultGenesis returns default genesis state as raw bytes for the // module. func (AppModuleBasic) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage { - emptyString := "{}" - return []byte(emptyString) + return cdc.MustMarshalJSON(types.DefaultGenesis()) } // ValidateGenesis performs genesis state validation for the ibc-hooks module. func (AppModuleBasic) ValidateGenesis(cdc codec.JSONCodec, config client.TxEncodingConfig, bz json.RawMessage) error { - return nil + var genState types.GenesisState + if err := cdc.UnmarshalJSON(bz, &genState); err != nil { + return fmt.Errorf("failed to unmarshal %s genesis state: %w", types.ModuleName, err) + } + return genState.Validate() } // RegisterRESTRoutes registers the REST routes for the ibc-hooks module. @@ -125,11 +128,18 @@ func (am AppModule) RegisterServices(cfg module.Configurator) { // InitGenesis performs genesis initialization for the ibc-hooks module. It returns // no validator updates. func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, data json.RawMessage) []abci.ValidatorUpdate { + var genState types.GenesisState + // Initialize global index to index in genesis state + cdc.MustUnmarshalJSON(data, &genState) + + am.keeper.InitGenesis(ctx, genState) + return []abci.ValidatorUpdate{} } func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.RawMessage { - return json.RawMessage([]byte("{}")) + genState := am.keeper.ExportGenesis(ctx) + return cdc.MustMarshalJSON(genState) } // BeginBlock returns the begin blocker for the ibc-hooks module. diff --git a/x/ibc-hooks/types/errors.go b/x/ibc-hooks/types/errors.go index e584241af48..ffe79527309 100644 --- a/x/ibc-hooks/types/errors.go +++ b/x/ibc-hooks/types/errors.go @@ -8,11 +8,12 @@ var ( ErrBadMetadataFormatMsg = "wasm metadata not properly formatted for: '%v'. %s" ErrBadExecutionMsg = "cannot execute contract: %v" - ErrMsgValidation = errorsmod.Register("wasm-hooks", 2, "error in wasmhook message validation") - ErrMarshaling = errorsmod.Register("wasm-hooks", 3, "cannot marshal the ICS20 packet") - ErrInvalidPacket = errorsmod.Register("wasm-hooks", 4, "invalid packet data") - ErrBadResponse = errorsmod.Register("wasm-hooks", 5, "cannot create response") - ErrWasmError = errorsmod.Register("wasm-hooks", 6, "wasm error") - ErrBadSender = errorsmod.Register("wasm-hooks", 7, "bad sender") - ErrAckFromContract = errorsmod.Register("wasm-hooks", 8, "contract returned error ack") + ErrMsgValidation = errorsmod.Register("wasm-hooks", 2, "error in wasmhook message validation") + ErrMarshaling = errorsmod.Register("wasm-hooks", 3, "cannot marshal the ICS20 packet") + ErrInvalidPacket = errorsmod.Register("wasm-hooks", 4, "invalid packet data") + ErrBadResponse = errorsmod.Register("wasm-hooks", 5, "cannot create response") + ErrWasmError = errorsmod.Register("wasm-hooks", 6, "wasm error") + ErrBadSender = errorsmod.Register("wasm-hooks", 7, "bad sender") + ErrAckFromContract = errorsmod.Register("wasm-hooks", 8, "contract returned error ack") + ErrAsyncAckNotAllowed = errorsmod.Register("wasm-hooks", 9, "contract not allowed to send async acks") ) diff --git a/x/ibc-hooks/types/genesis.go b/x/ibc-hooks/types/genesis.go new file mode 100644 index 00000000000..dd111be6489 --- /dev/null +++ b/x/ibc-hooks/types/genesis.go @@ -0,0 +1,16 @@ +package types + +// DefaultGenesis returns the default GenesisState for the concentrated-liquidity module. +func DefaultGenesis() *GenesisState { + return &GenesisState{ + Params: DefaultParams(), + } +} + +// Validate performs basic genesis state validation returning an error upon any failure. +func (gs GenesisState) Validate() error { + if err := gs.Params.Validate(); err != nil { + return err + } + return nil +} diff --git a/x/ibc-hooks/types/params.go b/x/ibc-hooks/types/params.go new file mode 100644 index 00000000000..091fbb14683 --- /dev/null +++ b/x/ibc-hooks/types/params.go @@ -0,0 +1,62 @@ +package types + +import ( + "fmt" + sdk "github.com/cosmos/cosmos-sdk/types" + paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" +) + +// Parameter store keys. +var ( + KeyAsyncAckAllowList = []byte("AsyncAckAllowList") + + _ paramtypes.ParamSet = &Params{} +) + +func ParamKeyTable() paramtypes.KeyTable { + return paramtypes.NewKeyTable().RegisterParamSet(&Params{}) +} + +func NewParams(allowedAsyncAckContracts []string) Params { + return Params{ + AllowedAsyncAckContracts: allowedAsyncAckContracts, + } +} + +// DefaultParams returns default concentrated-liquidity module parameters. +func DefaultParams() Params { + return Params{ + AllowedAsyncAckContracts: []string{}, + } +} + +// ParamSetPairs implements params.ParamSet. +func (p *Params) ParamSetPairs() paramtypes.ParamSetPairs { + return paramtypes.ParamSetPairs{ + paramtypes.NewParamSetPair(KeyAsyncAckAllowList, &p.AllowedAsyncAckContracts, validateAsyncAckAllowList), + } +} + +// Validate params. +func (p Params) Validate() error { + if err := validateAsyncAckAllowList(p.AllowedAsyncAckContracts); err != nil { + return err + } + return nil +} + +func validateAsyncAckAllowList(i interface{}) error { + allowedContracts, ok := i.([]string) + + if !ok { + return fmt.Errorf("invalid parameter type: %T", i) + } + + for _, contract := range allowedContracts { + if _, err := sdk.AccAddressFromBech32(contract); err != nil { + return err + } + } + + return nil +} diff --git a/x/ibc-hooks/wasm_hook.go b/x/ibc-hooks/wasm_hook.go index d48345b0337..a341ad5478f 100644 --- a/x/ibc-hooks/wasm_hook.go +++ b/x/ibc-hooks/wasm_hook.go @@ -117,7 +117,10 @@ func (h WasmHooks) OnRecvPacketOverride(im IBCMiddleware, ctx sdk.Context, packe if err == nil { // If unmarshalling succeeds, the contract is requesting for the ack to be async. if asyncAckRequest.IsAsyncAck { // in which case IsAsyncAck is expected to be set to true - // TODO: Do we want to check that only whitelisted contracts can do AsyncAcks? + if !h.ibcHooksKeeper.IsInAllowList(ctx, contractAddr.String()) { + // Only allowed contracts can send async acks + return osmoutils.NewEmitErrorAcknowledgement(ctx, types.ErrAsyncAckNotAllowed) + } // Store the contract as the packet's ack actor and return nil h.ibcHooksKeeper.StorePacketAckActor(ctx, packet.GetSourceChannel(), packet.GetSequence(), contractAddr.String()) return nil From 17a2daa8c4a62b1ccd62fce7ce19327672f65b4e Mon Sep 17 00:00:00 2001 From: Nicolas Lara Date: Fri, 30 Jun 2023 16:47:57 +0200 Subject: [PATCH 18/31] fixed test --- app/keepers/keepers.go | 2 +- tests/ibc-hooks/async_acks_test.go | 6 +++++- x/ibc-hooks/keeper/keeper.go | 4 ++-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/app/keepers/keepers.go b/app/keepers/keepers.go index 17e173bc553..917cc1d922f 100644 --- a/app/keepers/keepers.go +++ b/app/keepers/keepers.go @@ -250,7 +250,7 @@ func (appKeepers *AppKeepers) InitNormalKeepers( appKeepers.IBCKeeper.ChannelKeeper, nil, ) - appKeepers.IBCHooksKeeper = &hooksKeeper + appKeepers.IBCHooksKeeper = hooksKeeper appKeepers.WireICS20PreWasmKeeper(appCodec, bApp, appKeepers.IBCHooksKeeper) diff --git a/tests/ibc-hooks/async_acks_test.go b/tests/ibc-hooks/async_acks_test.go index e226f841654..af98260cccb 100644 --- a/tests/ibc-hooks/async_acks_test.go +++ b/tests/ibc-hooks/async_acks_test.go @@ -67,7 +67,7 @@ func (suite *HooksTestSuite) TestWasmHooksAsyncAcks() { params := types.DefaultParams() params.AllowedAsyncAckContracts = []string{contractAddr.String()} - osmosisApp.IBCHooksKeeper.SetParams(suite.Ctx, params) + osmosisApp.IBCHooksKeeper.SetParams(suite.chainA.GetContext(), params) receiveResult = suite.RelayPacketNoAck(packet, BtoA) newAck, err := ibctesting.ParseAckFromEvents(receiveResult.GetEvents()) @@ -133,6 +133,10 @@ func (suite *HooksTestSuite) TestWasmHooksAsyncErrorAcks() { packet, err := ibctesting.ParsePacketFromEvents(sendResult.GetEvents()) suite.Require().NoError(err) + params := types.DefaultParams() + params.AllowedAsyncAckContracts = []string{contractAddr.String()} + osmosisApp.IBCHooksKeeper.SetParams(suite.chainA.GetContext(), params) + receiveResult = suite.RelayPacketNoAck(packet, BtoA) newAck, err := ibctesting.ParseAckFromEvents(receiveResult.GetEvents()) suite.Require().Error(err) // No ack! diff --git a/x/ibc-hooks/keeper/keeper.go b/x/ibc-hooks/keeper/keeper.go index bf8b33b4216..117aaeba62b 100644 --- a/x/ibc-hooks/keeper/keeper.go +++ b/x/ibc-hooks/keeper/keeper.go @@ -33,11 +33,11 @@ func NewKeeper( paramSpace paramtypes.Subspace, channelKeeper types.ChannelKeeper, contractKeeper *wasmkeeper.PermissionedKeeper, -) Keeper { +) *Keeper { if !paramSpace.HasKeyTable() { paramSpace = paramSpace.WithKeyTable(types.ParamKeyTable()) } - return Keeper{ + return &Keeper{ storeKey: storeKey, paramSpace: paramSpace, channelKeeper: channelKeeper, From fbb90dcc7b57da0973c5dfee8dfe9592e4a891b7 Mon Sep 17 00:00:00 2001 From: Nicolas Lara Date: Tue, 4 Jul 2023 16:46:34 +0200 Subject: [PATCH 19/31] updated async acks based on feedback. Safer this way --- osmoutils/ibc.go | 18 +++- tests/ibc-hooks/async_acks_test.go | 1 + tests/ibc-hooks/bytecode/counter.wasm | Bin 162007 -> 168366 bytes tests/ibc-hooks/bytecode/echo.wasm | Bin 165354 -> 167708 bytes .../testutils/contracts/echo/src/ibc.rs | 5 +- .../testutils/contracts/echo/src/lib.rs | 3 +- x/ibc-hooks/README.md | 24 ++---- x/ibc-hooks/keeper/keeper.go | 78 ++++++++++++++++-- x/ibc-hooks/types/errors.go | 18 ++-- x/ibc-hooks/types/types.go | 5 +- x/ibc-hooks/wasm_hook.go | 2 +- 11 files changed, 114 insertions(+), 40 deletions(-) diff --git a/osmoutils/ibc.go b/osmoutils/ibc.go index eb5a348822a..d1803825ea3 100644 --- a/osmoutils/ibc.go +++ b/osmoutils/ibc.go @@ -12,6 +12,22 @@ import ( // NewEmitErrorAcknowledgement creates a new error acknowledgement after having emitted an event with the // details of the error. func NewEmitErrorAcknowledgement(ctx sdk.Context, err error, errorContexts ...string) channeltypes.Acknowledgement { + EmitIBCErrorEvents(ctx, err, errorContexts) + + return channeltypes.NewErrorAcknowledgement(err) +} + +// NewSuccessAckRepresentingAnError creates a new success acknowledgement that represents an error. +// This is useful for notifying the sender that an error has occurred in a way that does not allow +// the received tokens to be reverted (which means they shouldn't be released by the sender's ics20 escrow) +func NewSuccessAckRepresentingAnError(ctx sdk.Context, err error, errorContent []byte, errorContexts ...string) channeltypes.Acknowledgement { + EmitIBCErrorEvents(ctx, err, errorContexts) + + return channeltypes.NewResultAcknowledgement(errorContent) +} + +// EmitIBCErrorEvents Emit and Log errors +func EmitIBCErrorEvents(ctx sdk.Context, err error, errorContexts []string) { errorType := "ibc-acknowledgement-error" logger := ctx.Logger().With("module", errorType) @@ -28,8 +44,6 @@ func NewEmitErrorAcknowledgement(ctx sdk.Context, err error, errorContexts ...st attributes..., ), }) - - return channeltypes.NewErrorAcknowledgement(err) } // MustExtractDenomFromPacketOnRecv takes a packet with a valid ICS20 token data in the Data field and returns the diff --git a/tests/ibc-hooks/async_acks_test.go b/tests/ibc-hooks/async_acks_test.go index af98260cccb..0442a8fd7cc 100644 --- a/tests/ibc-hooks/async_acks_test.go +++ b/tests/ibc-hooks/async_acks_test.go @@ -100,6 +100,7 @@ func (suite *HooksTestSuite) TestWasmHooksAsyncAcks() { // TestWasmHooksAsyncErrorAcks tests that the contract can emit an ack that is an error // There is considerable repetition here, but since it's only two cases didn't think it was worth it to make it into // a table test +// TODO: This test should no longer work as we are always returning a valid ack. Modify the test accordingly func (suite *HooksTestSuite) TestWasmHooksAsyncErrorAcks() { sender := suite.chainB.SenderAccount.GetAddress() osmosisApp := suite.chainA.GetOsmosisApp() diff --git a/tests/ibc-hooks/bytecode/counter.wasm b/tests/ibc-hooks/bytecode/counter.wasm index 7be9989275b5fee837f325b4cc388b094eaa7e48..eb667380ce20310c6a7e6365386f6e5b0ef55f43 100644 GIT binary patch literal 168366 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�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 literal 162007 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 E0{xx;lK=n! diff --git a/tests/ibc-hooks/bytecode/echo.wasm b/tests/ibc-hooks/bytecode/echo.wasm index f1bb1bfbaf18d6515a8e6ffd088c7c80762bbc45..93e7814b9091fa17723dc16080f0dbdfbbe981cc 100644 GIT binary patch literal 167708 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

R88ApBjy<+zbDv9y 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

Y0IdB`=OrLXvq!3Y4I$#VP_M4j5 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 ZOS+ow(Y1lOuS8IIElD1iF!*C5e!i- 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≪(ft+uwz#(Wg^R|`S%^2-!%#H;5C)DSSf;;X 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

c|f?OY2d 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 WcGEq)zKHJmUaniXuI6g*ssFztviY_E diff --git a/tests/ibc-hooks/testutils/contracts/echo/src/ibc.rs b/tests/ibc-hooks/testutils/contracts/echo/src/ibc.rs index 755d35c3d28..8bda147ed80 100644 --- a/tests/ibc-hooks/testutils/contracts/echo/src/ibc.rs +++ b/tests/ibc-hooks/testutils/contracts/echo/src/ibc.rs @@ -19,7 +19,7 @@ pub struct Packet { pub source_channel: String, pub destination_port: String, pub destination_channel: String, - pub data: String, // FungiibleTokenData + pub data: String, // FungibleTokenData pub timeout_height: Height, #[serde(skip_serializing_if = "Option::is_none")] pub timeout_timestamp: Option, @@ -58,7 +58,8 @@ pub enum IBCAck { }, AckError { packet: Packet, - contract_error: String, + error_description: String, + error_response: String, } } diff --git a/tests/ibc-hooks/testutils/contracts/echo/src/lib.rs b/tests/ibc-hooks/testutils/contracts/echo/src/lib.rs index a4a194b6407..b34c18752f9 100644 --- a/tests/ibc-hooks/testutils/contracts/echo/src/lib.rs +++ b/tests/ibc-hooks/testutils/contracts/echo/src/lib.rs @@ -124,7 +124,8 @@ pub fn sudo(deps: DepsMut, _env: Env, msg: SudoMsg) -> Result to_binary(&IBCAck::AckError { packet, - contract_error: "forced error".to_string(), + error_description: "forced error".to_string(), + error_response: r#"{"error": "forced error"}"#.to_string(), })? }; Ok(Response::new().set_data(data))}, diff --git a/x/ibc-hooks/README.md b/x/ibc-hooks/README.md index 22e30a7de69..56cb8046d87 100644 --- a/x/ibc-hooks/README.md +++ b/x/ibc-hooks/README.md @@ -279,24 +279,18 @@ pub enum SudoMsg { and that sudo call should return an `IBCAckResponse`: ```rust - -#[cw_serde] -pub struct IBCAckResponse { - pub packet: Packet, - pub contract_ack: ContractAck, -} - -#[cw_serde] -pub struct IBCAckError { - pub packet: Packet, - pub contract_error: String, -} - #[cw_serde] #[serde(tag = "type", content = "content")] pub enum IBCAck { - AckResponse(IBCAckResponse), - AckError(IBCAckError), + AckResponse{ + packet: Packet, + contract_ack: ContractAck, + }, + AckError { + packet: Packet, + error_description: String, + error_response: String, + } } ``` diff --git a/x/ibc-hooks/keeper/keeper.go b/x/ibc-hooks/keeper/keeper.go index 117aaeba62b..426f436a54f 100644 --- a/x/ibc-hooks/keeper/keeper.go +++ b/x/ibc-hooks/keeper/keeper.go @@ -1,6 +1,7 @@ package keeper import ( + "encoding/hex" "encoding/json" "fmt" wasmkeeper "github.com/CosmWasm/wasmd/x/wasm/keeper" @@ -8,9 +9,10 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" channeltypes "github.com/cosmos/ibc-go/v4/modules/core/04-channel/types" - "github.com/cosmos/ibc-go/v4/modules/core/exported" "github.com/osmosis-labs/osmosis/osmoutils" + "github.com/tendermint/tendermint/crypto/tmhash" "github.com/tendermint/tendermint/libs/log" + "strings" "github.com/osmosis-labs/osmosis/x/ibc-hooks/types" @@ -79,6 +81,19 @@ func GetPacketAckKey(channel string, packetSequence uint64) []byte { return []byte(fmt.Sprintf("%s::%d::ack", channel, packetSequence)) } +func GeneratePacketAckValue(packet channeltypes.Packet, contract string) ([]byte, error) { + if _, err := sdk.AccAddressFromBech32(contract); err != nil { + return nil, sdkerrors.Wrap(types.ErrInvalidContractAddr, contract) + } + + packetHash, err := hashPacket(packet) + if err != nil { + return nil, sdkerrors.Wrap(err, "could not hash packet") + } + + return []byte(fmt.Sprintf("%s::%s", contract, packetHash)), nil +} + // StorePacketCallback stores which contract will be listening for the ack or timeout of a packet func (k Keeper) StorePacketCallback(ctx sdk.Context, channel string, packetSequence uint64, contract string) { store := ctx.KVStore(k.storeKey) @@ -110,15 +125,39 @@ func (k Keeper) DeletePacketCallback(ctx sdk.Context, channel string, packetSequ } // StorePacketAckActor stores which contract is allowed to send an ack for the packet -func (k Keeper) StorePacketAckActor(ctx sdk.Context, channel string, packetSequence uint64, contract string) { +func (k Keeper) StorePacketAckActor(ctx sdk.Context, packet channeltypes.Packet, contract string) { store := ctx.KVStore(k.storeKey) - store.Set(GetPacketAckKey(channel, packetSequence), []byte(contract)) + channel := packet.GetSourceChannel() + packetSequence := packet.GetSequence() + + val, err := GeneratePacketAckValue(packet, contract) + if err != nil { + panic(err) + } + store.Set(GetPacketAckKey(channel, packetSequence), val) } -// GetPacketAckActor returns the bech32 addr of the contract that is allowed to send an ack for the packet -func (k Keeper) GetPacketAckActor(ctx sdk.Context, channel string, packetSequence uint64) string { +// GetPacketAckActor returns the bech32 addr of the contract that is allowed to send an ack for the packet and the packet hash +func (k Keeper) GetPacketAckActor(ctx sdk.Context, channel string, packetSequence uint64) (string, string) { store := ctx.KVStore(k.storeKey) - return string(store.Get(GetPacketAckKey(channel, packetSequence))) + rawData := store.Get(GetPacketAckKey(channel, packetSequence)) + if rawData == nil { + return "", "" + } + data := strings.Split(string(rawData), "::") + if len(data) != 2 { + return "", "" + } + // validate that the contract is a valid bech32 addr + if _, err := sdk.AccAddressFromBech32(data[0]); err != nil { + return "", "" + } + // validate that the hash is a valid sha256sum hash + if _, err := hex.DecodeString(data[1]); err != nil { + return "", "" + } + + return data[0], data[1] } // DeletePacketAckActor deletes the ack actor from storage once it has been used @@ -137,7 +176,7 @@ func DeriveIntermediateSender(channel, originalSender, bech32Prefix string) (str // EmitIBCAck emits an event that the IBC packet has been acknowledged func (k Keeper) EmitIBCAck(ctx sdk.Context, sender, channel string, packetSequence uint64) ([]byte, error) { - contract := k.GetPacketAckActor(ctx, channel, packetSequence) + contract, packetHash := k.GetPacketAckActor(ctx, channel, packetSequence) if contract == "" { return nil, fmt.Errorf("no ack actor set for channel %s packet %d", channel, packetSequence) } @@ -182,7 +221,7 @@ func (k Keeper) EmitIBCAck(ctx sdk.Context, sender, channel string, packetSequen } var newAck channeltypes.Acknowledgement - var packet exported.PacketI + var packet channeltypes.Packet switch ack.Type { case "ack_response": @@ -194,11 +233,21 @@ func (k Keeper) EmitIBCAck(ctx sdk.Context, sender, channel string, packetSequen newAck = channeltypes.NewResultAcknowledgement(jsonAck) case "ack_error": packet = ack.AckError.Packet - newAck = osmoutils.NewEmitErrorAcknowledgement(ctx, types.ErrAckFromContract, ack.AckError.ContractError) + newAck = osmoutils.NewSuccessAckRepresentingAnError(ctx, types.ErrAckFromContract, []byte(ack.AckError.ErrorResponse), ack.AckError.ErrorDescription) default: return nil, sdkerrors.Wrap(err, "could not unmarshal into IBCAckResponse or IBCAckError") } + // Validate that the packet returned by the contract matches the one we stored when sending + receivedPacketHash, err := hashPacket(packet) + if err != nil { + return nil, sdkerrors.Wrap(err, "could not hash packet") + } + if receivedPacketHash != packetHash { + return nil, sdkerrors.Wrap(types.ErrAckPacketMismatch, fmt.Sprintf("packet hash mismatch. Expected %s, got %s", packetHash, receivedPacketHash)) + } + + // Now we can write the acknowledgement err = k.channelKeeper.WriteAcknowledgement(ctx, cap, packet, newAck) if err != nil { return nil, sdkerrors.Wrap(err, "could not write acknowledgement") @@ -210,3 +259,14 @@ func (k Keeper) EmitIBCAck(ctx sdk.Context, sender, channel string, packetSequen } return response, nil } + +func hashPacket(packet channeltypes.Packet) (string, error) { + // ignore the data here. We only care about the channel information + packet.Data = nil + bz, err := json.Marshal(packet) + if err != nil { + return "", sdkerrors.Wrap(err, "could not marshal packet") + } + packetHash := tmhash.Sum(bz) + return hex.EncodeToString(packetHash), nil +} diff --git a/x/ibc-hooks/types/errors.go b/x/ibc-hooks/types/errors.go index ffe79527309..31722619aaf 100644 --- a/x/ibc-hooks/types/errors.go +++ b/x/ibc-hooks/types/errors.go @@ -8,12 +8,14 @@ var ( ErrBadMetadataFormatMsg = "wasm metadata not properly formatted for: '%v'. %s" ErrBadExecutionMsg = "cannot execute contract: %v" - ErrMsgValidation = errorsmod.Register("wasm-hooks", 2, "error in wasmhook message validation") - ErrMarshaling = errorsmod.Register("wasm-hooks", 3, "cannot marshal the ICS20 packet") - ErrInvalidPacket = errorsmod.Register("wasm-hooks", 4, "invalid packet data") - ErrBadResponse = errorsmod.Register("wasm-hooks", 5, "cannot create response") - ErrWasmError = errorsmod.Register("wasm-hooks", 6, "wasm error") - ErrBadSender = errorsmod.Register("wasm-hooks", 7, "bad sender") - ErrAckFromContract = errorsmod.Register("wasm-hooks", 8, "contract returned error ack") - ErrAsyncAckNotAllowed = errorsmod.Register("wasm-hooks", 9, "contract not allowed to send async acks") + ErrMsgValidation = errorsmod.Register("wasm-hooks", 2, "error in wasmhook message validation") + ErrMarshaling = errorsmod.Register("wasm-hooks", 3, "cannot marshal the ICS20 packet") + ErrInvalidPacket = errorsmod.Register("wasm-hooks", 4, "invalid packet data") + ErrBadResponse = errorsmod.Register("wasm-hooks", 5, "cannot create response") + ErrWasmError = errorsmod.Register("wasm-hooks", 6, "wasm error") + ErrBadSender = errorsmod.Register("wasm-hooks", 7, "bad sender") + ErrAckFromContract = errorsmod.Register("wasm-hooks", 8, "contract returned error ack") + ErrAsyncAckNotAllowed = errorsmod.Register("wasm-hooks", 9, "contract not allowed to send async acks") + ErrAckPacketMismatch = errorsmod.Register("wasm-hooks", 10, "packet does not match the expected packet") + ErrInvalidContractAddr = errorsmod.Register("wasm-hooks", 11, "invalid contract address") ) diff --git a/x/ibc-hooks/types/types.go b/x/ibc-hooks/types/types.go index 0dfaa74c1fc..c2afc5e3e89 100644 --- a/x/ibc-hooks/types/types.go +++ b/x/ibc-hooks/types/types.go @@ -46,8 +46,9 @@ type IBCAckResponse struct { // IBCAckError is the error that a contract returns from the sudo() call on RequestAck type IBCAckError struct { - Packet channeltypes.Packet `json:"packet"` - ContractError string `json:"contract_error"` + Packet channeltypes.Packet `json:"packet"` + ErrorDescription string `json:"error_description"` + ErrorResponse string `json:"error_response"` } type IBCAck struct { diff --git a/x/ibc-hooks/wasm_hook.go b/x/ibc-hooks/wasm_hook.go index a341ad5478f..8c169649b31 100644 --- a/x/ibc-hooks/wasm_hook.go +++ b/x/ibc-hooks/wasm_hook.go @@ -122,7 +122,7 @@ func (h WasmHooks) OnRecvPacketOverride(im IBCMiddleware, ctx sdk.Context, packe return osmoutils.NewEmitErrorAcknowledgement(ctx, types.ErrAsyncAckNotAllowed) } // Store the contract as the packet's ack actor and return nil - h.ibcHooksKeeper.StorePacketAckActor(ctx, packet.GetSourceChannel(), packet.GetSequence(), contractAddr.String()) + h.ibcHooksKeeper.StorePacketAckActor(ctx, packet, contractAddr.String()) return nil } } From ef9bba1a41a64d03a5f3920d4014e0eccd72a7ec Mon Sep 17 00:00:00 2001 From: Nicolas Lara Date: Thu, 6 Jul 2023 14:43:23 +0200 Subject: [PATCH 20/31] add error ack test --- tests/ibc-hooks/async_acks_test.go | 157 +++++++++++------------------ x/ibc-hooks/keeper/keeper.go | 2 +- 2 files changed, 60 insertions(+), 99 deletions(-) diff --git a/tests/ibc-hooks/async_acks_test.go b/tests/ibc-hooks/async_acks_test.go index 0442a8fd7cc..a9ba669a3fb 100644 --- a/tests/ibc-hooks/async_acks_test.go +++ b/tests/ibc-hooks/async_acks_test.go @@ -1,6 +1,7 @@ package ibc_hooks_test import ( + "encoding/base64" "encoding/json" "fmt" wasmkeeper "github.com/CosmWasm/wasmd/x/wasm/keeper" @@ -10,6 +11,7 @@ import ( "github.com/osmosis-labs/osmosis/osmoutils" "github.com/osmosis-labs/osmosis/v16/app" "github.com/osmosis-labs/osmosis/x/ibc-hooks/types" + "github.com/tidwall/gjson" ) func (suite *HooksTestSuite) forceContractToEmitAckForPacket(osmosisApp *app.OsmosisApp, ctx sdk.Context, contractAddr sdk.AccAddress, packet channeltypes.Packet, success bool) ([]byte, error) { @@ -54,106 +56,65 @@ func (suite *HooksTestSuite) TestWasmHooksAsyncAcks() { suite.Require().Error(err) suite.Require().Contains(err.Error(), "no ack actor set for channel channel-0 packet 1") - // Calls that specify async Acks work and no Acks are sent - memo = fmt.Sprintf(`{"wasm": {"contract": "%s", "msg": {"async": {"use_async": true}}}}`, contractAddr) - suite.fundAccount(suite.chainB, sender) - transferMsg = NewMsgTransfer(sdk.NewCoin("token0", sdk.NewInt(2000)), sender.String(), contractAddr.String(), "channel-0", memo) - - sendResult, err = suite.chainB.SendMsgsNoCheck(transferMsg) - suite.Require().NoError(err) - - packet, err := ibctesting.ParsePacketFromEvents(sendResult.GetEvents()) - suite.Require().NoError(err) - - params := types.DefaultParams() - params.AllowedAsyncAckContracts = []string{contractAddr.String()} - osmosisApp.IBCHooksKeeper.SetParams(suite.chainA.GetContext(), params) - - receiveResult = suite.RelayPacketNoAck(packet, BtoA) - newAck, err := ibctesting.ParseAckFromEvents(receiveResult.GetEvents()) - suite.Require().Error(err) // No ack! - suite.Require().Nil(newAck) - - // No new ack has been written - allAcks = osmosisApp.IBCKeeper.ChannelKeeper.GetAllPacketAcks(suite.chainA.GetContext()) - suite.Require().Equal(1, len(allAcks)) - - // Store a second contract and ask that one to emit an ack for the packet that the first contract sent - contractAddr2 := suite.chainA.InstantiateContract(&suite.Suite, "{}", 1) - _, err = suite.forceContractToEmitAckForPacket(osmosisApp, suite.chainA.GetContext(), contractAddr2, packet, true) - // This should fail because the new contract is not authorized to emit acks for that packet - suite.Require().Error(err) - suite.Require().Contains(err.Error(), "is not allowed to send an ack for channel channel-0 packet 2") - - // only the contract that sent the packet can send an ack for that packet sequence - ctx := suite.chainA.GetContext() - _, err = suite.forceContractToEmitAckForPacket(osmosisApp, ctx, contractAddr, packet, true) - suite.Require().NoError(err) - writtenAck, err := ibctesting.ParseAckFromEvents(ctx.EventManager().Events()) - suite.Require().NoError(err) - - allAcks = osmosisApp.IBCKeeper.ChannelKeeper.GetAllPacketAcks(suite.chainA.GetContext()) - suite.Require().Equal(2, len(allAcks)) - suite.Require().False(osmoutils.IsAckError(writtenAck)) -} - -// TestWasmHooksAsyncErrorAcks tests that the contract can emit an ack that is an error -// There is considerable repetition here, but since it's only two cases didn't think it was worth it to make it into -// a table test -// TODO: This test should no longer work as we are always returning a valid ack. Modify the test accordingly -func (suite *HooksTestSuite) TestWasmHooksAsyncErrorAcks() { - sender := suite.chainB.SenderAccount.GetAddress() - osmosisApp := suite.chainA.GetOsmosisApp() - - // Instantiate a contract that knows how to send async Acks - suite.chainA.StoreContractCode(&suite.Suite, "./bytecode/echo.wasm") - contractAddr := suite.chainA.InstantiateContract(&suite.Suite, "{}", 1) - - // Calls that don't specify async acks work as expected - memo := fmt.Sprintf(`{"wasm": {"contract": "%s", "msg": {"async": {"use_async": false}}}}`, contractAddr) - suite.fundAccount(suite.chainB, sender) - transferMsg := NewMsgTransfer(sdk.NewCoin("token0", sdk.NewInt(2000)), sender.String(), contractAddr.String(), "channel-0", memo) - sendResult, receiveResult, ack, err := suite.FullSend(transferMsg, BtoA) - suite.Require().NoError(err) - suite.Require().NotNil(sendResult) - suite.Require().NotNil(receiveResult) - suite.Require().NotNil(ack) - - // the ack has been written - allAcks := osmosisApp.IBCKeeper.ChannelKeeper.GetAllPacketAcks(suite.chainA.GetContext()) - suite.Require().Equal(1, len(allAcks)) - - // Calls that specify async Acks work and no Acks are sent - memo = fmt.Sprintf(`{"wasm": {"contract": "%s", "msg": {"async": {"use_async": true}}}}`, contractAddr) - suite.fundAccount(suite.chainB, sender) - transferMsg = NewMsgTransfer(sdk.NewCoin("token0", sdk.NewInt(2000)), sender.String(), contractAddr.String(), "channel-0", memo) - - sendResult, err = suite.chainB.SendMsgsNoCheck(transferMsg) - suite.Require().NoError(err) - - packet, err := ibctesting.ParsePacketFromEvents(sendResult.GetEvents()) - suite.Require().NoError(err) - params := types.DefaultParams() params.AllowedAsyncAckContracts = []string{contractAddr.String()} osmosisApp.IBCHooksKeeper.SetParams(suite.chainA.GetContext(), params) - receiveResult = suite.RelayPacketNoAck(packet, BtoA) - newAck, err := ibctesting.ParseAckFromEvents(receiveResult.GetEvents()) - suite.Require().Error(err) // No ack! - suite.Require().Nil(newAck) - - // No new ack has been written - allAcks = osmosisApp.IBCKeeper.ChannelKeeper.GetAllPacketAcks(suite.chainA.GetContext()) - suite.Require().Equal(1, len(allAcks)) - - // only the contract that sent the packet can send an ack for that packet sequence - ctx := suite.chainA.GetContext() - _, err = suite.forceContractToEmitAckForPacket(osmosisApp, ctx, contractAddr, packet, false) - suite.Require().NoError(err) - writtenAck, err := ibctesting.ParseAckFromEvents(ctx.EventManager().Events()) - suite.Require().NoError(err) - allAcks = osmosisApp.IBCKeeper.ChannelKeeper.GetAllPacketAcks(suite.chainA.GetContext()) - suite.Require().Equal(2, len(allAcks)) - suite.Require().True(osmoutils.IsAckError(writtenAck)) + totalExpectedAcks := 1 + testCases := []struct { + success bool + }{ + {true}, + {false}, + } + for _, tc := range testCases { + // Calls that specify async Acks work and no Acks are sent + memo = fmt.Sprintf(`{"wasm": {"contract": "%s", "msg": {"async": {"use_async": true}}}}`, contractAddr) + suite.fundAccount(suite.chainB, sender) + transferMsg = NewMsgTransfer(sdk.NewCoin("token0", sdk.NewInt(2000)), sender.String(), contractAddr.String(), "channel-0", memo) + + sendResult, err = suite.chainB.SendMsgsNoCheck(transferMsg) + suite.Require().NoError(err) + + packet, err := ibctesting.ParsePacketFromEvents(sendResult.GetEvents()) + suite.Require().NoError(err) + + receiveResult = suite.RelayPacketNoAck(packet, BtoA) + newAck, err := ibctesting.ParseAckFromEvents(receiveResult.GetEvents()) + suite.Require().Error(err) // No ack! + suite.Require().Nil(newAck) + + // No new ack has been written + allAcks = osmosisApp.IBCKeeper.ChannelKeeper.GetAllPacketAcks(suite.chainA.GetContext()) + suite.Require().Equal(totalExpectedAcks, len(allAcks)) + + // Store a second contract and ask that one to emit an ack for the packet that the first contract sent + contractAddr2 := suite.chainA.InstantiateContract(&suite.Suite, "{}", 1) + _, err = suite.forceContractToEmitAckForPacket(osmosisApp, suite.chainA.GetContext(), contractAddr2, packet, tc.success) + // This should fail because the new contract is not authorized to emit acks for that packet + suite.Require().Error(err) + suite.Require().Contains(err.Error(), "is not allowed to send an ack for channel channel-0 packet") + + // only the contract that sent the packet can send an ack for that packet sequence + ctx := suite.chainA.GetContext() + _, err = suite.forceContractToEmitAckForPacket(osmosisApp, ctx, contractAddr, packet, tc.success) + totalExpectedAcks++ + suite.Require().NoError(err) + writtenAck, err := ibctesting.ParseAckFromEvents(ctx.EventManager().Events()) + suite.Require().NoError(err) + + allAcks = osmosisApp.IBCKeeper.ChannelKeeper.GetAllPacketAcks(suite.chainA.GetContext()) + suite.Require().Equal(totalExpectedAcks, len(allAcks)) + suite.Require().False(osmoutils.IsAckError(writtenAck)) + ackBase64 := gjson.ParseBytes(writtenAck).Get("result").String() + // decode base64 + ackBytes, err := base64.StdEncoding.DecodeString(ackBase64) + suite.Require().NoError(err) + if tc.success { + suite.Require().Equal("YWNr", gjson.ParseBytes(ackBytes).Get("ibc_ack").String()) + } else { + suite.Require().Equal("forced error", gjson.ParseBytes(ackBytes).Get("error").String()) + } + + } } diff --git a/x/ibc-hooks/keeper/keeper.go b/x/ibc-hooks/keeper/keeper.go index 426f436a54f..b4bc23cf269 100644 --- a/x/ibc-hooks/keeper/keeper.go +++ b/x/ibc-hooks/keeper/keeper.go @@ -225,7 +225,7 @@ func (k Keeper) EmitIBCAck(ctx sdk.Context, sender, channel string, packetSequen switch ack.Type { case "ack_response": - jsonAck, err := json.Marshal(ack.AckResponse) + jsonAck, err := json.Marshal(ack.AckResponse.ContractAck) if err != nil { return nil, sdkerrors.Wrap(err, "could not marshal acknowledgement") } From b6208c31b7fbd954a3966ece42b149f3c6ac9e59 Mon Sep 17 00:00:00 2001 From: Nicolas Lara Date: Fri, 7 Jul 2023 11:00:06 +0200 Subject: [PATCH 21/31] added missing types --- x/ibc-hooks/types/genesis.pb.go | 322 +++++++++++++++++++++++++++++++ x/ibc-hooks/types/params.pb.go | 327 ++++++++++++++++++++++++++++++++ 2 files changed, 649 insertions(+) create mode 100644 x/ibc-hooks/types/genesis.pb.go create mode 100644 x/ibc-hooks/types/params.pb.go diff --git a/x/ibc-hooks/types/genesis.pb.go b/x/ibc-hooks/types/genesis.pb.go new file mode 100644 index 00000000000..afa4621adfc --- /dev/null +++ b/x/ibc-hooks/types/genesis.pb.go @@ -0,0 +1,322 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: osmosis/ibc-hooks/genesis.proto + +package types + +import ( + fmt "fmt" + _ "github.com/cosmos/cosmos-proto" + _ "github.com/gogo/protobuf/gogoproto" + proto "github.com/gogo/protobuf/proto" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +type GenesisState struct { + Params Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params"` +} + +func (m *GenesisState) Reset() { *m = GenesisState{} } +func (m *GenesisState) String() string { return proto.CompactTextString(m) } +func (*GenesisState) ProtoMessage() {} +func (*GenesisState) Descriptor() ([]byte, []int) { + return fileDescriptor_a335b3a5deaed556, []int{0} +} +func (m *GenesisState) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *GenesisState) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_GenesisState.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 *GenesisState) XXX_Merge(src proto.Message) { + xxx_messageInfo_GenesisState.Merge(m, src) +} +func (m *GenesisState) XXX_Size() int { + return m.Size() +} +func (m *GenesisState) XXX_DiscardUnknown() { + xxx_messageInfo_GenesisState.DiscardUnknown(m) +} + +var xxx_messageInfo_GenesisState proto.InternalMessageInfo + +func (m *GenesisState) GetParams() Params { + if m != nil { + return m.Params + } + return Params{} +} + +func init() { + proto.RegisterType((*GenesisState)(nil), "osmosis.ibchooks.GenesisState") +} + +func init() { proto.RegisterFile("osmosis/ibc-hooks/genesis.proto", fileDescriptor_a335b3a5deaed556) } + +var fileDescriptor_a335b3a5deaed556 = []byte{ + // 212 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0xcf, 0x2f, 0xce, 0xcd, + 0x2f, 0xce, 0x2c, 0xd6, 0xcf, 0x4c, 0x4a, 0xd6, 0xcd, 0xc8, 0xcf, 0xcf, 0x2e, 0xd6, 0x4f, 0x4f, + 0xcd, 0x4b, 0x2d, 0xce, 0x2c, 0xd6, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x80, 0x2a, 0xd0, + 0xcb, 0x4c, 0x4a, 0x06, 0xcb, 0x4b, 0x89, 0xa4, 0xe7, 0xa7, 0xe7, 0x83, 0x25, 0xf5, 0x41, 0x2c, + 0x88, 0x3a, 0x29, 0xc9, 0x64, 0xb0, 0xc2, 0x78, 0x88, 0x04, 0x84, 0x03, 0x95, 0x92, 0xc3, 0xb4, + 0xa3, 0x20, 0xb1, 0x28, 0x31, 0x17, 0x2a, 0xaf, 0xe4, 0xc6, 0xc5, 0xe3, 0x0e, 0xb1, 0x33, 0xb8, + 0x24, 0xb1, 0x24, 0x55, 0xc8, 0x8c, 0x8b, 0x0d, 0x22, 0x2f, 0xc1, 0xa8, 0xc0, 0xa8, 0xc1, 0x6d, + 0x24, 0xa1, 0x87, 0xee, 0x06, 0xbd, 0x00, 0xb0, 0xbc, 0x13, 0xcb, 0x89, 0x7b, 0xf2, 0x0c, 0x41, + 0x50, 0xd5, 0x4e, 0xfe, 0x27, 0x1e, 0xc9, 0x31, 0x5e, 0x78, 0x24, 0xc7, 0xf8, 0xe0, 0x91, 0x1c, + 0xe3, 0x84, 0xc7, 0x72, 0x0c, 0x17, 0x1e, 0xcb, 0x31, 0xdc, 0x78, 0x2c, 0xc7, 0x10, 0x65, 0x9a, + 0x9e, 0x59, 0x92, 0x51, 0x9a, 0xa4, 0x97, 0x9c, 0x9f, 0xab, 0x0f, 0x35, 0x4b, 0x37, 0x27, 0x31, + 0xa9, 0x18, 0xc6, 0xd1, 0x2f, 0x33, 0x34, 0xd3, 0xaf, 0x40, 0x72, 0x5f, 0x49, 0x65, 0x41, 0x6a, + 0x71, 0x12, 0x1b, 0xd8, 0x7d, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0xd5, 0x7c, 0xa6, 0xe8, + 0x25, 0x01, 0x00, 0x00, +} + +func (m *GenesisState) 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 *GenesisState) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *GenesisState) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.Params.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func encodeVarintGenesis(dAtA []byte, offset int, v uint64) int { + offset -= sovGenesis(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *GenesisState) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.Params.Size() + n += 1 + l + sovGenesis(uint64(l)) + return n +} + +func sovGenesis(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozGenesis(x uint64) (n int) { + return sovGenesis(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *GenesisState) 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 ErrIntOverflowGenesis + } + 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: GenesisState: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GenesisState: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenesis(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenesis + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipGenesis(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenesis + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenesis + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenesis + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthGenesis + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupGenesis + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthGenesis + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthGenesis = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowGenesis = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupGenesis = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/ibc-hooks/types/params.pb.go b/x/ibc-hooks/types/params.pb.go new file mode 100644 index 00000000000..77fdf77d008 --- /dev/null +++ b/x/ibc-hooks/types/params.pb.go @@ -0,0 +1,327 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: osmosis/ibc-hooks/params.proto + +package types + +import ( + fmt "fmt" + _ "github.com/cosmos/cosmos-proto" + _ "github.com/gogo/protobuf/gogoproto" + proto "github.com/gogo/protobuf/proto" + _ "github.com/gogo/protobuf/types" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +type Params struct { + AllowedAsyncAckContracts []string `protobuf:"bytes,1,rep,name=allowed_async_ack_contracts,json=allowedAsyncAckContracts,proto3" json:"allowed_async_ack_contracts,omitempty" yaml:"allowed_async_ack_contracts"` +} + +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_a8a3c4779e5e4552, []int{0} +} +func (m *Params) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Params) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Params.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 *Params) XXX_Merge(src proto.Message) { + xxx_messageInfo_Params.Merge(m, src) +} +func (m *Params) XXX_Size() int { + return m.Size() +} +func (m *Params) XXX_DiscardUnknown() { + xxx_messageInfo_Params.DiscardUnknown(m) +} + +var xxx_messageInfo_Params proto.InternalMessageInfo + +func (m *Params) GetAllowedAsyncAckContracts() []string { + if m != nil { + return m.AllowedAsyncAckContracts + } + return nil +} + +func init() { + proto.RegisterType((*Params)(nil), "osmosis.ibchooks.Params") +} + +func init() { proto.RegisterFile("osmosis/ibc-hooks/params.proto", fileDescriptor_a8a3c4779e5e4552) } + +var fileDescriptor_a8a3c4779e5e4552 = []byte{ + // 254 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0xcb, 0x2f, 0xce, 0xcd, + 0x2f, 0xce, 0x2c, 0xd6, 0xcf, 0x4c, 0x4a, 0xd6, 0xcd, 0xc8, 0xcf, 0xcf, 0x2e, 0xd6, 0x2f, 0x48, + 0x2c, 0x4a, 0xcc, 0x2d, 0xd6, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x80, 0xca, 0xeb, 0x65, + 0x26, 0x25, 0x83, 0xa5, 0xa5, 0x44, 0xd2, 0xf3, 0xd3, 0xf3, 0xc1, 0x92, 0xfa, 0x20, 0x16, 0x44, + 0x9d, 0x94, 0x64, 0x32, 0x58, 0x61, 0x3c, 0x44, 0x02, 0xc2, 0x81, 0x4a, 0xc9, 0xa5, 0xe7, 0xe7, + 0xa7, 0xe7, 0xa4, 0xea, 0x83, 0x79, 0x49, 0xa5, 0x69, 0xfa, 0x29, 0xa5, 0x45, 0x89, 0x25, 0x99, + 0xf9, 0x79, 0x10, 0x79, 0xa5, 0x7c, 0x2e, 0xb6, 0x00, 0xb0, 0x95, 0x42, 0xa9, 0x5c, 0xd2, 0x89, + 0x39, 0x39, 0xf9, 0xe5, 0xa9, 0x29, 0xf1, 0x89, 0xc5, 0x95, 0x79, 0xc9, 0xf1, 0x89, 0xc9, 0xd9, + 0xf1, 0xc9, 0xf9, 0x79, 0x25, 0x45, 0x89, 0xc9, 0x25, 0xc5, 0x12, 0x8c, 0x0a, 0xcc, 0x1a, 0x9c, + 0x4e, 0x6a, 0x9f, 0xee, 0xc9, 0x2b, 0x55, 0x26, 0xe6, 0xe6, 0x58, 0x29, 0xe1, 0x51, 0xac, 0x14, + 0x24, 0x01, 0x95, 0x75, 0x04, 0x49, 0x3a, 0x26, 0x67, 0x3b, 0xc3, 0xa4, 0x9c, 0xfc, 0x4f, 0x3c, + 0x92, 0x63, 0xbc, 0xf0, 0x48, 0x8e, 0xf1, 0xc1, 0x23, 0x39, 0xc6, 0x09, 0x8f, 0xe5, 0x18, 0x2e, + 0x3c, 0x96, 0x63, 0xb8, 0xf1, 0x58, 0x8e, 0x21, 0xca, 0x34, 0x3d, 0xb3, 0x24, 0xa3, 0x34, 0x49, + 0x2f, 0x39, 0x3f, 0x57, 0x1f, 0xea, 0x71, 0xdd, 0x9c, 0xc4, 0xa4, 0x62, 0x18, 0x47, 0xbf, 0xcc, + 0xd0, 0x4c, 0xbf, 0x02, 0x29, 0xac, 0x4a, 0x2a, 0x0b, 0x52, 0x8b, 0x93, 0xd8, 0xc0, 0x1e, 0x31, + 0x06, 0x04, 0x00, 0x00, 0xff, 0xff, 0x15, 0xae, 0x4e, 0xb5, 0x4d, 0x01, 0x00, 0x00, +} + +func (m *Params) 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 *Params) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Params) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.AllowedAsyncAckContracts) > 0 { + for iNdEx := len(m.AllowedAsyncAckContracts) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.AllowedAsyncAckContracts[iNdEx]) + copy(dAtA[i:], m.AllowedAsyncAckContracts[iNdEx]) + i = encodeVarintParams(dAtA, i, uint64(len(m.AllowedAsyncAckContracts[iNdEx]))) + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func encodeVarintParams(dAtA []byte, offset int, v uint64) int { + offset -= sovParams(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *Params) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.AllowedAsyncAckContracts) > 0 { + for _, s := range m.AllowedAsyncAckContracts { + l = len(s) + n += 1 + l + sovParams(uint64(l)) + } + } + return n +} + +func sovParams(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozParams(x uint64) (n int) { + return sovParams(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *Params) 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 ErrIntOverflowParams + } + 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: Params: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Params: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AllowedAsyncAckContracts", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowParams + } + 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 ErrInvalidLengthParams + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthParams + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AllowedAsyncAckContracts = append(m.AllowedAsyncAckContracts, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipParams(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthParams + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipParams(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowParams + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowParams + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowParams + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthParams + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupParams + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthParams + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthParams = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowParams = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupParams = fmt.Errorf("proto: unexpected end of group") +) From 0ef49212d76e090303694514e8319d01942e3012 Mon Sep 17 00:00:00 2001 From: Nicolas Lara Date: Mon, 17 Jul 2023 14:08:49 +0200 Subject: [PATCH 22/31] updated ibc-hooks --- go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go.mod b/go.mod index 6e01505e776..6ba1c72dfce 100644 --- a/go.mod +++ b/go.mod @@ -23,7 +23,7 @@ require ( github.com/osmosis-labs/osmosis/osmomath v0.0.3-dev.0.20230629191111-f375469de8b6 github.com/osmosis-labs/osmosis/osmoutils v0.0.0-20230623115558-38aaab07d343 github.com/osmosis-labs/osmosis/x/epochs v0.0.0-20230328024000-175ec88e4304 - github.com/osmosis-labs/osmosis/x/ibc-hooks v0.0.0-20230531091151-415a40c6089c + github.com/osmosis-labs/osmosis/x/ibc-hooks v0.0.0-20230707090006-b6208c31b7fb github.com/pkg/errors v0.9.1 github.com/rakyll/statik v0.1.7 github.com/spf13/cast v1.5.1 From 1c7208dcbb87e057cc9474b6e734bdbbdb4d61ba Mon Sep 17 00:00:00 2001 From: Nicolas Lara Date: Mon, 17 Jul 2023 14:09:24 +0200 Subject: [PATCH 23/31] tidy --- go.mod | 1 - go.sum | 5 ++--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/go.mod b/go.mod index 6ba1c72dfce..400a18b4a3d 100644 --- a/go.mod +++ b/go.mod @@ -63,7 +63,6 @@ require ( github.com/google/btree v1.1.2 // indirect github.com/junk1tm/musttag v0.5.0 // indirect github.com/kkHAIKE/contextcheck v1.1.4 // indirect - github.com/klauspost/cpuid/v2 v2.2.5 // indirect github.com/maratori/testableexamples v1.0.0 // indirect github.com/nunnatsa/ginkgolinter v0.9.0 // indirect github.com/regen-network/cosmos-proto v0.3.1 // indirect diff --git a/go.sum b/go.sum index b5ea82e0862..f85cce6d1bd 100644 --- a/go.sum +++ b/go.sum @@ -751,7 +751,6 @@ github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrD github.com/klauspost/cpuid v0.0.0-20170728055534-ae7887de9fa5/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/klauspost/cpuid/v2 v2.2.5 h1:0E5MSMDEoAulmXNFquVs//DdoomxaoTY1kUhbc/qbZg= -github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= github.com/klauspost/crc32 v0.0.0-20161016154125-cb6bfca970f6/go.mod h1:+ZoRqAPRLkC4NPOvfYeR5KNOrY6TD+/sAC3HXPZgDYg= github.com/klauspost/pgzip v1.0.2-0.20170402124221-0bf5dcad4ada/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= @@ -954,8 +953,8 @@ github.com/osmosis-labs/osmosis/osmoutils v0.0.0-20230623115558-38aaab07d343 h1: github.com/osmosis-labs/osmosis/osmoutils v0.0.0-20230623115558-38aaab07d343/go.mod h1:FqFOfj9+e5S1I7hR3baGUHrqje3g32EOHAXoOf7R00M= github.com/osmosis-labs/osmosis/x/epochs v0.0.0-20230328024000-175ec88e4304 h1:RIrWLzIiZN5Xd2JOfSOtGZaf6V3qEQYg6EaDTAkMnCo= github.com/osmosis-labs/osmosis/x/epochs v0.0.0-20230328024000-175ec88e4304/go.mod h1:yPWoJTj5RKrXKUChAicp+G/4Ni/uVEpp27mi/FF/L9c= -github.com/osmosis-labs/osmosis/x/ibc-hooks v0.0.0-20230531091151-415a40c6089c h1:cOsyusuELkrcZyC6gaTRNBZr1Z4O/Nywq2GsnA376/Y= -github.com/osmosis-labs/osmosis/x/ibc-hooks v0.0.0-20230531091151-415a40c6089c/go.mod h1:m/e6INzaXZfdLljqzy4OBXB6so/UVyk/UdnGN4H5OHM= +github.com/osmosis-labs/osmosis/x/ibc-hooks v0.0.0-20230707090006-b6208c31b7fb h1:gWkGbhccLQ9d0ZqYNELO+RexFFCoBg2TPfDtoGhbW6U= +github.com/osmosis-labs/osmosis/x/ibc-hooks v0.0.0-20230707090006-b6208c31b7fb/go.mod h1:sR0lpev9mcm9/9RY50T1og3UC3WpZAsINh/OmgrmFlg= github.com/osmosis-labs/wasmd v0.31.0-osmo-v16 h1:X747cZYdnqc/+RV48iPVeGprpVb/fUWSaKGsZUWrdbg= github.com/osmosis-labs/wasmd v0.31.0-osmo-v16/go.mod h1:Rf8zW/GgBQyFRRB4s62VQHWA6sTlMFSjoDQQpoq64iI= github.com/otiai10/copy v1.2.0/go.mod h1:rrF5dJ5F0t/EWSYODDu4j9/vEeYHMkc8jt0zJChqQWw= From f056cfc53d50203b5ff28aae2d8aa3358fa51334 Mon Sep 17 00:00:00 2001 From: Nicolas Lara Date: Mon, 17 Jul 2023 14:27:36 +0200 Subject: [PATCH 24/31] updated osmoutils --- go.mod | 2 +- go.sum | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 400a18b4a3d..cb4a32168ea 100644 --- a/go.mod +++ b/go.mod @@ -21,7 +21,7 @@ require ( github.com/ory/dockertest/v3 v3.10.0 github.com/osmosis-labs/go-mutesting v0.0.0-20221208041716-b43bcd97b3b3 github.com/osmosis-labs/osmosis/osmomath v0.0.3-dev.0.20230629191111-f375469de8b6 - github.com/osmosis-labs/osmosis/osmoutils v0.0.0-20230623115558-38aaab07d343 + github.com/osmosis-labs/osmosis/osmoutils v0.0.0-20230707090006-b6208c31b7fb github.com/osmosis-labs/osmosis/x/epochs v0.0.0-20230328024000-175ec88e4304 github.com/osmosis-labs/osmosis/x/ibc-hooks v0.0.0-20230707090006-b6208c31b7fb github.com/pkg/errors v0.9.1 diff --git a/go.sum b/go.sum index f85cce6d1bd..de7aa577db5 100644 --- a/go.sum +++ b/go.sum @@ -748,6 +748,7 @@ github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYs github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= github.com/klauspost/compress v1.15.11 h1:Lcadnb3RKGin4FYM/orgq0qde+nc15E5Cbqg4B9Sx9c= github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= +github.com/klauspost/cpuid v0.0.0-20170728055534-ae7887de9fa5 h1:2U0HzY8BJ8hVwDKIzp7y4voR9CX/nvcfymLmg2UiOio= github.com/klauspost/cpuid v0.0.0-20170728055534-ae7887de9fa5/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/klauspost/cpuid/v2 v2.2.5 h1:0E5MSMDEoAulmXNFquVs//DdoomxaoTY1kUhbc/qbZg= @@ -949,8 +950,8 @@ github.com/osmosis-labs/go-mutesting v0.0.0-20221208041716-b43bcd97b3b3 h1:Ylmch github.com/osmosis-labs/go-mutesting v0.0.0-20221208041716-b43bcd97b3b3/go.mod h1:lV6KnqXYD/ayTe7310MHtM3I2q8Z6bBfMAi+bhwPYtI= github.com/osmosis-labs/osmosis/osmomath v0.0.3-dev.0.20230629191111-f375469de8b6 h1:Kmkx5Rh72+LB8AL6dc6fZA+IVR0INu0YIiMF2ScDhaQ= github.com/osmosis-labs/osmosis/osmomath v0.0.3-dev.0.20230629191111-f375469de8b6/go.mod h1:JTym95/bqrSnG5MPcXr1YDhv43JdCeo3p+iDbazoX68= -github.com/osmosis-labs/osmosis/osmoutils v0.0.0-20230623115558-38aaab07d343 h1:7V2b3+mSnLnK0Px+Dl3vnxAQgk4SV8e9ohfJ/tKsq0M= -github.com/osmosis-labs/osmosis/osmoutils v0.0.0-20230623115558-38aaab07d343/go.mod h1:FqFOfj9+e5S1I7hR3baGUHrqje3g32EOHAXoOf7R00M= +github.com/osmosis-labs/osmosis/osmoutils v0.0.0-20230707090006-b6208c31b7fb h1:CwsxWye+lATxmPJpx4f1VmKjXOBbB6LjtiVJxTaUc/U= +github.com/osmosis-labs/osmosis/osmoutils v0.0.0-20230707090006-b6208c31b7fb/go.mod h1:Pl8Nzx6O6ow/+aqfMoMSz4hX+zz6RrnDYsooptECGxM= github.com/osmosis-labs/osmosis/x/epochs v0.0.0-20230328024000-175ec88e4304 h1:RIrWLzIiZN5Xd2JOfSOtGZaf6V3qEQYg6EaDTAkMnCo= github.com/osmosis-labs/osmosis/x/epochs v0.0.0-20230328024000-175ec88e4304/go.mod h1:yPWoJTj5RKrXKUChAicp+G/4Ni/uVEpp27mi/FF/L9c= github.com/osmosis-labs/osmosis/x/ibc-hooks v0.0.0-20230707090006-b6208c31b7fb h1:gWkGbhccLQ9d0ZqYNELO+RexFFCoBg2TPfDtoGhbW6U= From 36ab0d66d05bbf65b613e36c90f2390b4bcb1bde Mon Sep 17 00:00:00 2001 From: Nicolas Lara Date: Mon, 17 Jul 2023 14:31:39 +0200 Subject: [PATCH 25/31] updated osmoutils and ibc-hooks after merge --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 651e60c896c..42a513dc975 100644 --- a/go.mod +++ b/go.mod @@ -21,9 +21,9 @@ require ( github.com/ory/dockertest/v3 v3.10.0 github.com/osmosis-labs/go-mutesting v0.0.0-20221208041716-b43bcd97b3b3 github.com/osmosis-labs/osmosis/osmomath v0.0.3-dev.0.20230629191111-f375469de8b6 - github.com/osmosis-labs/osmosis/osmoutils v0.0.0-20230709024311-81c831b050de + github.com/osmosis-labs/osmosis/osmoutils v0.0.0-20230717123101-c28fbec0b19b github.com/osmosis-labs/osmosis/x/epochs v0.0.0-20230328024000-175ec88e4304 - github.com/osmosis-labs/osmosis/x/ibc-hooks v0.0.0-20230707090006-b6208c31b7fb + github.com/osmosis-labs/osmosis/x/ibc-hooks v0.0.0-20230717123101-c28fbec0b19b github.com/pkg/errors v0.9.1 github.com/rakyll/statik v0.1.7 github.com/spf13/cast v1.5.1 diff --git a/go.sum b/go.sum index 817de4d66f0..50f5977f80d 100644 --- a/go.sum +++ b/go.sum @@ -950,12 +950,12 @@ github.com/osmosis-labs/go-mutesting v0.0.0-20221208041716-b43bcd97b3b3 h1:Ylmch github.com/osmosis-labs/go-mutesting v0.0.0-20221208041716-b43bcd97b3b3/go.mod h1:lV6KnqXYD/ayTe7310MHtM3I2q8Z6bBfMAi+bhwPYtI= github.com/osmosis-labs/osmosis/osmomath v0.0.3-dev.0.20230629191111-f375469de8b6 h1:Kmkx5Rh72+LB8AL6dc6fZA+IVR0INu0YIiMF2ScDhaQ= github.com/osmosis-labs/osmosis/osmomath v0.0.3-dev.0.20230629191111-f375469de8b6/go.mod h1:JTym95/bqrSnG5MPcXr1YDhv43JdCeo3p+iDbazoX68= -github.com/osmosis-labs/osmosis/osmoutils v0.0.0-20230709024311-81c831b050de h1:W2lMduMgpNA5zheEIIialw08n1pWJ44Y4t2F924tpDU= -github.com/osmosis-labs/osmosis/osmoutils v0.0.0-20230709024311-81c831b050de/go.mod h1:Pl8Nzx6O6ow/+aqfMoMSz4hX+zz6RrnDYsooptECGxM= +github.com/osmosis-labs/osmosis/osmoutils v0.0.0-20230717123101-c28fbec0b19b h1:sfhra8bqYR1X/U6HoTMbjN5xQ476bXjNC1awYCa8at4= +github.com/osmosis-labs/osmosis/osmoutils v0.0.0-20230717123101-c28fbec0b19b/go.mod h1:Pl8Nzx6O6ow/+aqfMoMSz4hX+zz6RrnDYsooptECGxM= github.com/osmosis-labs/osmosis/x/epochs v0.0.0-20230328024000-175ec88e4304 h1:RIrWLzIiZN5Xd2JOfSOtGZaf6V3qEQYg6EaDTAkMnCo= github.com/osmosis-labs/osmosis/x/epochs v0.0.0-20230328024000-175ec88e4304/go.mod h1:yPWoJTj5RKrXKUChAicp+G/4Ni/uVEpp27mi/FF/L9c= -github.com/osmosis-labs/osmosis/x/ibc-hooks v0.0.0-20230707090006-b6208c31b7fb h1:gWkGbhccLQ9d0ZqYNELO+RexFFCoBg2TPfDtoGhbW6U= -github.com/osmosis-labs/osmosis/x/ibc-hooks v0.0.0-20230707090006-b6208c31b7fb/go.mod h1:sR0lpev9mcm9/9RY50T1og3UC3WpZAsINh/OmgrmFlg= +github.com/osmosis-labs/osmosis/x/ibc-hooks v0.0.0-20230717123101-c28fbec0b19b h1:TFRJCgCjnXCB7/5kC+RttfFwnEQzR5aNnjpXTDFTfcI= +github.com/osmosis-labs/osmosis/x/ibc-hooks v0.0.0-20230717123101-c28fbec0b19b/go.mod h1:sR0lpev9mcm9/9RY50T1og3UC3WpZAsINh/OmgrmFlg= github.com/osmosis-labs/wasmd v0.31.0-osmo-v16 h1:X747cZYdnqc/+RV48iPVeGprpVb/fUWSaKGsZUWrdbg= github.com/osmosis-labs/wasmd v0.31.0-osmo-v16/go.mod h1:Rf8zW/GgBQyFRRB4s62VQHWA6sTlMFSjoDQQpoq64iI= github.com/otiai10/copy v1.2.0/go.mod h1:rrF5dJ5F0t/EWSYODDu4j9/vEeYHMkc8jt0zJChqQWw= From 325906e15fef4fdb2a097e1f26d7fd8ed85441f6 Mon Sep 17 00:00:00 2001 From: Adam Tucker Date: Mon, 7 Aug 2023 13:17:34 -0500 Subject: [PATCH 26/31] merge main --- proto/osmosis/ibc-hooks/genesis.proto | 2 +- proto/osmosis/ibc-hooks/params.proto | 2 +- proto/osmosis/ibc-hooks/tx.proto | 2 +- tests/cl-genesis-positions/convert.go | 14 +++++++------- .../edit_localosmosis_genesis.go | 10 +++++----- tests/cl-go-client/main.go | 14 +++++++------- tests/ibc-hooks/async_acks_test.go | 6 ++++-- 7 files changed, 26 insertions(+), 24 deletions(-) diff --git a/proto/osmosis/ibc-hooks/genesis.proto b/proto/osmosis/ibc-hooks/genesis.proto index 3c0f9cc588f..435af285cac 100644 --- a/proto/osmosis/ibc-hooks/genesis.proto +++ b/proto/osmosis/ibc-hooks/genesis.proto @@ -5,6 +5,6 @@ import "gogoproto/gogo.proto"; import "cosmos_proto/cosmos.proto"; import "osmosis/ibc-hooks/params.proto"; -option go_package = "github.com/osmosis-labs/osmosis/v16/x/ibc-hooks/types"; +option go_package = "github.com/osmosis-labs/osmosis/v17/x/ibc-hooks/types"; message GenesisState { Params params = 1 [ (gogoproto.nullable) = false ]; } diff --git a/proto/osmosis/ibc-hooks/params.proto b/proto/osmosis/ibc-hooks/params.proto index 7b8dfca492a..6ca3974c304 100644 --- a/proto/osmosis/ibc-hooks/params.proto +++ b/proto/osmosis/ibc-hooks/params.proto @@ -5,7 +5,7 @@ import "gogoproto/gogo.proto"; import "cosmos_proto/cosmos.proto"; import "google/protobuf/duration.proto"; -option go_package = "github.com/osmosis-labs/osmosis/v16/x/ibc-hooks/types"; +option go_package = "github.com/osmosis-labs/osmosis/v17/x/ibc-hooks/types"; message Params { repeated string allowed_async_ack_contracts = 1 diff --git a/proto/osmosis/ibc-hooks/tx.proto b/proto/osmosis/ibc-hooks/tx.proto index db62af2bc6d..0ec7c398587 100644 --- a/proto/osmosis/ibc-hooks/tx.proto +++ b/proto/osmosis/ibc-hooks/tx.proto @@ -3,7 +3,7 @@ package osmosis.ibchooks; import "gogoproto/gogo.proto"; -option go_package = "github.com/osmosis-labs/osmosis/v16/x/ibc-hooks/types"; +option go_package = "github.com/osmosis-labs/osmosis/v17/x/ibc-hooks/types"; // Msg defines the Msg service. service Msg { diff --git a/tests/cl-genesis-positions/convert.go b/tests/cl-genesis-positions/convert.go index 96e1fc047ea..ecf0b8311e2 100644 --- a/tests/cl-genesis-positions/convert.go +++ b/tests/cl-genesis-positions/convert.go @@ -13,13 +13,13 @@ import ( "github.com/osmosis-labs/osmosis/osmomath" "github.com/osmosis-labs/osmosis/osmoutils/accum" - "github.com/osmosis-labs/osmosis/v16/app" - "github.com/osmosis-labs/osmosis/v16/app/apptesting" - cl "github.com/osmosis-labs/osmosis/v16/x/concentrated-liquidity" - "github.com/osmosis-labs/osmosis/v16/x/concentrated-liquidity/math" - "github.com/osmosis-labs/osmosis/v16/x/concentrated-liquidity/model" - cltypes "github.com/osmosis-labs/osmosis/v16/x/concentrated-liquidity/types" - clgenesis "github.com/osmosis-labs/osmosis/v16/x/concentrated-liquidity/types/genesis" + "github.com/osmosis-labs/osmosis/v17/app" + "github.com/osmosis-labs/osmosis/v17/app/apptesting" + cl "github.com/osmosis-labs/osmosis/v17/x/concentrated-liquidity" + "github.com/osmosis-labs/osmosis/v17/x/concentrated-liquidity/math" + "github.com/osmosis-labs/osmosis/v17/x/concentrated-liquidity/model" + cltypes "github.com/osmosis-labs/osmosis/v17/x/concentrated-liquidity/types" + clgenesis "github.com/osmosis-labs/osmosis/v17/x/concentrated-liquidity/types/genesis" ) type BigBangPositions struct { diff --git a/tests/cl-genesis-positions/edit_localosmosis_genesis.go b/tests/cl-genesis-positions/edit_localosmosis_genesis.go index 42d6d732121..1705afb1546 100644 --- a/tests/cl-genesis-positions/edit_localosmosis_genesis.go +++ b/tests/cl-genesis-positions/edit_localosmosis_genesis.go @@ -16,12 +16,12 @@ import ( banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - osmosisApp "github.com/osmosis-labs/osmosis/v16/app" - "github.com/osmosis-labs/osmosis/v16/x/concentrated-liquidity/model" + osmosisApp "github.com/osmosis-labs/osmosis/v17/app" + "github.com/osmosis-labs/osmosis/v17/x/concentrated-liquidity/model" - cltypes "github.com/osmosis-labs/osmosis/v16/x/concentrated-liquidity/types" - clgenesis "github.com/osmosis-labs/osmosis/v16/x/concentrated-liquidity/types/genesis" - poolmanagertypes "github.com/osmosis-labs/osmosis/v16/x/poolmanager/types" + cltypes "github.com/osmosis-labs/osmosis/v17/x/concentrated-liquidity/types" + clgenesis "github.com/osmosis-labs/osmosis/v17/x/concentrated-liquidity/types/genesis" + poolmanagertypes "github.com/osmosis-labs/osmosis/v17/x/poolmanager/types" ) func EditLocalOsmosisGenesis(updatedCLGenesis *clgenesis.GenesisState, updatedBankGenesis *banktypes.GenesisState) { diff --git a/tests/cl-go-client/main.go b/tests/cl-go-client/main.go index 29b32552132..5e2e309c914 100644 --- a/tests/cl-go-client/main.go +++ b/tests/cl-go-client/main.go @@ -18,13 +18,13 @@ import ( "github.com/ignite/cli/ignite/pkg/cosmosclient" "github.com/osmosis-labs/osmosis/osmoutils" - clqueryproto "github.com/osmosis-labs/osmosis/v16/x/concentrated-liquidity/client/queryproto" - "github.com/osmosis-labs/osmosis/v16/x/concentrated-liquidity/model" - cltypes "github.com/osmosis-labs/osmosis/v16/x/concentrated-liquidity/types" - incentivestypes "github.com/osmosis-labs/osmosis/v16/x/incentives/types" - lockuptypes "github.com/osmosis-labs/osmosis/v16/x/lockup/types" - poolmanagerqueryproto "github.com/osmosis-labs/osmosis/v16/x/poolmanager/client/queryproto" - poolmanagertypes "github.com/osmosis-labs/osmosis/v16/x/poolmanager/types" + clqueryproto "github.com/osmosis-labs/osmosis/v17/x/concentrated-liquidity/client/queryproto" + "github.com/osmosis-labs/osmosis/v17/x/concentrated-liquidity/model" + cltypes "github.com/osmosis-labs/osmosis/v17/x/concentrated-liquidity/types" + incentivestypes "github.com/osmosis-labs/osmosis/v17/x/incentives/types" + lockuptypes "github.com/osmosis-labs/osmosis/v17/x/lockup/types" + poolmanagerqueryproto "github.com/osmosis-labs/osmosis/v17/x/poolmanager/client/queryproto" + poolmanagertypes "github.com/osmosis-labs/osmosis/v17/x/poolmanager/types" epochstypes "github.com/osmosis-labs/osmosis/x/epochs/types" ) diff --git a/tests/ibc-hooks/async_acks_test.go b/tests/ibc-hooks/async_acks_test.go index a9ba669a3fb..935ae6f0c1a 100644 --- a/tests/ibc-hooks/async_acks_test.go +++ b/tests/ibc-hooks/async_acks_test.go @@ -4,14 +4,16 @@ import ( "encoding/base64" "encoding/json" "fmt" + wasmkeeper "github.com/CosmWasm/wasmd/x/wasm/keeper" sdk "github.com/cosmos/cosmos-sdk/types" channeltypes "github.com/cosmos/ibc-go/v4/modules/core/04-channel/types" ibctesting "github.com/cosmos/ibc-go/v4/testing" + "github.com/tidwall/gjson" + "github.com/osmosis-labs/osmosis/osmoutils" - "github.com/osmosis-labs/osmosis/v16/app" + "github.com/osmosis-labs/osmosis/v17/app" "github.com/osmosis-labs/osmosis/x/ibc-hooks/types" - "github.com/tidwall/gjson" ) func (suite *HooksTestSuite) forceContractToEmitAckForPacket(osmosisApp *app.OsmosisApp, ctx sdk.Context, contractAddr sdk.AccAddress, packet channeltypes.Packet, success bool) ([]byte, error) { From 01fa42dab79629d825b5ce9633bebf60633b5bf5 Mon Sep 17 00:00:00 2001 From: Adam Tucker Date: Mon, 7 Aug 2023 13:25:38 -0500 Subject: [PATCH 27/31] regen proto --- x/ibc-hooks/types/genesis.pb.go | 4 ++-- x/ibc-hooks/types/params.pb.go | 4 ++-- x/ibc-hooks/types/tx.pb.go | 42 ++++++++++++++++----------------- 3 files changed, 25 insertions(+), 25 deletions(-) diff --git a/x/ibc-hooks/types/genesis.pb.go b/x/ibc-hooks/types/genesis.pb.go index afa4621adfc..51b10276c82 100644 --- a/x/ibc-hooks/types/genesis.pb.go +++ b/x/ibc-hooks/types/genesis.pb.go @@ -87,8 +87,8 @@ var fileDescriptor_a335b3a5deaed556 = []byte{ 0x50, 0xd5, 0x4e, 0xfe, 0x27, 0x1e, 0xc9, 0x31, 0x5e, 0x78, 0x24, 0xc7, 0xf8, 0xe0, 0x91, 0x1c, 0xe3, 0x84, 0xc7, 0x72, 0x0c, 0x17, 0x1e, 0xcb, 0x31, 0xdc, 0x78, 0x2c, 0xc7, 0x10, 0x65, 0x9a, 0x9e, 0x59, 0x92, 0x51, 0x9a, 0xa4, 0x97, 0x9c, 0x9f, 0xab, 0x0f, 0x35, 0x4b, 0x37, 0x27, 0x31, - 0xa9, 0x18, 0xc6, 0xd1, 0x2f, 0x33, 0x34, 0xd3, 0xaf, 0x40, 0x72, 0x5f, 0x49, 0x65, 0x41, 0x6a, - 0x71, 0x12, 0x1b, 0xd8, 0x7d, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0xd5, 0x7c, 0xa6, 0xe8, + 0xa9, 0x18, 0xc6, 0xd1, 0x2f, 0x33, 0x34, 0xd7, 0xaf, 0x40, 0x72, 0x5f, 0x49, 0x65, 0x41, 0x6a, + 0x71, 0x12, 0x1b, 0xd8, 0x7d, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0x94, 0x67, 0x2a, 0x86, 0x25, 0x01, 0x00, 0x00, } diff --git a/x/ibc-hooks/types/params.pb.go b/x/ibc-hooks/types/params.pb.go index 77fdf77d008..6ab409300d2 100644 --- a/x/ibc-hooks/types/params.pb.go +++ b/x/ibc-hooks/types/params.pb.go @@ -91,8 +91,8 @@ var fileDescriptor_a8a3c4779e5e4552 = []byte{ 0x92, 0x63, 0xbc, 0xf0, 0x48, 0x8e, 0xf1, 0xc1, 0x23, 0x39, 0xc6, 0x09, 0x8f, 0xe5, 0x18, 0x2e, 0x3c, 0x96, 0x63, 0xb8, 0xf1, 0x58, 0x8e, 0x21, 0xca, 0x34, 0x3d, 0xb3, 0x24, 0xa3, 0x34, 0x49, 0x2f, 0x39, 0x3f, 0x57, 0x1f, 0xea, 0x71, 0xdd, 0x9c, 0xc4, 0xa4, 0x62, 0x18, 0x47, 0xbf, 0xcc, - 0xd0, 0x4c, 0xbf, 0x02, 0x29, 0xac, 0x4a, 0x2a, 0x0b, 0x52, 0x8b, 0x93, 0xd8, 0xc0, 0x1e, 0x31, - 0x06, 0x04, 0x00, 0x00, 0xff, 0xff, 0x15, 0xae, 0x4e, 0xb5, 0x4d, 0x01, 0x00, 0x00, + 0xd0, 0x5c, 0xbf, 0x02, 0x29, 0xac, 0x4a, 0x2a, 0x0b, 0x52, 0x8b, 0x93, 0xd8, 0xc0, 0x1e, 0x31, + 0x06, 0x04, 0x00, 0x00, 0xff, 0xff, 0x54, 0xb5, 0xc2, 0xdb, 0x4d, 0x01, 0x00, 0x00, } func (m *Params) Marshal() (dAtA []byte, err error) { diff --git a/x/ibc-hooks/types/tx.pb.go b/x/ibc-hooks/types/tx.pb.go index a8ae462fff5..ba689b967dc 100644 --- a/x/ibc-hooks/types/tx.pb.go +++ b/x/ibc-hooks/types/tx.pb.go @@ -151,27 +151,27 @@ var fileDescriptor_93268c51ed820a58 = []byte{ // 367 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x92, 0xcf, 0x4a, 0x2b, 0x31, 0x14, 0xc6, 0x9b, 0xdb, 0x4b, 0xcb, 0x0d, 0xb4, 0xf7, 0xde, 0x41, 0xa5, 0xcc, 0x62, 0xa6, 0x64, - 0x63, 0x45, 0x3b, 0x83, 0x8a, 0x2e, 0xdc, 0x75, 0x8a, 0x0b, 0x17, 0x45, 0x88, 0xe0, 0x42, 0x90, - 0x32, 0x89, 0x61, 0x1a, 0xe6, 0x4f, 0xc6, 0x49, 0x2a, 0xed, 0x23, 0xb8, 0xf3, 0x45, 0x7c, 0x0f, - 0x97, 0x5d, 0xba, 0x2a, 0xd2, 0xbe, 0x41, 0x9f, 0x40, 0x3a, 0x93, 0x81, 0xb6, 0x1b, 0x77, 0xc9, - 0xf7, 0xfd, 0x4e, 0xf2, 0x9d, 0x93, 0x40, 0x53, 0xc8, 0x58, 0x48, 0x2e, 0x5d, 0x4e, 0x68, 0x77, - 0x24, 0x44, 0x28, 0x5d, 0x35, 0x71, 0xd2, 0x4c, 0x28, 0x61, 0xfc, 0xd3, 0x9e, 0xc3, 0x09, 0xcd, - 0x2d, 0x73, 0x2f, 0x10, 0x81, 0xc8, 0x4d, 0x77, 0xbd, 0x2a, 0x38, 0xf4, 0x0e, 0x60, 0x63, 0x20, - 0x83, 0xeb, 0x98, 0xab, 0x1b, 0xaf, 0xdf, 0xa3, 0xa1, 0x71, 0x04, 0x6b, 0x92, 0x25, 0x4f, 0x2c, - 0x6b, 0x81, 0x36, 0xe8, 0xfc, 0xf1, 0xfe, 0xaf, 0xe6, 0x76, 0x63, 0xea, 0xc7, 0xd1, 0x15, 0x2a, - 0x74, 0x84, 0x35, 0x60, 0xf4, 0xe1, 0xdf, 0xd4, 0xa7, 0x21, 0x53, 0x43, 0xc9, 0x9e, 0xc7, 0x2c, - 0xa1, 0xac, 0xf5, 0xab, 0x0d, 0x3a, 0xbf, 0x3d, 0x73, 0x35, 0xb7, 0x0f, 0x8a, 0x9a, 0x1d, 0x00, - 0xe1, 0x66, 0xa1, 0xdc, 0x69, 0xc1, 0x38, 0x81, 0x75, 0x3a, 0xf2, 0x93, 0x84, 0x45, 0xad, 0x6a, - 0x7e, 0xa1, 0xb1, 0x9a, 0xdb, 0xcd, 0xa2, 0x58, 0x1b, 0x08, 0x97, 0x08, 0x7a, 0x05, 0x70, 0x7f, - 0x2b, 0x2f, 0x66, 0x32, 0x15, 0x89, 0x64, 0xeb, 0x30, 0x54, 0x24, 0x2a, 0xf3, 0xa9, 0x1a, 0x66, - 0x4c, 0x8e, 0x23, 0xa5, 0x1b, 0xd8, 0x08, 0xb3, 0x03, 0x20, 0xdc, 0x2c, 0x15, 0x9c, 0x0b, 0xc6, - 0x31, 0xac, 0x73, 0x42, 0x87, 0x3e, 0x0d, 0xf3, 0x4e, 0xb6, 0xc2, 0x68, 0x03, 0xe1, 0x1a, 0x27, - 0xb4, 0x47, 0xc3, 0xb3, 0x47, 0x58, 0x1d, 0xc8, 0xc0, 0xb8, 0x87, 0x70, 0x63, 0x7c, 0xb6, 0xb3, - 0x3b, 0x79, 0x67, 0x2b, 0xaf, 0x79, 0xf8, 0x03, 0x50, 0x36, 0xe4, 0xdd, 0x7e, 0x2c, 0x2c, 0x30, - 0x5b, 0x58, 0xe0, 0x6b, 0x61, 0x81, 0xb7, 0xa5, 0x55, 0x99, 0x2d, 0xad, 0xca, 0xe7, 0xd2, 0xaa, - 0x3c, 0x5c, 0x04, 0x5c, 0x8d, 0xc6, 0xc4, 0xa1, 0x22, 0x76, 0xf5, 0x61, 0xdd, 0xc8, 0x27, 0xb2, - 0xdc, 0xb8, 0x2f, 0xa7, 0x97, 0xee, 0x64, 0xf3, 0x5b, 0x4c, 0x53, 0x26, 0x49, 0x2d, 0x7f, 0xf2, - 0xf3, 0xef, 0x00, 0x00, 0x00, 0xff, 0xff, 0x2d, 0xf0, 0xb2, 0x60, 0x38, 0x02, 0x00, 0x00, + 0x63, 0x45, 0x3b, 0x83, 0x8a, 0x08, 0xee, 0x3a, 0xc5, 0x85, 0x8b, 0x22, 0x44, 0x70, 0x21, 0x48, + 0x99, 0xc4, 0x30, 0x0d, 0xf3, 0x27, 0xe3, 0x24, 0x95, 0xf6, 0x11, 0xdc, 0xf9, 0x22, 0xbe, 0x87, + 0xcb, 0x2e, 0x5d, 0x15, 0x69, 0xdf, 0xa0, 0x4f, 0x20, 0x9d, 0xc9, 0x40, 0xdb, 0x8d, 0xbb, 0xe4, + 0xfb, 0x7e, 0x27, 0xf9, 0xce, 0x49, 0xa0, 0x29, 0x64, 0x2c, 0x24, 0x97, 0x2e, 0x27, 0xb4, 0x3b, + 0x12, 0x22, 0x94, 0xae, 0x9a, 0x38, 0x69, 0x26, 0x94, 0x30, 0xfe, 0x69, 0xcf, 0xe1, 0x84, 0xe6, + 0x96, 0xb9, 0x17, 0x88, 0x40, 0xe4, 0xa6, 0xbb, 0x5e, 0x15, 0x1c, 0x7a, 0x07, 0xb0, 0x31, 0x90, + 0xc1, 0x75, 0xcc, 0xd5, 0x8d, 0xd7, 0xef, 0xd1, 0xd0, 0x38, 0x82, 0x35, 0xc9, 0x92, 0x27, 0x96, + 0xb5, 0x40, 0x1b, 0x74, 0xfe, 0x78, 0xff, 0x57, 0x73, 0xbb, 0x31, 0xf5, 0xe3, 0xe8, 0x0a, 0x15, + 0x3a, 0xc2, 0x1a, 0x30, 0xfa, 0xf0, 0x6f, 0xea, 0xd3, 0x90, 0xa9, 0xa1, 0x64, 0xcf, 0x63, 0x96, + 0x50, 0xd6, 0xfa, 0xd5, 0x06, 0x9d, 0xdf, 0x9e, 0xb9, 0x9a, 0xdb, 0x07, 0x45, 0xcd, 0x0e, 0x80, + 0x70, 0xb3, 0x50, 0xee, 0xb4, 0x60, 0x9c, 0xc0, 0x3a, 0x1d, 0xf9, 0x49, 0xc2, 0xa2, 0x56, 0x35, + 0xbf, 0xd0, 0x58, 0xcd, 0xed, 0x66, 0x51, 0xac, 0x0d, 0x84, 0x4b, 0x04, 0xbd, 0x02, 0xb8, 0xbf, + 0x95, 0x17, 0x33, 0x99, 0x8a, 0x44, 0xb2, 0x75, 0x18, 0x2a, 0x12, 0x95, 0xf9, 0x54, 0x0d, 0x33, + 0x26, 0xc7, 0x91, 0xd2, 0x0d, 0x6c, 0x84, 0xd9, 0x01, 0x10, 0x6e, 0x96, 0x0a, 0xce, 0x05, 0xe3, + 0x18, 0xd6, 0x39, 0xa1, 0x43, 0x9f, 0x86, 0x79, 0x27, 0x5b, 0x61, 0xb4, 0x81, 0x70, 0x8d, 0x13, + 0xda, 0xa3, 0xe1, 0xd9, 0x23, 0xac, 0x0e, 0x64, 0x60, 0xdc, 0x43, 0xb8, 0x31, 0x3e, 0xdb, 0xd9, + 0x9d, 0xbc, 0xb3, 0x95, 0xd7, 0x3c, 0xfc, 0x01, 0x28, 0x1b, 0xf2, 0x6e, 0x3f, 0x16, 0x16, 0x98, + 0x2d, 0x2c, 0xf0, 0xb5, 0xb0, 0xc0, 0xdb, 0xd2, 0xaa, 0xcc, 0x96, 0x56, 0xe5, 0x73, 0x69, 0x55, + 0x1e, 0x2e, 0x02, 0xae, 0x46, 0x63, 0xe2, 0x50, 0x11, 0xbb, 0xfa, 0xb0, 0x6e, 0xe4, 0x13, 0x59, + 0x6e, 0xdc, 0x97, 0xd3, 0x4b, 0x77, 0xb2, 0xf9, 0x2d, 0xa6, 0x29, 0x93, 0xa4, 0x96, 0x3f, 0xf9, + 0xf9, 0x77, 0x00, 0x00, 0x00, 0xff, 0xff, 0x6c, 0xeb, 0x3e, 0x0e, 0x38, 0x02, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. From 0ae9d161edc1cc29e7d682fd6e941e47104846b9 Mon Sep 17 00:00:00 2001 From: Adam Tucker Date: Mon, 7 Aug 2023 13:32:20 -0500 Subject: [PATCH 28/31] update osmoutils --- go.mod | 5 +---- go.sum | 21 +++------------------ 2 files changed, 4 insertions(+), 22 deletions(-) diff --git a/go.mod b/go.mod index 22f594aa2c4..c0fb3c734f5 100644 --- a/go.mod +++ b/go.mod @@ -22,7 +22,7 @@ require ( github.com/ory/dockertest/v3 v3.10.0 github.com/osmosis-labs/go-mutesting v0.0.0-20221208041716-b43bcd97b3b3 github.com/osmosis-labs/osmosis/osmomath v0.0.3-dev.0.20230804142026-a81cfe3ddde7 - github.com/osmosis-labs/osmosis/osmoutils v0.0.0-20230804142026-a81cfe3ddde7 + github.com/osmosis-labs/osmosis/osmoutils v0.0.0-20230505120443-447d8f14811f github.com/osmosis-labs/osmosis/x/epochs v0.0.0-20230328024000-175ec88e4304 github.com/osmosis-labs/osmosis/x/ibc-hooks v0.0.6 github.com/pkg/errors v0.9.1 @@ -50,7 +50,6 @@ require ( github.com/Djarvur/go-err113 v0.1.0 // indirect github.com/alingse/asasalint v0.0.11 // indirect github.com/benbjohnson/clock v1.3.0 // indirect - github.com/bytedance/sonic v1.9.1 // indirect github.com/cosmos/gogoproto v1.4.6 // indirect github.com/cosmos/iavl v0.19.5 // indirect github.com/creachadair/taskgroup v0.3.2 // indirect @@ -58,7 +57,6 @@ require ( github.com/docker/distribution v2.8.2+incompatible // indirect github.com/felixge/httpsnoop v1.0.2 // indirect github.com/go-playground/validator/v10 v10.14.0 // indirect - github.com/goccy/go-json v0.10.2 // indirect github.com/gogo/gateway v1.1.0 // indirect github.com/google/btree v1.1.2 // indirect github.com/junk1tm/musttag v0.5.0 // indirect @@ -80,7 +78,6 @@ require ( go.uber.org/atomic v1.10.0 // indirect go.uber.org/goleak v1.1.12 // indirect go.uber.org/zap v1.24.0 // indirect - golang.org/x/arch v0.3.0 // indirect google.golang.org/genproto v0.0.0-20230726155614-23370e0ffb3e // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20230706204954-ccb25ca9f130 // indirect ) diff --git a/go.sum b/go.sum index a57c409861e..7bfa2cb92c9 100644 --- a/go.sum +++ b/go.sum @@ -189,9 +189,6 @@ github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46f github.com/butuzov/ireturn v0.1.1 h1:QvrO2QF2+/Cx1WA/vETCIYBKtRjc30vesdoPUNo1EbY= github.com/butuzov/ireturn v0.1.1/go.mod h1:Wh6Zl3IMtTpaIKbmwzqi6olnM9ptYQxxVacMsOEFPoc= github.com/bwesterb/go-ristretto v1.2.0/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= -github.com/bytedance/sonic v1.5.0/go.mod h1:ED5hyg4y6t3/9Ku1R6dU/4KyJ48DZ4jPhfY1O2AihPM= -github.com/bytedance/sonic v1.9.1 h1:6iJ6NqdoxCDr6mbY8h18oSO+cShGSMRGCEo7F2h0x8s= -github.com/bytedance/sonic v1.9.1/go.mod h1:i736AoUSYt75HyZLoJW9ERYxcy6eaN6h4BZXU064P/U= github.com/c-bata/go-prompt v0.2.2/go.mod h1:VzqtzE2ksDBcdln8G7mk2RX9QyGjH+OVqOCSiVIqS34= github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= @@ -212,9 +209,6 @@ github.com/charithe/durationcheck v0.0.10/go.mod h1:bCWXb7gYRysD1CU3C+u4ceO49LoG github.com/chavacava/garif v0.0.0-20230227094218-b8c73b2037b8 h1:W9o46d2kbNL06lq7UNDPV0zYLzkrde/bjIqO02eoll0= github.com/chavacava/garif v0.0.0-20230227094218-b8c73b2037b8/go.mod h1:gakxgyXaaPkxvLw1XQxNGK4I37ys9iBRzNUx/B7pUCo= github.com/checkpoint-restore/go-criu/v5 v5.3.0/go.mod h1:E/eQpaFtUKGOOSEBZgmKAcn+zUUwWxqcaKZlF54wK8E= -github.com/chenzhuoyu/base64x v0.0.0-20211019084208-fb5309c8db06/go.mod h1:DH46F32mSOjUmXrMHnKwZdA8wcEefY7UVqBKYGjpdQY= -github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 h1:qSGYFH7+jGhDF8vLC+iwCD4WpbV1EBDSzWkJODFLams= -github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311/go.mod h1:b583jCggY9gE99b6G5LEC39OIiVsWj+R97kbl5odCEk= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= @@ -383,7 +377,7 @@ github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeME github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= -github.com/gin-gonic/gin v1.9.1 h1:4idEAncQnU5cB7BeOkPtxjfCSye0AAm1R0RVIqJ+Jmg= +github.com/gin-gonic/gin v1.8.1 h1:4+fr/el88TOO3ewCmQr8cx/CtZ/umlIRIs5M4NTNjf8= github.com/glycerine/go-unsnap-stream v0.0.0-20180323001048-9f0cb55181dd/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE= github.com/glycerine/goconvey v0.0.0-20190410193231-58a59202ab31/go.mod h1:Ogl1Tioa0aV7gstGFO7KhffUsb9M4ydbEbbxpcEDc24= github.com/go-chi/chi/v5 v5.0.0/go.mod h1:BBug9lr0cqtdAhsu6R4AAdvufI0/XBzAQSsUqJpoZOs= @@ -450,7 +444,6 @@ github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6Wezm github.com/gobwas/ws v1.0.2 h1:CoAavW/wd/kulfZmSIBt6p24n4j7tHgNVCjsfHVNUbo= github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU= -github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= @@ -750,10 +743,7 @@ github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYs github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= github.com/klauspost/compress v1.15.11 h1:Lcadnb3RKGin4FYM/orgq0qde+nc15E5Cbqg4B9Sx9c= github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= -github.com/klauspost/cpuid v0.0.0-20170728055534-ae7887de9fa5 h1:2U0HzY8BJ8hVwDKIzp7y4voR9CX/nvcfymLmg2UiOio= github.com/klauspost/cpuid v0.0.0-20170728055534-ae7887de9fa5/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= -github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= -github.com/klauspost/cpuid/v2 v2.2.5 h1:0E5MSMDEoAulmXNFquVs//DdoomxaoTY1kUhbc/qbZg= github.com/klauspost/crc32 v0.0.0-20161016154125-cb6bfca970f6/go.mod h1:+ZoRqAPRLkC4NPOvfYeR5KNOrY6TD+/sAC3HXPZgDYg= github.com/klauspost/pgzip v1.0.2-0.20170402124221-0bf5dcad4ada/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= @@ -953,8 +943,8 @@ github.com/osmosis-labs/go-mutesting v0.0.0-20221208041716-b43bcd97b3b3 h1:Ylmch github.com/osmosis-labs/go-mutesting v0.0.0-20221208041716-b43bcd97b3b3/go.mod h1:lV6KnqXYD/ayTe7310MHtM3I2q8Z6bBfMAi+bhwPYtI= github.com/osmosis-labs/osmosis/osmomath v0.0.3-dev.0.20230804142026-a81cfe3ddde7 h1:NTR4zfrPMP4pJ5T60zyZumBAnTWmTAQX/JSZLGrM9jI= github.com/osmosis-labs/osmosis/osmomath v0.0.3-dev.0.20230804142026-a81cfe3ddde7/go.mod h1:UlftwozB+QObT3o0YfkuuyL9fsVdgoWt0dm6J7MLYnU= -github.com/osmosis-labs/osmosis/osmoutils v0.0.0-20230804142026-a81cfe3ddde7 h1:uwP/LzPE/edqNKf/Tpn8y9L6EO3JHOVwb+zq1gjL1hE= -github.com/osmosis-labs/osmosis/osmoutils v0.0.0-20230804142026-a81cfe3ddde7/go.mod h1:Pl8Nzx6O6ow/+aqfMoMSz4hX+zz6RrnDYsooptECGxM= +github.com/osmosis-labs/osmosis/osmoutils v0.0.0-20230505120443-447d8f14811f h1:eXazuLCKEjXTlciPaSJqtNdSVE+CCiyhgC32p1b30qs= +github.com/osmosis-labs/osmosis/osmoutils v0.0.0-20230505120443-447d8f14811f/go.mod h1:QeqmptMwAREnUtUTL6KbPRY+zjejIZrj3rRz4RScfyM= github.com/osmosis-labs/osmosis/x/epochs v0.0.0-20230328024000-175ec88e4304 h1:RIrWLzIiZN5Xd2JOfSOtGZaf6V3qEQYg6EaDTAkMnCo= github.com/osmosis-labs/osmosis/x/epochs v0.0.0-20230328024000-175ec88e4304/go.mod h1:yPWoJTj5RKrXKUChAicp+G/4Ni/uVEpp27mi/FF/L9c= github.com/osmosis-labs/osmosis/x/ibc-hooks v0.0.6 h1:PjfLL5rwwm44CeLnNQssrFgmj4BdeIS5DriKYhGz7IM= @@ -1222,8 +1212,6 @@ github.com/tommy-muehle/go-mnd/v2 v2.5.1 h1:NowYhSdyE/1zwK9QCLeRb6USWdoif80Ie+v+ github.com/tommy-muehle/go-mnd/v2 v2.5.1/go.mod h1:WsUAkMJMYww6l/ufffCD3m+P7LEvr8TnZn9lwVDlgzw= github.com/ttacon/chalk v0.0.0-20160626202418-22c06c80ed31/go.mod h1:onvgF043R+lC5RZ8IT9rBXDaEDnpnw/Cl+HFiw+v/7Q= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= -github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI= -github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08= github.com/tyler-smith/go-bip39 v1.0.1-0.20181017060643-dbb3b84ba2ef/go.mod h1:sJ5fKU0s6JVwZjjcUEX2zFOnvq0ASQ2K9Zr6cf67kNs= github.com/tyler-smith/go-bip39 v1.0.2/go.mod h1:sJ5fKU0s6JVwZjjcUEX2zFOnvq0ASQ2K9Zr6cf67kNs= github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= @@ -1313,9 +1301,6 @@ go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60= go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg= -golang.org/x/arch v0.0.0-20210923205945-b76863e36670/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8= -golang.org/x/arch v0.3.0 h1:02VY4/ZcO/gBOH6PUaoiptASxtXU10jazRCP865E97k= -golang.org/x/arch v0.3.0/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8= golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= From 16c217dedde5fff0e8c1d93e2d83eeac82a9d236 Mon Sep 17 00:00:00 2001 From: Adam Tucker Date: Mon, 7 Aug 2023 13:36:08 -0500 Subject: [PATCH 29/31] update ibc hooks --- go.mod | 3 +-- go.sum | 5 ++--- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/go.mod b/go.mod index c0fb3c734f5..e4afe7120bb 100644 --- a/go.mod +++ b/go.mod @@ -24,7 +24,7 @@ require ( github.com/osmosis-labs/osmosis/osmomath v0.0.3-dev.0.20230804142026-a81cfe3ddde7 github.com/osmosis-labs/osmosis/osmoutils v0.0.0-20230505120443-447d8f14811f github.com/osmosis-labs/osmosis/x/epochs v0.0.0-20230328024000-175ec88e4304 - github.com/osmosis-labs/osmosis/x/ibc-hooks v0.0.6 + github.com/osmosis-labs/osmosis/x/ibc-hooks v0.0.0-20230505120443-447d8f14811f github.com/pkg/errors v0.9.1 github.com/rakyll/statik v0.1.7 github.com/spf13/cast v1.5.1 @@ -63,7 +63,6 @@ require ( github.com/kkHAIKE/contextcheck v1.1.4 // indirect github.com/maratori/testableexamples v1.0.0 // indirect github.com/nunnatsa/ginkgolinter v0.9.0 // indirect - github.com/nxadm/tail v1.4.8 // indirect github.com/regen-network/cosmos-proto v0.3.1 // indirect github.com/sashamelentyev/interfacebloat v1.1.0 // indirect github.com/sashamelentyev/usestdlibvars v1.23.0 // indirect diff --git a/go.sum b/go.sum index 7bfa2cb92c9..a27c09459b8 100644 --- a/go.sum +++ b/go.sum @@ -897,7 +897,6 @@ github.com/nunnatsa/ginkgolinter v0.9.0 h1:Sm0zX5QfjJzkeCjEp+t6d3Ha0jwvoDjleP9XC github.com/nunnatsa/ginkgolinter v0.9.0/go.mod h1:FHaMLURXP7qImeH6bvxWJUpyH+2tuqe5j4rW1gxJRmI= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= -github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= @@ -947,8 +946,8 @@ github.com/osmosis-labs/osmosis/osmoutils v0.0.0-20230505120443-447d8f14811f h1: github.com/osmosis-labs/osmosis/osmoutils v0.0.0-20230505120443-447d8f14811f/go.mod h1:QeqmptMwAREnUtUTL6KbPRY+zjejIZrj3rRz4RScfyM= github.com/osmosis-labs/osmosis/x/epochs v0.0.0-20230328024000-175ec88e4304 h1:RIrWLzIiZN5Xd2JOfSOtGZaf6V3qEQYg6EaDTAkMnCo= github.com/osmosis-labs/osmosis/x/epochs v0.0.0-20230328024000-175ec88e4304/go.mod h1:yPWoJTj5RKrXKUChAicp+G/4Ni/uVEpp27mi/FF/L9c= -github.com/osmosis-labs/osmosis/x/ibc-hooks v0.0.6 h1:PjfLL5rwwm44CeLnNQssrFgmj4BdeIS5DriKYhGz7IM= -github.com/osmosis-labs/osmosis/x/ibc-hooks v0.0.6/go.mod h1:2Aqs0L6JnMfo+P+It8q7hJsP1YB+Is5DJc4nRSiBF/U= +github.com/osmosis-labs/osmosis/x/ibc-hooks v0.0.0-20230505120443-447d8f14811f h1:GHbnqUSwOiNanFy+4TtOxT1MG+SeYXRn8ilVTlXOUxg= +github.com/osmosis-labs/osmosis/x/ibc-hooks v0.0.0-20230505120443-447d8f14811f/go.mod h1:bm9OrnwxpsZjScIPvMhhzMU97Fh4JktGH+PtircEVbw= github.com/osmosis-labs/wasmd v0.31.0-osmo-v16 h1:X747cZYdnqc/+RV48iPVeGprpVb/fUWSaKGsZUWrdbg= github.com/osmosis-labs/wasmd v0.31.0-osmo-v16/go.mod h1:Rf8zW/GgBQyFRRB4s62VQHWA6sTlMFSjoDQQpoq64iI= github.com/otiai10/copy v1.2.0/go.mod h1:rrF5dJ5F0t/EWSYODDu4j9/vEeYHMkc8jt0zJChqQWw= From bd561324dae758b9832f1e285c6a2f1af9096bf3 Mon Sep 17 00:00:00 2001 From: Adam Tucker Date: Mon, 7 Aug 2023 13:43:49 -0500 Subject: [PATCH 30/31] run go get --- go.mod | 4 ++-- go.sum | 6 ++++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/go.mod b/go.mod index e4afe7120bb..996b22cc319 100644 --- a/go.mod +++ b/go.mod @@ -22,9 +22,9 @@ require ( github.com/ory/dockertest/v3 v3.10.0 github.com/osmosis-labs/go-mutesting v0.0.0-20221208041716-b43bcd97b3b3 github.com/osmosis-labs/osmosis/osmomath v0.0.3-dev.0.20230804142026-a81cfe3ddde7 - github.com/osmosis-labs/osmosis/osmoutils v0.0.0-20230505120443-447d8f14811f + github.com/osmosis-labs/osmosis/osmoutils v0.0.0-20230807183608-16c217dedde5 github.com/osmosis-labs/osmosis/x/epochs v0.0.0-20230328024000-175ec88e4304 - github.com/osmosis-labs/osmosis/x/ibc-hooks v0.0.0-20230505120443-447d8f14811f + github.com/osmosis-labs/osmosis/x/ibc-hooks v0.0.0-20230807183608-16c217dedde5 github.com/pkg/errors v0.9.1 github.com/rakyll/statik v0.1.7 github.com/spf13/cast v1.5.1 diff --git a/go.sum b/go.sum index a27c09459b8..f63f8c4e5b4 100644 --- a/go.sum +++ b/go.sum @@ -944,10 +944,16 @@ github.com/osmosis-labs/osmosis/osmomath v0.0.3-dev.0.20230804142026-a81cfe3ddde github.com/osmosis-labs/osmosis/osmomath v0.0.3-dev.0.20230804142026-a81cfe3ddde7/go.mod h1:UlftwozB+QObT3o0YfkuuyL9fsVdgoWt0dm6J7MLYnU= github.com/osmosis-labs/osmosis/osmoutils v0.0.0-20230505120443-447d8f14811f h1:eXazuLCKEjXTlciPaSJqtNdSVE+CCiyhgC32p1b30qs= github.com/osmosis-labs/osmosis/osmoutils v0.0.0-20230505120443-447d8f14811f/go.mod h1:QeqmptMwAREnUtUTL6KbPRY+zjejIZrj3rRz4RScfyM= +github.com/osmosis-labs/osmosis/osmoutils v0.0.0-20230510161551-8bf252f26bae h1:I1Cy+GpTPWbVi0lBw9+bS1w42YfQjvXNK9bW4YbHhcs= +github.com/osmosis-labs/osmosis/osmoutils v0.0.0-20230510161551-8bf252f26bae/go.mod h1:hk/o9/kmTSZmZqwXcSrPuwj/gpRMCqbE/d3vj6teL2A= +github.com/osmosis-labs/osmosis/osmoutils v0.0.0-20230807183608-16c217dedde5 h1:j4ifxomFROGROHalqWwX7VPDgxOPotMB1GiAWdb03i4= +github.com/osmosis-labs/osmosis/osmoutils v0.0.0-20230807183608-16c217dedde5/go.mod h1:Pl8Nzx6O6ow/+aqfMoMSz4hX+zz6RrnDYsooptECGxM= github.com/osmosis-labs/osmosis/x/epochs v0.0.0-20230328024000-175ec88e4304 h1:RIrWLzIiZN5Xd2JOfSOtGZaf6V3qEQYg6EaDTAkMnCo= github.com/osmosis-labs/osmosis/x/epochs v0.0.0-20230328024000-175ec88e4304/go.mod h1:yPWoJTj5RKrXKUChAicp+G/4Ni/uVEpp27mi/FF/L9c= github.com/osmosis-labs/osmosis/x/ibc-hooks v0.0.0-20230505120443-447d8f14811f h1:GHbnqUSwOiNanFy+4TtOxT1MG+SeYXRn8ilVTlXOUxg= github.com/osmosis-labs/osmosis/x/ibc-hooks v0.0.0-20230505120443-447d8f14811f/go.mod h1:bm9OrnwxpsZjScIPvMhhzMU97Fh4JktGH+PtircEVbw= +github.com/osmosis-labs/osmosis/x/ibc-hooks v0.0.0-20230807183608-16c217dedde5 h1:clEegVniz0zTTBXKfg2oymKa63IYUxcrVXM+LtsvCpA= +github.com/osmosis-labs/osmosis/x/ibc-hooks v0.0.0-20230807183608-16c217dedde5/go.mod h1:sR0lpev9mcm9/9RY50T1og3UC3WpZAsINh/OmgrmFlg= github.com/osmosis-labs/wasmd v0.31.0-osmo-v16 h1:X747cZYdnqc/+RV48iPVeGprpVb/fUWSaKGsZUWrdbg= github.com/osmosis-labs/wasmd v0.31.0-osmo-v16/go.mod h1:Rf8zW/GgBQyFRRB4s62VQHWA6sTlMFSjoDQQpoq64iI= github.com/otiai10/copy v1.2.0/go.mod h1:rrF5dJ5F0t/EWSYODDu4j9/vEeYHMkc8jt0zJChqQWw= From 8f54f666c6d046a9f90ce1e00fe690e8eccd6193 Mon Sep 17 00:00:00 2001 From: Nicolas Lara Date: Mon, 7 Aug 2023 20:58:24 +0200 Subject: [PATCH 31/31] rl bytecode --- x/ibc-rate-limit/bytecode/rate_limiter.wasm | Bin 264325 -> 264433 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/x/ibc-rate-limit/bytecode/rate_limiter.wasm b/x/ibc-rate-limit/bytecode/rate_limiter.wasm index 9dee6eabb6f09a9907e2851a23b2a29075b4be06..30b545e0612d86ee2751dbcfa11595954e0575e5 100644 GIT binary patch delta 4886 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 delta 4926 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 EC%DR;TL1t6