Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
257 changes: 140 additions & 117 deletions modules/ibc-hooks/go.mod

Large diffs are not rendered by default.

1,361 changes: 1,047 additions & 314 deletions modules/ibc-hooks/go.sum

Large diffs are not rendered by default.

38 changes: 19 additions & 19 deletions modules/ibc-hooks/hooks.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,34 +4,34 @@ import (
// external libraries
sdk "github.com/cosmos/cosmos-sdk/types"

capabilitytypes "github.com/cosmos/ibc-go/modules/capability/types"
ibcclienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types"
ibcclienttypes "github.com/cosmos/ibc-go/v10/modules/core/02-client/types"

// ibc-go
channeltypes "github.com/cosmos/ibc-go/v8/modules/core/04-channel/types"
ibcexported "github.com/cosmos/ibc-go/v8/modules/core/exported"
channeltypes "github.com/cosmos/ibc-go/v10/modules/core/04-channel/types"
ibcexported "github.com/cosmos/ibc-go/v10/modules/core/exported"
)

type Hooks interface{}

type OnChanOpenInitOverrideHooks interface {
OnChanOpenInitOverride(im IBCMiddleware, ctx sdk.Context, order channeltypes.Order, connectionHops []string, portID string, channelID string, channelCap *capabilitytypes.Capability, counterparty channeltypes.Counterparty, version string) (string, error)
OnChanOpenInitOverride(im IBCMiddleware, ctx sdk.Context, order channeltypes.Order, connectionHops []string, portID string, channelID string, counterparty channeltypes.Counterparty, version string) (string, error)
}
type OnChanOpenInitBeforeHooks interface {
OnChanOpenInitBeforeHook(ctx sdk.Context, order channeltypes.Order, connectionHops []string, portID string, channelID string, channelCap *capabilitytypes.Capability, counterparty channeltypes.Counterparty, version string)
OnChanOpenInitBeforeHook(ctx sdk.Context, order channeltypes.Order, connectionHops []string, portID string, channelID string, counterparty channeltypes.Counterparty, version string)
}
type OnChanOpenInitAfterHooks interface {
OnChanOpenInitAfterHook(ctx sdk.Context, order channeltypes.Order, connectionHops []string, portID string, channelID string, channelCap *capabilitytypes.Capability, counterparty channeltypes.Counterparty, version string, finalVersion string, err error)
OnChanOpenInitAfterHook(ctx sdk.Context, order channeltypes.Order, connectionHops []string, portID string, channelID string, counterparty channeltypes.Counterparty, version string, finalVersion string, err error)
}

// OnChanOpenTry Hooks
type OnChanOpenTryOverrideHooks interface {
OnChanOpenTryOverride(im IBCMiddleware, ctx sdk.Context, order channeltypes.Order, connectionHops []string, portID, channelID string, channelCap *capabilitytypes.Capability, counterparty channeltypes.Counterparty, counterpartyVersion string) (string, error)
OnChanOpenTryOverride(im IBCMiddleware, ctx sdk.Context, order channeltypes.Order, connectionHops []string, portID, channelID string, counterparty channeltypes.Counterparty, counterpartyVersion string) (string, error)
}
type OnChanOpenTryBeforeHooks interface {
OnChanOpenTryBeforeHook(ctx sdk.Context, order channeltypes.Order, connectionHops []string, portID, channelID string, channelCap *capabilitytypes.Capability, counterparty channeltypes.Counterparty, counterpartyVersion string)
OnChanOpenTryBeforeHook(ctx sdk.Context, order channeltypes.Order, connectionHops []string, portID, channelID string, counterparty channeltypes.Counterparty, counterpartyVersion string)
}
type OnChanOpenTryAfterHooks interface {
OnChanOpenTryAfterHook(ctx sdk.Context, order channeltypes.Order, connectionHops []string, portID, channelID string, channelCap *capabilitytypes.Capability, counterparty channeltypes.Counterparty, counterpartyVersion string, version string, err error)
OnChanOpenTryAfterHook(ctx sdk.Context, order channeltypes.Order, connectionHops []string, portID, channelID string, counterparty channeltypes.Counterparty, counterpartyVersion string, version string, err error)
}

