Skip to main content
Version: Next

Migrating from v10 to v11

This guide provides instructions for migrating to a new version of ibc-go.

Note: ibc-go supports golang semantic versioning and therefore all imports must be updated on major version releases.

Diff examples are shown after the list of overall changes:

  • Chains will need to remove the ParamSubspace arg from all calls to Keeper constructors
  app.IBCKeeper = ibckeeper.NewKeeper(
appCodec,
runtime.NewKVStoreService(keys[ibcexported.StoreKey]),
- app.GetSubspace(ibcexported.ModuleName),
app.UpgradeKeeper,
authtypes.NewModuleAddress(govtypes.ModuleName).String(),
)

The transfer module, the packet forward middleware, and the rate limiting middleware support custom address codecs. This feature is primarily added to support Cosmos EVM for IBC transfers. In a standard Cosmos SDK app, they are wired as follows:

  app.TransferKeeper = ibctransferkeeper.NewKeeper(
appCodec,
+ app.AccountKeeper.AddressCodec(),
runtime.NewKVStoreService(keys[ibctransfertypes.StoreKey]),
app.IBCKeeper.ChannelKeeper,
app.MsgServiceRouter(),
app.AccountKeeper, app.BankKeeper,
authtypes.NewModuleAddress(govtypes.ModuleName).String(),
)
  app.RateLimitKeeper = ratelimitkeeper.NewKeeper(
appCodec,
+ app.AccountKeeper.AddressCodec(),
runtime.NewKVStoreService(keys[ratelimittypes.StoreKey]),
app.IBCKeeper.ChannelKeeper,
app.IBCKeeper.ClientKeeper,
app.BankKeeper,
authtypes.NewModuleAddress(govtypes.ModuleName).String()
)
  app.PFMKeeper = packetforwardkeeper.NewKeeper(
appCodec,
+ app.AccountKeeper.AddressCodec(),
runtime.NewKVStoreService(keys[packetforwardtypes.StoreKey]),
app.TransferKeeper,
app.IBCKeeper.ChannelKeeper,
app.BankKeeper,
authtypes.NewModuleAddress(govtypes.ModuleName).String()
)