@@ -14,6 +14,9 @@ import (
1414 ibcexported "github.com/cosmos/ibc-go/v10/modules/core/exported"
1515 ibckeeper "github.com/cosmos/ibc-go/v10/modules/core/keeper"
1616 ibctm "github.com/cosmos/ibc-go/v10/modules/light-clients/07-tendermint"
17+ icsprovider "github.com/cosmos/interchain-security/v5/x/ccv/provider"
18+ icsproviderkeeper "github.com/cosmos/interchain-security/v5/x/ccv/provider/keeper"
19+ providertypes "github.com/cosmos/interchain-security/v5/x/ccv/provider/types"
1720
1821 "cosmossdk.io/log"
1922 storetypes "cosmossdk.io/store/types"
@@ -87,11 +90,13 @@ type AppKeepers struct {
8790 ConsensusParamsKeeper consensusparamkeeper.Keeper
8891 PhotonKeeper * photonkeeper.Keeper
8992 DynamicfeeKeeper * dynamicfeekeeper.Keeper
93+ ProviderKeeper icsproviderkeeper.Keeper
9094
9195 // Modules
9296 ICAModule ica.AppModule
9397 TransferModule transfer.AppModule
9498 TMClientModule ibctm.AppModule
99+ ProviderModule icsprovider.AppModule
95100}
96101
97102func NewAppKeeper (
@@ -211,15 +216,6 @@ func NewAppKeeper(
211216 authorityStr ,
212217 )
213218
214- // register the staking hooks
215- // NOTE: stakingKeeper above is passed by reference, so that it will contain these hooks
216- appKeepers .StakingKeeper .SetHooks (
217- stakingtypes .NewMultiStakingHooks (
218- appKeepers .DistrKeeper .Hooks (),
219- appKeepers .SlashingKeeper .Hooks (),
220- ),
221- )
222-
223219 // UpgradeKeeper must be created before IBCKeeper
224220 appKeepers .UpgradeKeeper = upgradekeeper .NewKeeper (
225221 skipUpgradeHeights ,
@@ -304,9 +300,41 @@ func NewAppKeeper(
304300 authtypes .NewModuleAddress (govtypes .ModuleName ).String (),
305301 )
306302
303+ // Initialize ProviderKeeper
304+ appKeepers .ProviderKeeper = icsproviderkeeper .NewKeeper (
305+ appCodec ,
306+ appKeepers .keys [providertypes .StoreKey ],
307+ appKeepers .GetSubspace (providertypes .ModuleName ),
308+ appKeepers .IBCKeeper .ChannelKeeper ,
309+ appKeepers .IBCKeeper .ConnectionKeeper ,
310+ appKeepers .IBCKeeper .ClientKeeper ,
311+ appKeepers .StakingKeeper ,
312+ appKeepers .SlashingKeeper ,
313+ appKeepers .AccountKeeper ,
314+ appKeepers .DistrKeeper ,
315+ appKeepers .BankKeeper ,
316+ NewGovKeeperAdapter (appKeepers .GovKeeper ), // inline the adapter creation
317+ authorityStr ,
318+ addresscodec .NewBech32Codec (sdk .GetConfig ().GetBech32ValidatorAddrPrefix ()),
319+ addresscodec .NewBech32Codec (sdk .GetConfig ().GetBech32ConsensusAddrPrefix ()),
320+ authtypes .FeeCollectorName ,
321+ )
322+
323+ // Register the staking hooks
324+ // NOTE: stakingKeeper above is passed by reference, so that it will contain these hooks
325+ // This includes hooks from distribution, slashing, and provider modules
326+ appKeepers .StakingKeeper .SetHooks (
327+ stakingtypes .NewMultiStakingHooks (
328+ appKeepers .DistrKeeper .Hooks (),
329+ appKeepers .SlashingKeeper .Hooks (),
330+ appKeepers .ProviderKeeper .Hooks (),
331+ ),
332+ )
333+
307334 // Middleware Stacks
308335 appKeepers .ICAModule = ica .NewAppModule (nil , & appKeepers .ICAHostKeeper )
309336 appKeepers .TransferModule = transfer .NewAppModule (appKeepers .TransferKeeper )
337+ appKeepers .ProviderModule = icsprovider .NewAppModule (& appKeepers .ProviderKeeper , appKeepers .GetSubspace (providertypes .ModuleName ))
310338
311339 // create IBC module from bottom to top of stack
312340 var (
@@ -366,6 +394,7 @@ func initParamsKeeper(appCodec codec.BinaryCodec, legacyAmino *codec.LegacyAmino
366394 paramsKeeper .Subspace (ibctransfertypes .ModuleName )
367395 paramsKeeper .Subspace (ibcexported .ModuleName )
368396 paramsKeeper .Subspace (icahosttypes .SubModuleName )
397+ paramsKeeper .Subspace (providertypes .ModuleName )
369398
370399 return paramsKeeper
371400}
0 commit comments