// OnChanOpenAck Hooks
Expand Down Expand Up @@ -80,7 +80,7 @@ type OnChanCloseConfirmAfterHooks interface {

// OnRecvPacket Hooks
type OnRecvPacketOverrideHooks interface {
OnRecvPacketOverride(im IBCMiddleware, ctx sdk.Context, packet channeltypes.Packet, relayer sdk.AccAddress) ibcexported.Acknowledgement
OnRecvPacketOverride(im IBCMiddleware, ctx sdk.Context, channelVersion string, packet channeltypes.Packet, relayer sdk.AccAddress) ibcexported.Acknowledgement
}
type OnRecvPacketBeforeHooks interface {
OnRecvPacketBeforeHook(ctx sdk.Context, packet channeltypes.Packet, relayer sdk.AccAddress)
Expand All @@ -91,7 +91,7 @@ type OnRecvPacketAfterHooks interface {

// OnAcknowledgementPacket Hooks
type OnAcknowledgementPacketOverrideHooks interface {
OnAcknowledgementPacketOverride(im IBCMiddleware, ctx sdk.Context, packet channeltypes.Packet, acknowledgement []byte, relayer sdk.AccAddress) error
OnAcknowledgementPacketOverride(im IBCMiddleware, ctx sdk.Context, channelVersion string, packet channeltypes.Packet, acknowledgement []byte, relayer sdk.AccAddress) error
}
type OnAcknowledgementPacketBeforeHooks interface {
OnAcknowledgementPacketBeforeHook(ctx sdk.Context, packet channeltypes.Packet, acknowledgement []byte, relayer sdk.AccAddress)
Expand All @@ -102,7 +102,7 @@ type OnAcknowledgementPacketAfterHooks interface {

// OnTimeoutPacket Hooks
type OnTimeoutPacketOverrideHooks interface {
OnTimeoutPacketOverride(im IBCMiddleware, ctx sdk.Context, packet channeltypes.Packet, relayer sdk.AccAddress) error
OnTimeoutPacketOverride(im IBCMiddleware, ctx sdk.Context, channelVersion string, packet channeltypes.Packet, relayer sdk.AccAddress) error
}
type OnTimeoutPacketBeforeHooks interface {
OnTimeoutPacketBeforeHook(ctx sdk.Context, packet channeltypes.Packet, relayer sdk.AccAddress)
Expand All @@ -113,24 +113,24 @@ type OnTimeoutPacketAfterHooks interface {

// SendPacket Hooks
type SendPacketOverrideHooks interface {
SendPacketOverride(i ICS4Middleware, ctx sdk.Context, channelCap *capabilitytypes.Capability, sourcePort string, sourceChannel string, timeoutHeight ibcclienttypes.Height, timeoutTimestamp uint64, data []byte) (sequence uint64, err error)
SendPacketOverride(i ICS4Middleware, ctx sdk.Context, sourcePort string, sourceChannel string, timeoutHeight ibcclienttypes.Height, timeoutTimestamp uint64, data []byte) (sequence uint64, err error)
}
type SendPacketBeforeHooks interface {
SendPacketBeforeHook(ctx sdk.Context, chanCap *capabilitytypes.Capability, sourcePort string, sourceChannel string, timeoutHeight ibcclienttypes.Height, timeoutTimestamp uint64, data []byte)
SendPacketBeforeHook(ctx sdk.Context, sourcePort string, sourceChannel string, timeoutHeight ibcclienttypes.Height, timeoutTimestamp uint64, data []byte)
}
type SendPacketAfterHooks interface {
SendPacketAfterHook(ctx sdk.Context, chanCap *capabilitytypes.Capability, sourcePort string, sourceChannel string, timeoutHeight ibcclienttypes.Height, timeoutTimestamp uint64, data []byte, err error)
SendPacketAfterHook(ctx sdk.Context, sourcePort string, sourceChannel string, timeoutHeight ibcclienttypes.Height, timeoutTimestamp uint64, data []byte, err error)
}

// WriteAcknowledgement Hooks
type WriteAcknowledgementOverrideHooks interface {
WriteAcknowledgementOverride(i ICS4Middleware, ctx sdk.Context, chanCap *capabilitytypes.Capability, packet ibcexported.PacketI, ack ibcexported.Acknowledgement) error
WriteAcknowledgementOverride(i ICS4Middleware, ctx sdk.Context, packet ibcexported.PacketI, ack ibcexported.Acknowledgement) error
}
type WriteAcknowledgementBeforeHooks interface {
WriteAcknowledgementBeforeHook(ctx sdk.Context, chanCap *capabilitytypes.Capability, packet ibcexported.PacketI, ack ibcexported.Acknowledgement)
WriteAcknowledgementBeforeHook(ctx sdk.Context, packet ibcexported.PacketI, ack ibcexported.Acknowledgement)
}
type WriteAcknowledgementAfterHooks interface {
WriteAcknowledgementAfterHook(ctx sdk.Context, chanCap *capabilitytypes.Capability, packet ibcexported.PacketI, ack ibcexported.Acknowledgement, err error)
WriteAcknowledgementAfterHook(ctx sdk.Context, packet ibcexported.PacketI, ack ibcexported.Acknowledgement, err error)
}

// GetAppVersion Hooks
Expand Down
49 changes: 24 additions & 25 deletions modules/ibc-hooks/ibc_module.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@ import (
// external libraries
sdk "github.com/cosmos/cosmos-sdk/types"

capabilitytypes "github.com/cosmos/ibc-go/modules/capability/types"
ibcclienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types"
ibcclienttypes "github.com/cosmos/ibc-go/v10/modules/core/02-client/types"

// ibc-go
channeltypes "github.com/cosmos/ibc-go/v8/modules/core/04-channel/types"
porttypes "github.com/cosmos/ibc-go/v8/modules/core/05-port/types"
ibcexported "github.com/cosmos/ibc-go/v8/modules/core/exported"
channeltypes "github.com/cosmos/ibc-go/v10/modules/core/04-channel/types"
porttypes "github.com/cosmos/ibc-go/v10/modules/core/05-port/types"
ibcexported "github.com/cosmos/ibc-go/v10/modules/core/exported"
)

var _ porttypes.Middleware = &IBCMiddleware{}
Expand All @@ -33,22 +33,21 @@ func (im IBCMiddleware) OnChanOpenInit(
connectionHops []string,
portID string,
channelID string,
channelCap *capabilitytypes.Capability,
counterparty channeltypes.Counterparty,
version string,
) (string, error) {
if hook, ok := im.ICS4Middleware.Hooks.(OnChanOpenInitOverrideHooks); ok {
return hook.OnChanOpenInitOverride(im, ctx, order, connectionHops, portID, channelID, channelCap, counterparty, version)
return hook.OnChanOpenInitOverride(im, ctx, order, connectionHops, portID, channelID, counterparty, version)
}

if hook, ok := im.ICS4Middleware.Hooks.(OnChanOpenInitBeforeHooks); ok {
hook.OnChanOpenInitBeforeHook(ctx, order, connectionHops, portID, channelID, channelCap, counterparty, version)
hook.OnChanOpenInitBeforeHook(ctx, order, connectionHops, portID, channelID, counterparty, version)
}

finalVersion, err := im.App.OnChanOpenInit(ctx, order, connectionHops, portID, channelID, channelCap, counterparty, version)
finalVersion, err := im.App.OnChanOpenInit(ctx, order, connectionHops, portID, channelID, counterparty, version)

if hook, ok := im.ICS4Middleware.Hooks.(OnChanOpenInitAfterHooks); ok {
hook.OnChanOpenInitAfterHook(ctx, order, connectionHops, portID, channelID, channelCap, counterparty, version, finalVersion, err)
hook.OnChanOpenInitAfterHook(ctx, order, connectionHops, portID, channelID, counterparty, version, finalVersion, err)
}
return version, err
}
Expand All @@ -60,22 +59,21 @@ func (im IBCMiddleware) OnChanOpenTry(
connectionHops []string,
portID,
channelID string,
channelCap *capabilitytypes.Capability,
counterparty channeltypes.Counterparty,
counterpartyVersion string,
) (string, error) {
if hook, ok := im.ICS4Middleware.Hooks.(OnChanOpenTryOverrideHooks); ok {
return hook.OnChanOpenTryOverride(im, ctx, order, connectionHops, portID, channelID, channelCap, counterparty, counterpartyVersion)
return hook.OnChanOpenTryOverride(im, ctx, order, connectionHops, portID, channelID, counterparty, counterpartyVersion)
}

if hook, ok := im.ICS4Middleware.Hooks.(OnChanOpenTryBeforeHooks); ok {
hook.OnChanOpenTryBeforeHook(ctx, order, connectionHops, portID, channelID, channelCap, counterparty, counterpartyVersion)
hook.OnChanOpenTryBeforeHook(ctx, order, connectionHops, portID, channelID, counterparty, counterpartyVersion)
}

version, err := im.App.OnChanOpenTry(ctx, order, connectionHops, portID, channelID, channelCap, counterparty, counterpartyVersion)
version, err := im.App.OnChanOpenTry(ctx, order, connectionHops, portID, channelID, counterparty, counterpartyVersion)

if hook, ok := im.ICS4Middleware.Hooks.(OnChanOpenTryAfterHooks); ok {
hook.OnChanOpenTryAfterHook(ctx, order, connectionHops, portID, channelID, channelCap, counterparty, counterpartyVersion, version, err)
hook.OnChanOpenTryAfterHook(ctx, order, connectionHops, portID, channelID, counterparty, counterpartyVersion, version, err)
}
return version, err
}
Expand Down Expand Up @@ -170,18 +168,19 @@ func (im IBCMiddleware) OnChanCloseConfirm(
// OnRecvPacket implements the IBCMiddleware interface
func (im IBCMiddleware) OnRecvPacket(
ctx sdk.Context,
channelVersion string,
packet channeltypes.Packet,
relayer sdk.AccAddress,
) ibcexported.Acknowledgement {
if hook, ok := im.ICS4Middleware.Hooks.(OnRecvPacketOverrideHooks); ok {
return hook.OnRecvPacketOverride(im, ctx, packet, relayer)
return hook.OnRecvPacketOverride(im, ctx, channelVersion, packet, relayer)
}

if hook, ok := im.ICS4Middleware.Hooks.(OnRecvPacketBeforeHooks); ok {
hook.OnRecvPacketBeforeHook(ctx, packet, relayer)
}

ack := im.App.OnRecvPacket(ctx, packet, relayer)
ack := im.App.OnRecvPacket(ctx, channelVersion, packet, relayer)

if hook, ok := im.ICS4Middleware.Hooks.(OnRecvPacketAfterHooks); ok {
hook.OnRecvPacketAfterHook(ctx, packet, relayer, ack)
Expand All @@ -193,18 +192,19 @@ func (im IBCMiddleware) OnRecvPacket(
// OnAcknowledgementPacket implements the IBCMiddleware interface
func (im IBCMiddleware) OnAcknowledgementPacket(
ctx sdk.Context,
channelVersion string,
packet channeltypes.Packet,
acknowledgement []byte,
relayer sdk.AccAddress,
) error {
if hook, ok := im.ICS4Middleware.Hooks.(OnAcknowledgementPacketOverrideHooks); ok {
return hook.OnAcknowledgementPacketOverride(im, ctx, packet, acknowledgement, relayer)
return hook.OnAcknowledgementPacketOverride(im, ctx, channelVersion, packet, acknowledgement, relayer)
}
if hook, ok := im.ICS4Middleware.Hooks.(OnAcknowledgementPacketBeforeHooks); ok {
hook.OnAcknowledgementPacketBeforeHook(ctx, packet, acknowledgement, relayer)
}

err := im.App.OnAcknowledgementPacket(ctx, packet, acknowledgement, relayer)
err := im.App.OnAcknowledgementPacket(ctx, channelVersion, packet, acknowledgement, relayer)

if hook, ok := im.ICS4Middleware.Hooks.(OnAcknowledgementPacketAfterHooks); ok {
hook.OnAcknowledgementPacketAfterHook(ctx, packet, acknowledgement, relayer, err)
Expand All @@ -216,17 +216,18 @@ func (im IBCMiddleware) OnAcknowledgementPacket(
// OnTimeoutPacket implements the IBCMiddleware interface
func (im IBCMiddleware) OnTimeoutPacket(
ctx sdk.Context,
channelVersion string,
packet channeltypes.Packet,
relayer sdk.AccAddress,
) error {
if hook, ok := im.ICS4Middleware.Hooks.(OnTimeoutPacketOverrideHooks); ok {
return hook.OnTimeoutPacketOverride(im, ctx, packet, relayer)
return hook.OnTimeoutPacketOverride(im, ctx, channelVersion, packet, relayer)
}

if hook, ok := im.ICS4Middleware.Hooks.(OnTimeoutPacketBeforeHooks); ok {
hook.OnTimeoutPacketBeforeHook(ctx, packet, relayer)
}
err := im.App.OnTimeoutPacket(ctx, packet, relayer)
err := im.App.OnTimeoutPacket(ctx, channelVersion, packet, relayer)
if hook, ok := im.ICS4Middleware.Hooks.(OnTimeoutPacketAfterHooks); ok {
hook.OnTimeoutPacketAfterHook(ctx, packet, relayer, err)
}
Expand All @@ -237,24 +238,22 @@ func (im IBCMiddleware) OnTimeoutPacket(
// SendPacket implements the ICS4 Wrapper interface
func (im IBCMiddleware) SendPacket(
ctx sdk.Context,
chanCap *capabilitytypes.Capability,
sourcePort string,
sourceChannel string,
timeoutHeight ibcclienttypes.Height,
timeoutTimestamp uint64,
data []byte,
) (sequence uint64, err error) {
return im.ICS4Middleware.SendPacket(ctx, chanCap, sourcePort, sourceChannel, timeoutHeight, timeoutTimestamp, data)
return im.ICS4Middleware.SendPacket(ctx, sourcePort, sourceChannel, timeoutHeight, timeoutTimestamp, data)
}

// WriteAcknowledgement implements the ICS4 Wrapper interface
func (im IBCMiddleware) WriteAcknowledgement(
ctx sdk.Context,
chanCap *capabilitytypes.Capability,
packet ibcexported.PacketI,
ack ibcexported.Acknowledgement,
) error {
return im.ICS4Middleware.WriteAcknowledgement(ctx, chanCap, packet, ack)
return im.ICS4Middleware.WriteAcknowledgement(ctx, packet, ack)
}

func (im IBCMiddleware) GetAppVersion(ctx sdk.Context, portID, channelID string) (string, bool) {
Expand Down
28 changes: 14 additions & 14 deletions modules/ibc-hooks/ics4_middleware.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@ import (
// external libraries
sdk "github.com/cosmos/cosmos-sdk/types"

capabilitytypes "github.com/cosmos/ibc-go/modules/capability/types"
ibcclienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types"
ibcclienttypes "github.com/cosmos/ibc-go/v10/modules/core/02-client/types"

// ibc-go
porttypes "github.com/cosmos/ibc-go/v8/modules/core/05-port/types"
ibcexported "github.com/cosmos/ibc-go/v8/modules/core/exported"
porttypes "github.com/cosmos/ibc-go/v10/modules/core/05-port/types"
ibcexported "github.com/cosmos/ibc-go/v10/modules/core/exported"
)

var _ porttypes.ICS4Wrapper = &ICS4Middleware{}
Expand All @@ -27,35 +27,35 @@ func NewICS4Middleware(channel porttypes.ICS4Wrapper, hooks Hooks) ICS4Middlewar
}
}

func (i ICS4Middleware) SendPacket(ctx sdk.Context, channelCap *capabilitytypes.Capability, sourcePort string, sourceChannel string, timeoutHeight ibcclienttypes.Height, timeoutTimestamp uint64, data []byte) (sequence uint64, err error) {
func (i ICS4Middleware) SendPacket(ctx sdk.Context, sourcePort string, sourceChannel string, timeoutHeight ibcclienttypes.Height, timeoutTimestamp uint64, data []byte) (sequence uint64, err error) {
if hook, ok := i.Hooks.(SendPacketOverrideHooks); ok {
return hook.SendPacketOverride(i, ctx, channelCap, sourcePort, sourceChannel, timeoutHeight, timeoutTimestamp, data)
return hook.SendPacketOverride(i, ctx, sourcePort, sourceChannel, timeoutHeight, timeoutTimestamp, data)
}

if hook, ok := i.Hooks.(SendPacketBeforeHooks); ok {
hook.SendPacketBeforeHook(ctx, channelCap, sourcePort, sourceChannel, timeoutHeight, timeoutTimestamp, data)
hook.SendPacketBeforeHook(ctx, sourcePort, sourceChannel, timeoutHeight, timeoutTimestamp, data)
}

seq, err := i.channel.SendPacket(ctx, channelCap, sourcePort, sourceChannel, timeoutHeight, timeoutTimestamp, data)
seq, err := i.channel.SendPacket(ctx, sourcePort, sourceChannel, timeoutHeight, timeoutTimestamp, data)

if hook, ok := i.Hooks.(SendPacketAfterHooks); ok {
hook.SendPacketAfterHook(ctx, channelCap, sourcePort, sourceChannel, timeoutHeight, timeoutTimestamp, data, err)
hook.SendPacketAfterHook(ctx, sourcePort, sourceChannel, timeoutHeight, timeoutTimestamp, data, err)
}

return seq, err
}

func (i ICS4Middleware) WriteAcknowledgement(ctx sdk.Context, chanCap *capabilitytypes.Capability, packet ibcexported.PacketI, ack ibcexported.Acknowledgement) error {
func (i ICS4Middleware) WriteAcknowledgement(ctx sdk.Context, packet ibcexported.PacketI, ack ibcexported.Acknowledgement) error {
if hook, ok := i.Hooks.(WriteAcknowledgementOverrideHooks); ok {
return hook.WriteAcknowledgementOverride(i, ctx, chanCap, packet, ack)
return hook.WriteAcknowledgementOverride(i, ctx, packet, ack)
}

if hook, ok := i.Hooks.(WriteAcknowledgementBeforeHooks); ok {
hook.WriteAcknowledgementBeforeHook(ctx, chanCap, packet, ack)
hook.WriteAcknowledgementBeforeHook(ctx, packet, ack)
}
err := i.channel.WriteAcknowledgement(ctx, chanCap, packet, ack)
err := i.channel.WriteAcknowledgement(ctx, packet, ack)
if hook, ok := i.Hooks.(WriteAcknowledgementAfterHooks); ok {
hook.WriteAcknowledgementAfterHook(ctx, chanCap, packet, ack, err)
hook.WriteAcknowledgementAfterHook(ctx, packet, ack, err)
}

return err
Expand Down
6 changes: 3 additions & 3 deletions modules/ibc-hooks/simapp/ante.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ import (
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/x/auth/ante"

ibcante "github.com/cosmos/ibc-go/v8/modules/core/ante"
"github.com/cosmos/ibc-go/v8/modules/core/keeper"
ibcante "github.com/cosmos/ibc-go/v10/modules/core/ante"
"github.com/cosmos/ibc-go/v10/modules/core/keeper"
)

// HandlerOptions extend the SDK's AnteHandler options by requiring the IBC
Expand All @@ -23,7 +23,7 @@ type HandlerOptions struct {
ante.HandlerOptions

IBCKeeper *keeper.Keeper
WasmConfig *wasmTypes.WasmConfig
WasmConfig *wasmTypes.NodeConfig
WasmKeeper *wasmkeeper.Keeper
TXCounterStoreService corestoretypes.KVStoreService
CircuitKeeper *circuitkeeper.Keeper
Expand Down
Loading