Skip to content

Commit

Permalink
Fix keepers, add ibchost key
Browse files Browse the repository at this point in the history
  • Loading branch information
Reecepbcups committed Apr 28, 2023
1 parent 4a164a6 commit 21f5941
Show file tree
Hide file tree
Showing 3 changed files with 73 additions and 46 deletions.
40 changes: 21 additions & 19 deletions app/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -198,6 +198,8 @@ type App struct {
tkeys map[string]*storetypes.TransientStoreKey
memKeys map[string]*storetypes.MemoryStoreKey

AppKeepers keepers.AppKeepers

// the module manager
ModuleManager *module.Manager

Expand Down Expand Up @@ -285,12 +287,12 @@ func New(
// can do so safely.
app.ModuleManager.SetOrderInitGenesis(orderInitBlockers()...)

app.ModuleManager.RegisterInvariants(&app.CrisisKeeper)
app.ModuleManager.RegisterInvariants(app.AppKeepers.CrisisKeeper)
app.ModuleManager.RegisterServices(cfg)
// initialize stores
app.MountKVStores(app.GetKVStoreKey())
app.MountTransientStores(app.GetTransientStoreKey())
app.MountMemoryStores(app.GetMemoryStoreKey())
app.MountKVStores(app.AppKeepers.GetKVStoreKey())
app.MountTransientStores(app.AppKeepers.GetTransientStoreKey())
app.MountMemoryStores(app.AppKeepers.GetMemoryStoreKey())

// register upgrade
app.setupUpgradeHandlers(cfg)
Expand All @@ -303,18 +305,18 @@ func New(
anteHandler, err := NewAnteHandler(
HandlerOptions{
HandlerOptions: ante.HandlerOptions{
AccountKeeper: app.AccountKeeper,
BankKeeper: app.BankKeeper,
FeegrantKeeper: app.FeeGrantKeeper,
AccountKeeper: app.AppKeepers.AccountKeeper,
BankKeeper: app.AppKeepers.BankKeeper,
FeegrantKeeper: app.AppKeepers.FeeGrantKeeper,
SignModeHandler: encodingConfig.TxConfig.SignModeHandler(),
SigGasConsumer: ante.DefaultSigVerificationGasConsumer,
},

GovKeeper: app.GovKeeper,
IBCKeeper: app.IBCKeeper,
FeeShareKeeper: app.FeeShareKeeper,
BankKeeperFork: app.BankKeeper, // since we need extra methods
TxCounterStoreKey: app.GetKey(wasm.StoreKey),
GovKeeper: app.AppKeepers.GovKeeper,
IBCKeeper: app.AppKeepers.IBCKeeper,
FeeShareKeeper: app.AppKeepers.FeeShareKeeper,
BankKeeperFork: app.AppKeepers.BankKeeper, // since we need extra methods
TxCounterStoreKey: app.AppKeepers.GetKey(wasm.StoreKey),
WasmConfig: wasmConfig,
Cdc: appCodec,
StakingSubspace: app.GetSubspace(stakingtypes.ModuleName),
Expand All @@ -335,7 +337,7 @@ func New(

if manager := app.SnapshotManager(); manager != nil {
err = manager.RegisterExtensions(
wasmkeeper.NewWasmSnapshotter(app.CommitMultiStore(), &app.WasmKeeper),
wasmkeeper.NewWasmSnapshotter(app.CommitMultiStore(), &app.AppKeepers.WasmKeeper),
)
if err != nil {
panic("failed to register snapshot extension: " + err.Error())
Expand All @@ -356,7 +358,7 @@ func New(
// that in-memory capabilities get regenerated on app restart.
// Note that since this reads from the store, we can only perform it when
// `loadLatest` is set to true.
app.CapabilityKeeper.Seal()
app.AppKeepers.CapabilityKeeper.Seal()
}

// create the simulation manager and define the order of the modules for deterministic simulations
Expand Down Expand Up @@ -403,7 +405,7 @@ func (app *App) InitChainer(ctx sdk.Context, req abci.RequestInitChain) abci.Res
if err := tmjson.Unmarshal(req.AppStateBytes, &genesisState); err != nil {
panic(err)
}
app.UpgradeKeeper.SetModuleVersionMap(ctx, app.ModuleManager.GetVersionMap())
app.AppKeepers.UpgradeKeeper.SetModuleVersionMap(ctx, app.ModuleManager.GetVersionMap())
return app.ModuleManager.InitGenesis(ctx, app.appCodec, genesisState)
}

Expand Down Expand Up @@ -447,7 +449,7 @@ func (app *App) InterfaceRegistry() types.InterfaceRegistry {
//
// NOTE: This is solely to be used for testing purposes.
func (app *App) GetSubspace(moduleName string) paramstypes.Subspace {
subspace, _ := app.ParamsKeeper.GetSubspace(moduleName)
subspace, _ := app.AppKeepers.ParamsKeeper.GetSubspace(moduleName)
return subspace
}

Expand Down Expand Up @@ -493,12 +495,12 @@ func (app *App) RegisterNodeService(clientCtx client.Context) {

// configure store loader that checks if version == upgradeHeight and applies store upgrades
func (app *App) setupUpgradeStoreLoaders() {
upgradeInfo, err := app.UpgradeKeeper.ReadUpgradeInfoFromDisk()
upgradeInfo, err := app.AppKeepers.UpgradeKeeper.ReadUpgradeInfoFromDisk()
if err != nil {
panic("failed to read upgrade info from disk" + err.Error())
}

if app.UpgradeKeeper.IsSkipHeight(upgradeInfo.Height) {
if app.AppKeepers.UpgradeKeeper.IsSkipHeight(upgradeInfo.Height) {
return
}

Expand All @@ -513,7 +515,7 @@ func (app *App) setupUpgradeStoreLoaders() {

func (app *App) setupUpgradeHandlers(cfg module.Configurator) {
for _, upgrade := range Upgrades {
app.UpgradeKeeper.SetUpgradeHandler(
app.AppKeepers.UpgradeKeeper.SetUpgradeHandler(
upgrade.UpgradeName,
upgrade.CreateUpgradeHandler(
app.ModuleManager,
Expand Down
76 changes: 50 additions & 26 deletions app/keepers/keepers.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"path/filepath"

ibchookstypes "github.com/CosmosContracts/juno/v15/x/ibc-hooks/types"
"github.com/spf13/cast"

"github.com/CosmWasm/wasmd/x/wasm"
wasmkeeper "github.com/CosmWasm/wasmd/x/wasm/keeper"
Expand All @@ -12,7 +13,9 @@ import (
mintkeeper "github.com/CosmosContracts/juno/v15/x/mint/keeper"
minttypes "github.com/CosmosContracts/juno/v15/x/mint/types"
"github.com/cosmos/cosmos-sdk/baseapp"
"github.com/cosmos/cosmos-sdk/client/flags"
"github.com/cosmos/cosmos-sdk/codec"
"github.com/cosmos/cosmos-sdk/server"
servertypes "github.com/cosmos/cosmos-sdk/server/types"
storetypes "github.com/cosmos/cosmos-sdk/store/types"
sdk "github.com/cosmos/cosmos-sdk/types"
Expand All @@ -27,7 +30,6 @@ import (
consensusparamtypes "github.com/cosmos/cosmos-sdk/x/consensus/types"
crisiskeeper "github.com/cosmos/cosmos-sdk/x/crisis/keeper"
crisistypes "github.com/cosmos/cosmos-sdk/x/crisis/types"
distr "github.com/cosmos/cosmos-sdk/x/distribution"
distrkeeper "github.com/cosmos/cosmos-sdk/x/distribution/keeper"
distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types"
evidencekeeper "github.com/cosmos/cosmos-sdk/x/evidence/keeper"
Expand All @@ -36,6 +38,7 @@ import (
feegrantkeeper "github.com/cosmos/cosmos-sdk/x/feegrant/keeper"
govkeeper "github.com/cosmos/cosmos-sdk/x/gov/keeper"
govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
govv1beta1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1"
"github.com/cosmos/cosmos-sdk/x/params"
paramskeeper "github.com/cosmos/cosmos-sdk/x/params/keeper"
paramstypes "github.com/cosmos/cosmos-sdk/x/params/types"
Expand All @@ -57,6 +60,7 @@ import (
ibcclienttypes "github.com/cosmos/ibc-go/v7/modules/core/02-client/types"
ibcconnectiontypes "github.com/cosmos/ibc-go/v7/modules/core/03-connection/types"
porttypes "github.com/cosmos/ibc-go/v7/modules/core/05-port/types"
ibchost "github.com/cosmos/ibc-go/v7/modules/core/24-host"
ibcexported "github.com/cosmos/ibc-go/v7/modules/core/exported"
ibckeeper "github.com/cosmos/ibc-go/v7/modules/core/keeper"

Expand Down Expand Up @@ -107,7 +111,7 @@ type AppKeepers struct {
AccountKeeper authkeeper.AccountKeeper
BankKeeper bankkeeper.BaseKeeper
CapabilityKeeper *capabilitykeeper.Keeper
StakingKeeper *stakingkeeper.Keeper
StakingKeeper stakingkeeper.Keeper
SlashingKeeper slashingkeeper.Keeper
MintKeeper mintkeeper.Keeper
DistrKeeper distrkeeper.Keeper
Expand All @@ -122,11 +126,11 @@ type AppKeepers struct {
PacketForwardKeeper *packetforwardkeeper.Keeper
EvidenceKeeper evidencekeeper.Keeper
TransferKeeper ibctransferkeeper.Keeper
ConsensusParamsKeeper consensusparamkeeper.Keeper
AuthzKeeper authzkeeper.Keeper
FeeGrantKeeper feegrantkeeper.Keeper
FeeShareKeeper feesharekeeper.Keeper
ContractKeeper *wasmkeeper.PermissionedKeeper
ConsensusParamsKeeper consensusparamkeeper.Keeper

ICAControllerKeeper icacontrollerkeeper.Keeper
ICAHostKeeper icahostkeeper.Keeper
Expand Down Expand Up @@ -214,57 +218,74 @@ func NewAppKeepers(
appKeepers.keys[stakingtypes.StoreKey],
appKeepers.AccountKeeper,
appKeepers.BankKeeper,
appKeepers.GetSubspace(stakingtypes.ModuleName),
authtypes.NewModuleAddress(govtypes.ModuleName).String(),
)
appKeepers.MintKeeper = mintkeeper.NewKeeper(
appCodec,
appKeepers.keys[minttypes.StoreKey],
appKeepers.GetSubspace(minttypes.ModuleName),
&stakingKeeper,
stakingKeeper,
appKeepers.AccountKeeper,
appKeepers.BankKeeper,
authtypes.FeeCollectorName,
)
appKeepers.DistrKeeper = distrkeeper.NewKeeper(
appCodec,
appKeepers.keys[distrtypes.StoreKey],
appKeepers.GetSubspace(distrtypes.ModuleName),
appKeepers.AccountKeeper,
appKeepers.BankKeeper,
&stakingKeeper,
stakingKeeper,
authtypes.FeeCollectorName,
blockedAddress,
authtypes.NewModuleAddress(govtypes.ModuleName).String(),
)
appKeepers.SlashingKeeper = slashingkeeper.NewKeeper(
appCodec,
cdc,
appKeepers.keys[slashingtypes.StoreKey],
&stakingKeeper,
appKeepers.GetSubspace(slashingtypes.ModuleName),
stakingKeeper,
authtypes.NewModuleAddress(govtypes.ModuleName).String(),
)

invCheckPeriod := cast.ToUint(appOpts.Get(server.FlagInvCheckPeriod))
appKeepers.CrisisKeeper = crisiskeeper.NewKeeper(
appKeepers.GetSubspace(crisistypes.ModuleName),
appCodec,
keys[crisistypes.StoreKey],
invCheckPeriod,
appKeepers.BankKeeper,
authtypes.FeeCollectorName,
authtypes.NewModuleAddress(govtypes.ModuleName).String(),
)
appKeepers.UpgradeKeeper = upgradekeeper.NewKeeper(skipUpgradeHeights,

skipUpgradeHeights := map[int64]bool{}
for _, h := range cast.ToIntSlice(appOpts.Get(server.FlagUnsafeSkipUpgrades)) {
skipUpgradeHeights[int64(h)] = true
}
homePath := cast.ToString(appOpts.Get(flags.FlagHome))

appKeepers.UpgradeKeeper = *upgradekeeper.NewKeeper(
skipUpgradeHeights,
appKeepers.keys[upgradetypes.StoreKey],
appCodec,
homePath,
nil)
bApp,
authtypes.NewModuleAddress(govtypes.ModuleName).String(),
)

// register the staking hooks
// NOTE: stakingKeeper above is passed by reference, so that it will contain these hooks
appKeepers.StakingKeeper = *stakingKeeper.SetHooks(
stakingtypes.NewMultiStakingHooks(appKeepers.DistrKeeper.Hooks(), appKeepers.SlashingKeeper.Hooks()),
stakingKeeper.SetHooks(
stakingtypes.NewMultiStakingHooks(appKeepers.DistrKeeper.Hooks(),
appKeepers.SlashingKeeper.Hooks()),
)
appKeepers.StakingKeeper = *stakingKeeper

// ... other modules keepers

// Create IBC Keeper
appKeepers.IBCKeeper = ibckeeper.NewKeeper(
appCodec, appKeepers.keys[ibchost.StoreKey],
appKeepers.GetSubspace(ibchost.ModuleName),
appCodec,
appKeepers.keys[ibchost.SubModuleName],
appKeepers.GetSubspace(ibchost.SubModuleName),
appKeepers.StakingKeeper,
appKeepers.UpgradeKeeper,
scopedIBCKeeper,
Expand All @@ -279,14 +300,15 @@ func NewAppKeepers(
appKeepers.keys[authzkeeper.StoreKey],
appCodec,
bApp.MsgServiceRouter(),
appKeepers.AccountKeeper,
)

// register the proposal types
govRouter := govtypes.NewRouter()
govRouter.AddRoute(govtypes.RouterKey, govtypes.ProposalHandler).
govRouter := govv1beta1.NewRouter()
govRouter.AddRoute(govtypes.RouterKey, govv1beta1.ProposalHandler).
AddRoute(paramproposal.RouterKey, params.NewParamChangeProposalHandler(appKeepers.ParamsKeeper)).
AddRoute(distrtypes.RouterKey, distr.NewCommunityPoolSpendProposalHandler(appKeepers.DistrKeeper)).
AddRoute(upgradetypes.RouterKey, upgrade.NewSoftwareUpgradeProposalHandler(appKeepers.UpgradeKeeper)).
AddRoute(upgradetypes.RouterKey, upgrade.NewSoftwareUpgradeProposalHandler(&appKeepers.UpgradeKeeper)).
// AddRoute(distrtypes.RouterKey, distr.NewCommunityPoolSpendProposalHandler(appKeepers.DistrKeeper)).
AddRoute(ibcclienttypes.RouterKey, ibcclient.NewClientProposalHandler(appKeepers.IBCKeeper.ClientKeeper))

// Configure the hooks keeper
Expand Down Expand Up @@ -316,8 +338,8 @@ func NewAppKeepers(
)

appKeepers.IBCFeeKeeper = ibcfeekeeper.NewKeeper(
appCodec, appKeepers.keys[ibcfeetypes.StoreKey],
appKeepers.GetSubspace(ibcfeetypes.ModuleName), // this isn't even used in the keeper but is required?
appCodec,
appKeepers.keys[ibcfeetypes.StoreKey],
appKeepers.HooksICS4Wrapper, // replaced with IBC middleware
appKeepers.IBCKeeper.ChannelKeeper,
&appKeepers.IBCKeeper.PortKeeper,
Expand Down Expand Up @@ -381,7 +403,7 @@ func NewAppKeepers(

// Create evidence Keeper for to register the IBC light client misbehaviour evidence route
evidenceKeeper := evidencekeeper.NewKeeper(
appCodec, appKeepers.keys[evidencetypes.StoreKey], &appKeepers.StakingKeeper, appKeepers.SlashingKeeper,
appCodec, appKeepers.keys[evidencetypes.StoreKey], appKeepers.StakingKeeper, appKeepers.SlashingKeeper,
)
// If evidence needs to be handled for the app, set routes in router here and seal
appKeepers.EvidenceKeeper = *evidenceKeeper
Expand Down Expand Up @@ -415,7 +437,7 @@ func NewAppKeepers(
"/ibc.core.connection.v1.Query/Connection": &ibcconnectiontypes.QueryConnectionResponse{},

// governance
"/cosmos.gov.v1beta1.Query/Vote": &govtypes.QueryVoteResponse{},
"/cosmos.gov.v1beta1.Query/Vote": &govv1beta1.QueryVoteResponse{},

// staking
"/cosmos.staking.v1beta1.Query/Delegation": &stakingtypes.QueryDelegationResponse{},
Expand Down Expand Up @@ -534,8 +556,10 @@ func initParamsKeeper(appCodec codec.BinaryCodec, legacyAmino *codec.LegacyAmino
paramsKeeper.Subspace(minttypes.ModuleName)
paramsKeeper.Subspace(distrtypes.ModuleName)
paramsKeeper.Subspace(slashingtypes.ModuleName)
paramsKeeper.Subspace(govtypes.ModuleName).WithKeyTable(govtypes.ParamKeyTable())
paramsKeeper.Subspace(govtypes.ModuleName)
paramsKeeper.Subspace(crisistypes.ModuleName)

// custom
paramsKeeper.Subspace(ibctransfertypes.ModuleName)
paramsKeeper.Subspace(packetforwardtypes.ModuleName).WithKeyTable(packetforwardtypes.ParamKeyTable())
paramsKeeper.Subspace(ibchost.ModuleName)
Expand Down
3 changes: 2 additions & 1 deletion app/keepers/keys.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import (
icahosttypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/host/types"
ibcfeetypes "github.com/cosmos/ibc-go/v7/modules/apps/29-fee/types"
ibctransfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types"
ibchost "github.com/cosmos/ibc-go/v7/modules/core/24-host"
ibcexported "github.com/cosmos/ibc-go/v7/modules/core/exported"
icqtypes "github.com/strangelove-ventures/async-icq/v7/types"
packetforwardtypes "github.com/strangelove-ventures/packet-forward-middleware/v7/router/types"
Expand All @@ -38,7 +39,7 @@ func (appKeepers *AppKeepers) GenerateKeys() {
authzkeeper.StoreKey, feegrant.StoreKey, icahosttypes.StoreKey, ibcfeetypes.StoreKey,
tokenfactorytypes.StoreKey, feesharetypes.StoreKey, wasm.StoreKey,
icacontrollertypes.StoreKey, ibchookstypes.StoreKey, packetforwardtypes.StoreKey,
icqtypes.StoreKey,
icqtypes.StoreKey, ibchost.SubModuleName,
)

appKeepers.tkeys = sdk.NewTransientStoreKeys(paramstypes.TStoreKey)
Expand Down

0 comments on commit 21f5941

Please sign in to comment.