Skip to main content
This document is intended to highlight significant changes which may require more information than presented in the CHANGELOG. Any changes that must be done by a user of ibc-go should be documented here. There are four sections based on the four potential user groups of this document: Note: ibc-go supports golang semantic versioning and therefore all imports must be updated to bump the version number on major releases.

Chains

Ante decorator

The AnteDecorator type in core/ante has been renamed to RedundantRelayDecorator (and the corresponding constructor function to NewRedundantRelayDecorator). Therefore in the function that creates the instance of the sdk.AnteHandler type (e.g. NewAnteHandler) the change would be like this:
The AnteDecorator was actually renamed twice, but in this PR you can see the changes made for the final rename.

IBC Apps

Core

The key parameter of the NewKeeper function in modules/core/keeper is now of type storetypes.StoreKey (where storetypes is an import alias for "github.com/cosmos/cosmos-sdk/store/types"):
The RegisterRESTRoutes function in modules/core has been removed.

ICS03 - Connection

The key parameter of the NewKeeper function in modules/core/03-connection/keeper is now of type storetypes.StoreKey (where storetypes is an import alias for "github.com/cosmos/cosmos-sdk/store/types"):

ICS04 - Channel

The function NewPacketId in modules/core/04-channel/types has been renamed to NewPacketID:
The key parameter of the NewKeeper function in modules/core/04-channel/keeper is now of type storetypes.StoreKey (where storetypes is an import alias for "github.com/cosmos/cosmos-sdk/store/types"):

ICS20 - Transfer

The key parameter of the NewKeeper function in modules/apps/transfer/keeper is now of type storetypes.StoreKey (where storetypes is an import alias for "github.com/cosmos/cosmos-sdk/store/types"):
The amount parameter of function GetTransferCoin in modules/apps/transfer/types is now of type math.Int ("cosmossdk.io/math"):
The RegisterRESTRoutes function in modules/apps/transfer has been removed.

ICS27 - Interchain Accounts

The key and msgRouter parameters of the NewKeeper functions in
  • modules/apps/27-interchain-accounts/controller/keeper
  • and modules/apps/27-interchain-accounts/host/keeper
have changed type. The key parameter is now of type storetypes.StoreKey (where storetypes is an import alias for "github.com/cosmos/cosmos-sdk/store/types"), and the msgRouter parameter is now of type *icatypes.MessageRouter (where icatypes is an import alias for "github.com/cosmos/ibc-go/v5/modules/apps/27-interchain-accounts/types"):
The new MessageRouter interface is defined as:
The RegisterRESTRoutes function in modules/apps/27-interchain-accounts has been removed. An additional parameter, ics4Wrapper has been added to the host submodule NewKeeper function in modules/apps/27-interchain-accounts/host/keeper. This allows the host submodule to correctly unwrap the channel version for channel reopening handshakes in the OnChanOpenTry callback.

Cosmos SDK message handler responses in packet acknowledgement

The construction of the transaction response of a message execution on the host chain has changed. The Data field in the sdk.TxMsgData has been deprecated and since Cosmos SDK 0.46 the MsgResponses field contains the message handler responses packed into Anys. For chains on Cosmos SDK 0.45 and below, the message response was constructed like this:
And for chains on Cosmos SDK 0.46 and above, it is now done like this:
When handling the acknowledgement in the OnAcknowledgementPacket callback of a custom ICA controller module, then depending on whether txMsgData.Data is empty or not, the logic to handle the message handler response will be different. Only controller chains on Cosmos SDK 0.46 or above will be able to write the logic needed to handle the response from a host chain on Cosmos SDK 0.46 or above.
See the corresponding documentation about authentication modules for more information.

ICS29 - Fee Middleware

The key parameter of the NewKeeper function in modules/apps/29-fee is now of type storetypes.StoreKey (where storetypes is an import alias for "github.com/cosmos/cosmos-sdk/store/types"):
The RegisterRESTRoutes function in modules/apps/29-fee has been removed.

IBC testing package

The MockIBCApp type has been renamed to IBCApp (and the corresponding constructor function to NewIBCApp). This has resulted therefore in:
  • The IBCApp field of the *IBCModule in testing/mock to change its type as well to *IBCApp:
  • The app parameter to *NewIBCModule in testing/mock to change its type as well to *IBCApp:
The MockEmptyAcknowledgement type has been renamed to EmptyAcknowledgement (and the corresponding constructor function to NewEmptyAcknowledgement). The TestingApp interface in testing has gone through some modifications:
  • The return type of the function GetStakingKeeper is not the concrete type stakingkeeper.Keeper anymore (where stakingkeeper is an import alias for "github.com/cosmos/cosmos-sdk/x/staking/keeper"), but it has been changed to the interface ibctestingtypes.StakingKeeper (where ibctestingtypes is an import alias for ""github.com/cosmos/ibc-go/v5/testing/types"). See this PR for more details. The StakingKeeper interface is defined as:
  • The return type of the function LastCommitID has changed to storetypes.CommitID (where storetypes is an import alias for "github.com/cosmos/cosmos-sdk/store/types").
See the following git diff for more details:
The powerReduction parameter of the function SetupWithGenesisValSet in testing is now of type math.Int ("cosmossdk.io/math"):
The accAmt parameter of the functions
  • AddTestAddrsFromPubKeys ,
  • AddTestAddrs
  • and AddTestAddrsIncremental
in testing/simapp are now of type math.Int ("cosmossdk.io/math"):
The RegisterRESTRoutes function in testing/mock has been removed.

Relayers

  • No relevant changes were made in this release.

IBC Light Clients

ICS02 - Client

The key parameter of the NewKeeper function in modules/core/02-client/keeper is now of type storetypes.StoreKey (where storetypes is an import alias for "github.com/cosmos/cosmos-sdk/store/types"):