From 4b29b3248a15b14602a39171becc292a5819a2d0 Mon Sep 17 00:00:00 2001 From: Thomas Bruyelle Date: Thu, 18 Dec 2025 15:51:57 +0100 Subject: [PATCH 1/2] fix(app): ICA controller config Closes #255 --- CHANGELOG.md | 1 + app/keepers/keepers.go | 23 +++++++++++++++++++++-- app/keepers/keys.go | 2 ++ 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1b686b062..75dacaf66 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ ### BUG FIXES - Use `TruncateInt` to compute `uphotonToMint` [250](https://github.com/atomone-hub/atomone/pull/250) +- Fix missing ICA controller configuration ### DEPENDENCIES diff --git a/app/keepers/keepers.go b/app/keepers/keepers.go index cbc9dec38..db38364b4 100644 --- a/app/keepers/keepers.go +++ b/app/keepers/keepers.go @@ -2,6 +2,9 @@ package keepers import ( ica "github.com/cosmos/ibc-go/v10/modules/apps/27-interchain-accounts" + icacontroller "github.com/cosmos/ibc-go/v10/modules/apps/27-interchain-accounts/controller" + icacontrollerkeeper "github.com/cosmos/ibc-go/v10/modules/apps/27-interchain-accounts/controller/keeper" + icacontrollertypes "github.com/cosmos/ibc-go/v10/modules/apps/27-interchain-accounts/controller/types" icahost "github.com/cosmos/ibc-go/v10/modules/apps/27-interchain-accounts/host" icahostkeeper "github.com/cosmos/ibc-go/v10/modules/apps/27-interchain-accounts/host/keeper" icahosttypes "github.com/cosmos/ibc-go/v10/modules/apps/27-interchain-accounts/host/types" @@ -84,6 +87,7 @@ type AppKeepers struct { // IBC Keeper must be a pointer in the app, so we can SetRouter on it correctly IBCKeeper *ibckeeper.Keeper ICAHostKeeper icahostkeeper.Keeper + ICAControllerKeeper icacontrollerkeeper.Keeper EvidenceKeeper evidencekeeper.Keeper TransferKeeper ibctransferkeeper.Keeper FeeGrantKeeper feegrantkeeper.Keeper @@ -301,6 +305,16 @@ func NewAppKeeper( bApp.GRPCQueryRouter(), authorityStr, ) + // ICA Controller keeper + appKeepers.ICAControllerKeeper = icacontrollerkeeper.NewKeeper( + appCodec, + runtime.NewKVStoreService(appKeepers.keys[icacontrollertypes.StoreKey]), + appKeepers.GetSubspace(icacontrollertypes.SubModuleName), + appKeepers.IBCKeeper.ChannelKeeper, // ICS4Wrapper + appKeepers.IBCKeeper.ChannelKeeper, + bApp.MsgServiceRouter(), + authorityStr, + ) appKeepers.TransferKeeper = ibctransferkeeper.NewKeeper( appCodec, @@ -322,7 +336,7 @@ func NewAppKeeper( ) // Middleware Stacks - appKeepers.ICAModule = ica.NewAppModule(nil, &appKeepers.ICAHostKeeper) + appKeepers.ICAModule = ica.NewAppModule(&appKeepers.ICAControllerKeeper, &appKeepers.ICAHostKeeper) appKeepers.TransferModule = transfer.NewAppModule(appKeepers.TransferKeeper) // create IBC module from bottom to top of stack @@ -334,11 +348,15 @@ func NewAppKeeper( // Add transfer stack to IBC Router // Create Interchain Accounts Stack - var icaHostStack porttypes.IBCModule = icahost.NewIBCModule(appKeepers.ICAHostKeeper) + var ( + icaHostStack porttypes.IBCModule = icahost.NewIBCModule(appKeepers.ICAHostKeeper) + icaControllerStack porttypes.IBCModule = icacontroller.NewIBCMiddleware(appKeepers.ICAControllerKeeper) + ) // Create IBC Router & seal ibcRouter := porttypes.NewRouter(). AddRoute(icahosttypes.SubModuleName, icaHostStack). + AddRoute(icacontrollertypes.SubModuleName, icaControllerStack). AddRoute(ibctransfertypes.ModuleName, transferStack) ibcv2Router := ibcapi.NewRouter(). @@ -383,6 +401,7 @@ func initParamsKeeper(appCodec codec.BinaryCodec, legacyAmino *codec.LegacyAmino paramsKeeper.Subspace(ibctransfertypes.ModuleName) paramsKeeper.Subspace(ibcexported.ModuleName) paramsKeeper.Subspace(icahosttypes.SubModuleName) + paramsKeeper.Subspace(icacontrollertypes.SubModuleName).WithKeyTable(icacontrollertypes.ParamKeyTable()) return paramsKeeper } diff --git a/app/keepers/keys.go b/app/keepers/keys.go index fd5ce9dae..0871853a2 100644 --- a/app/keepers/keys.go +++ b/app/keepers/keys.go @@ -1,6 +1,7 @@ package keepers import ( + icacontrollertypes "github.com/cosmos/ibc-go/v10/modules/apps/27-interchain-accounts/controller/types" icahosttypes "github.com/cosmos/ibc-go/v10/modules/apps/27-interchain-accounts/host/types" ibctransfertypes "github.com/cosmos/ibc-go/v10/modules/apps/transfer/types" ibcexported "github.com/cosmos/ibc-go/v10/modules/core/exported" @@ -43,6 +44,7 @@ func (appKeepers *AppKeepers) GenerateKeys() { evidencetypes.StoreKey, ibctransfertypes.StoreKey, icahosttypes.StoreKey, + icacontrollertypes.StoreKey, feegrant.StoreKey, authzkeeper.StoreKey, consensusparamtypes.StoreKey, From cb021a6f791b8aac495c9a8a8316e7209c384056 Mon Sep 17 00:00:00 2001 From: Thomas Bruyelle Date: Thu, 18 Dec 2025 15:54:43 +0100 Subject: [PATCH 2/2] update CL --- CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 75dacaf66..1e98b3d37 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,8 +8,8 @@ ### BUG FIXES -- Use `TruncateInt` to compute `uphotonToMint` [250](https://github.com/atomone-hub/atomone/pull/250) -- Fix missing ICA controller configuration +- Use `TruncateInt` to compute `uphotonToMint` [#250](https://github.com/atomone-hub/atomone/pull/250) +- Fix missing ICA controller configuration [#257](https://github.com/atomone-hub/atomone/pull/257) ### DEPENDENCIES