From 006bdad06564203d1e230381c00d25e5980265c2 Mon Sep 17 00:00:00 2001 From: Dheeraj Dubey Date: Tue, 9 Jan 2024 11:01:59 +0530 Subject: [PATCH 1/3] init nft module --- app/app.go | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/app/app.go b/app/app.go index 3b7eae529..80818ef98 100644 --- a/app/app.go +++ b/app/app.go @@ -200,6 +200,10 @@ import ( mv13 "github.com/comdex-official/comdex/app/upgrades/mainnet/v13" tv13 "github.com/comdex-official/comdex/app/upgrades/testnet/v13" + + "github.com/cosmos/cosmos-sdk/x/nft" + nftkeeper "github.com/cosmos/cosmos-sdk/x/nft/keeper" + nftmodule "github.com/cosmos/cosmos-sdk/x/nft/module" ) const ( @@ -309,6 +313,7 @@ var ( icq.AppModuleBasic{}, ibchooks.AppModuleBasic{}, packetforward.AppModuleBasic{}, + nftmodule.AppModuleBasic{}, ) ) @@ -388,6 +393,7 @@ type App struct { Rewardskeeper rewardskeeper.Keeper NewliqKeeper liquidationsV2keeper.Keeper NewaucKeeper auctionsV2keeper.Keeper + NFTKeeper nftkeeper.Keeper // IBC modules // transfer module @@ -434,7 +440,8 @@ func New( markettypes.StoreKey, bandoraclemoduletypes.StoreKey, lockertypes.StoreKey, wasm.StoreKey, authzkeeper.StoreKey, auctiontypes.StoreKey, tokenminttypes.StoreKey, rewardstypes.StoreKey, feegrant.StoreKey, liquiditytypes.StoreKey, esmtypes.ModuleName, lendtypes.StoreKey, - liquidationsV2types.StoreKey, auctionsV2types.StoreKey, ibchookstypes.StoreKey, packetforwardtypes.StoreKey, icqtypes.StoreKey, consensusparamtypes.StoreKey, crisistypes.StoreKey, + liquidationsV2types.StoreKey, auctionsV2types.StoreKey, ibchookstypes.StoreKey, packetforwardtypes.StoreKey, + icqtypes.StoreKey, consensusparamtypes.StoreKey, crisistypes.StoreKey, nftkeeper.StoreKey, ) ) @@ -615,6 +622,8 @@ func New( scopedIBCKeeper, ) + app.NFTKeeper = nftkeeper.NewKeeper(keys[nftkeeper.StoreKey], appCodec, app.AccountKeeper, app.BankKeeper) + // Configure the hooks keeper hooksKeeper := ibchookskeeper.NewKeeper( app.keys[ibchookstypes.StoreKey], @@ -1055,6 +1064,7 @@ func New( ibchooks.NewAppModule(app.AccountKeeper), icq.NewAppModule(*app.ICQKeeper), packetforward.NewAppModule(app.PacketForwardKeeper), + nftmodule.NewAppModule(appCodec, app.NFTKeeper, app.AccountKeeper, app.BankKeeper, app.interfaceRegistry), ) // During begin block slashing happens after distr.BeginBlocker so that @@ -1101,6 +1111,7 @@ func New( icqtypes.ModuleName, packetforwardtypes.ModuleName, ibcfeetypes.ModuleName, + nft.ModuleName, consensusparamtypes.ModuleName, ) @@ -1144,6 +1155,7 @@ func New( icqtypes.ModuleName, packetforwardtypes.ModuleName, ibcfeetypes.ModuleName, + nft.ModuleName, consensusparamtypes.ModuleName, ) @@ -1191,6 +1203,7 @@ func New( icqtypes.ModuleName, packetforwardtypes.ModuleName, ibcfeetypes.ModuleName, + nft.ModuleName, consensusparamtypes.ModuleName, ) @@ -1451,6 +1464,7 @@ func (a *App) ModuleAccountsPermissions() map[string][]string { ibcfeetypes.ModuleName: nil, assettypes.ModuleName: nil, icqtypes.ModuleName: nil, + nft.ModuleName: nil, } } From cab383cbfb6ef4da6e7526fc54911da09ecd8cc3 Mon Sep 17 00:00:00 2001 From: Dheeraj Dubey Date: Tue, 9 Jan 2024 13:33:17 +0530 Subject: [PATCH 2/3] seperatist commit --- app/app.go | 1284 +++----------------------- app/keepers/keepers.go | 855 +++++++++++++++++ app/keepers/keys.go | 97 ++ app/module.go | 332 +++++++ app/test_helpers.go | 3 +- cmd/comdex/root.go | 13 +- testutil/network/network.go | 11 +- testutil/simapp/simapp.go | 3 +- x/liquidity/client/testutil/suite.go | 3 +- x/vault/client/testutil/suite.go | 3 +- 10 files changed, 1429 insertions(+), 1175 deletions(-) create mode 100644 app/keepers/keepers.go create mode 100644 app/keepers/keys.go create mode 100644 app/module.go diff --git a/app/app.go b/app/app.go index 80818ef98..3d0a05d20 100644 --- a/app/app.go +++ b/app/app.go @@ -1,7 +1,18 @@ package app import ( - "fmt" + autocliv1 "cosmossdk.io/api/cosmos/autocli/v1" + reflectionv1 "cosmossdk.io/api/cosmos/reflection/v1" + wasmkeeper "github.com/CosmWasm/wasmd/x/wasm/keeper" + wasmtypes "github.com/CosmWasm/wasmd/x/wasm/types" + "github.com/comdex-official/comdex/app/keepers" + tmos "github.com/cometbft/cometbft/libs/os" + tmprototypes "github.com/cometbft/cometbft/proto/tendermint/types" + runtimeservices "github.com/cosmos/cosmos-sdk/runtime/services" + "github.com/cosmos/cosmos-sdk/x/auth/ante" + capabilitytypes "github.com/cosmos/cosmos-sdk/x/capability/types" + "github.com/cosmos/cosmos-sdk/x/crisis" + "github.com/spf13/cast" "io" "net/http" "os" @@ -11,33 +22,22 @@ import ( paramsclient "github.com/cosmos/cosmos-sdk/x/params/client" - "github.com/gorilla/mux" - "github.com/spf13/cast" - - authsims "github.com/cosmos/cosmos-sdk/x/auth/simulation" - - ibchooks "github.com/cosmos/ibc-apps/modules/ibc-hooks/v7" - ibchookskeeper "github.com/cosmos/ibc-apps/modules/ibc-hooks/v7/keeper" - ibchookstypes "github.com/cosmos/ibc-apps/modules/ibc-hooks/v7/types" - - consensus "github.com/cosmos/cosmos-sdk/x/consensus" - consensusparamkeeper "github.com/cosmos/cosmos-sdk/x/consensus/keeper" consensusparamtypes "github.com/cosmos/cosmos-sdk/x/consensus/types" - - packetforward "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v7/packetforward" - packetforwardkeeper "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v7/packetforward/keeper" - packetforwardtypes "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v7/packetforward/types" + "github.com/gorilla/mux" "github.com/rakyll/statik/fs" - ica "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts" - icahost "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/host" - icahostkeeper "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/host/keeper" - icahosttypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/host/types" - icatypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/types" - ibctm "github.com/cosmos/ibc-go/v7/modules/light-clients/07-tendermint" - - wasmkeeper "github.com/CosmWasm/wasmd/x/wasm/keeper" + "github.com/CosmWasm/wasmd/x/wasm" + assetclient "github.com/comdex-official/comdex/x/asset/client" + bandoraclemoduleclient "github.com/comdex-official/comdex/x/bandoracle/client" + lendclient "github.com/comdex-official/comdex/x/lend/client" + liquidationsV2client "github.com/comdex-official/comdex/x/liquidationsV2/client" + liquidationsV2types "github.com/comdex-official/comdex/x/liquidationsV2/types" + liquidityclient "github.com/comdex-official/comdex/x/liquidity/client" + tmdb "github.com/cometbft/cometbft-db" + abcitypes "github.com/cometbft/cometbft/abci/types" + tmjson "github.com/cometbft/cometbft/libs/json" + "github.com/cometbft/cometbft/libs/log" "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/client" nodeservice "github.com/cosmos/cosmos-sdk/client/grpc/node" @@ -51,159 +51,22 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" "github.com/cosmos/cosmos-sdk/version" - "github.com/cosmos/cosmos-sdk/x/auth" - "github.com/cosmos/cosmos-sdk/x/auth/ante" - authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper" authtx "github.com/cosmos/cosmos-sdk/x/auth/tx" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - "github.com/cosmos/cosmos-sdk/x/auth/vesting" - "github.com/cosmos/cosmos-sdk/x/authz" - "github.com/cosmos/cosmos-sdk/x/bank" - bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper" - banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - "github.com/cosmos/cosmos-sdk/x/capability" - capabilitykeeper "github.com/cosmos/cosmos-sdk/x/capability/keeper" - capabilitytypes "github.com/cosmos/cosmos-sdk/x/capability/types" - "github.com/cosmos/cosmos-sdk/x/crisis" - 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" - "github.com/cosmos/cosmos-sdk/x/evidence" - evidencekeeper "github.com/cosmos/cosmos-sdk/x/evidence/keeper" - evidencetypes "github.com/cosmos/cosmos-sdk/x/evidence/types" - "github.com/cosmos/cosmos-sdk/x/feegrant" - feegrantkeeper "github.com/cosmos/cosmos-sdk/x/feegrant/keeper" - "github.com/cosmos/cosmos-sdk/x/genutil" - genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types" - "github.com/cosmos/cosmos-sdk/x/gov" govclient "github.com/cosmos/cosmos-sdk/x/gov/client" - govkeeper "github.com/cosmos/cosmos-sdk/x/gov/keeper" - govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" - govtypesv1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1" - govtypesv1beta1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" - "github.com/cosmos/cosmos-sdk/x/mint" - mintkeeper "github.com/cosmos/cosmos-sdk/x/mint/keeper" - minttypes "github.com/cosmos/cosmos-sdk/x/mint/types" - "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" - paramproposal "github.com/cosmos/cosmos-sdk/x/params/types/proposal" - "github.com/cosmos/cosmos-sdk/x/slashing" - slashingkeeper "github.com/cosmos/cosmos-sdk/x/slashing/keeper" - slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types" - "github.com/cosmos/cosmos-sdk/x/staking" - stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" - stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - "github.com/cosmos/cosmos-sdk/x/upgrade" upgradeclient "github.com/cosmos/cosmos-sdk/x/upgrade/client" - upgradekeeper "github.com/cosmos/cosmos-sdk/x/upgrade/keeper" upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" - ibcfee "github.com/cosmos/ibc-go/v7/modules/apps/29-fee" - ibcfeekeeper "github.com/cosmos/ibc-go/v7/modules/apps/29-fee/keeper" ibcfeetypes "github.com/cosmos/ibc-go/v7/modules/apps/29-fee/types" - ibctransfer "github.com/cosmos/ibc-go/v7/modules/apps/transfer" - ibctransferkeeper "github.com/cosmos/ibc-go/v7/modules/apps/transfer/keeper" - ibctransfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" - ibc "github.com/cosmos/ibc-go/v7/modules/core" - ibcclient "github.com/cosmos/ibc-go/v7/modules/core/02-client" ibcclientclient "github.com/cosmos/ibc-go/v7/modules/core/02-client/client" - ibcclienttypes "github.com/cosmos/ibc-go/v7/modules/core/02-client/types" - ibcporttypes "github.com/cosmos/ibc-go/v7/modules/core/05-port/types" - ibchost "github.com/cosmos/ibc-go/v7/modules/core/exported" - ibckeeper "github.com/cosmos/ibc-go/v7/modules/core/keeper" - - autocliv1 "cosmossdk.io/api/cosmos/autocli/v1" - reflectionv1 "cosmossdk.io/api/cosmos/reflection/v1" - "github.com/comdex-official/comdex/x/liquidation" - liquidationkeeper "github.com/comdex-official/comdex/x/liquidation/keeper" - liquidationtypes "github.com/comdex-official/comdex/x/liquidation/types" - runtimeservices "github.com/cosmos/cosmos-sdk/runtime/services" - - tmdb "github.com/cometbft/cometbft-db" - abcitypes "github.com/cometbft/cometbft/abci/types" - tmjson "github.com/cometbft/cometbft/libs/json" - "github.com/cometbft/cometbft/libs/log" - tmos "github.com/cometbft/cometbft/libs/os" - tmprototypes "github.com/cometbft/cometbft/proto/tendermint/types" - - "github.com/comdex-official/comdex/x/asset" - assetclient "github.com/comdex-official/comdex/x/asset/client" - assetkeeper "github.com/comdex-official/comdex/x/asset/keeper" - assettypes "github.com/comdex-official/comdex/x/asset/types" - "github.com/comdex-official/comdex/x/auction" - auctionkeeper "github.com/comdex-official/comdex/x/auction/keeper" - auctiontypes "github.com/comdex-official/comdex/x/auction/types" - "github.com/comdex-official/comdex/x/collector" - collectorkeeper "github.com/comdex-official/comdex/x/collector/keeper" - collectortypes "github.com/comdex-official/comdex/x/collector/types" - "github.com/comdex-official/comdex/x/esm" - esmkeeper "github.com/comdex-official/comdex/x/esm/keeper" - esmtypes "github.com/comdex-official/comdex/x/esm/types" - - "github.com/comdex-official/comdex/x/lend" - lendclient "github.com/comdex-official/comdex/x/lend/client" - lendkeeper "github.com/comdex-official/comdex/x/lend/keeper" - lendtypes "github.com/comdex-official/comdex/x/lend/types" - "github.com/comdex-official/comdex/x/locker" - lockerkeeper "github.com/comdex-official/comdex/x/locker/keeper" - lockertypes "github.com/comdex-official/comdex/x/locker/types" - bandoraclemodule "github.com/comdex-official/comdex/x/bandoracle" - bandoraclemoduleclient "github.com/comdex-official/comdex/x/bandoracle/client" - bandoraclemodulekeeper "github.com/comdex-official/comdex/x/bandoracle/keeper" - bandoraclemoduletypes "github.com/comdex-official/comdex/x/bandoracle/types" - - "github.com/comdex-official/comdex/x/market" - marketkeeper "github.com/comdex-official/comdex/x/market/keeper" - markettypes "github.com/comdex-official/comdex/x/market/types" - - "github.com/comdex-official/comdex/x/rewards" - rewardskeeper "github.com/comdex-official/comdex/x/rewards/keeper" - rewardstypes "github.com/comdex-official/comdex/x/rewards/types" - - "github.com/comdex-official/comdex/x/tokenmint" - tokenmintkeeper "github.com/comdex-official/comdex/x/tokenmint/keeper" - tokenminttypes "github.com/comdex-official/comdex/x/tokenmint/types" - - "github.com/comdex-official/comdex/x/vault" - vaultkeeper "github.com/comdex-official/comdex/x/vault/keeper" - vaulttypes "github.com/comdex-official/comdex/x/vault/types" - - "github.com/CosmWasm/wasmd/x/wasm" - wasmtypes "github.com/CosmWasm/wasmd/x/wasm/types" - vestingtypes "github.com/cosmos/cosmos-sdk/x/auth/vesting/types" - - authzkeeper "github.com/cosmos/cosmos-sdk/x/authz/keeper" - authzmodule "github.com/cosmos/cosmos-sdk/x/authz/module" - - "github.com/comdex-official/comdex/x/liquidity" - liquidityclient "github.com/comdex-official/comdex/x/liquidity/client" - liquiditykeeper "github.com/comdex-official/comdex/x/liquidity/keeper" - liquiditytypes "github.com/comdex-official/comdex/x/liquidity/types" - - "github.com/comdex-official/comdex/x/liquidationsV2" - liquidationsV2client "github.com/comdex-official/comdex/x/liquidationsV2/client" - liquidationsV2keeper "github.com/comdex-official/comdex/x/liquidationsV2/keeper" - liquidationsV2types "github.com/comdex-official/comdex/x/liquidationsV2/types" - - "github.com/comdex-official/comdex/x/auctionsV2" auctionsV2client "github.com/comdex-official/comdex/x/auctionsV2/client" - auctionsV2keeper "github.com/comdex-official/comdex/x/auctionsV2/keeper" auctionsV2types "github.com/comdex-official/comdex/x/auctionsV2/types" - icq "github.com/cosmos/ibc-apps/modules/async-icq/v7" - icqkeeper "github.com/cosmos/ibc-apps/modules/async-icq/v7/keeper" icqtypes "github.com/cosmos/ibc-apps/modules/async-icq/v7/types" - cwasm "github.com/comdex-official/comdex/app/wasm" - mv13 "github.com/comdex-official/comdex/app/upgrades/mainnet/v13" tv13 "github.com/comdex-official/comdex/app/upgrades/testnet/v13" - - "github.com/cosmos/cosmos-sdk/x/nft" - nftkeeper "github.com/cosmos/cosmos-sdk/x/nft/keeper" - nftmodule "github.com/cosmos/cosmos-sdk/x/nft/module" ) const ( @@ -256,8 +119,8 @@ func GetGovProposalHandlers() []govclient.ProposalHandler { return proposalHandlers } +// DefaultNodeHome default home directories for the application daemon var ( - // DefaultNodeHome default home directories for the application daemon DefaultNodeHome string // If EnableSpecificWasmProposals is "", and this is "true", then enable all x/wasm proposals. // If EnableSpecificWasmProposals is "", and this is not "true", then disable all x/wasm proposals. @@ -268,53 +131,6 @@ var ( EnableSpecificWasmProposals = "" // use this for clarity in argument list EmptyWasmOpts []wasm.Option - // ModuleBasics defines the module BasicManager is in charge of setting up basic, - // non-dependant module elements, such as codec registration - // and genesis verification. - ModuleBasics = module.NewBasicManager( - auth.AppModuleBasic{}, - genutil.NewAppModuleBasic(genutiltypes.DefaultMessageValidator), - bank.AppModuleBasic{}, - capability.AppModuleBasic{}, - staking.AppModuleBasic{}, - mint.AppModuleBasic{}, - distr.AppModuleBasic{}, - gov.NewAppModuleBasic(GetGovProposalHandlers()), - params.AppModuleBasic{}, - crisis.AppModuleBasic{}, - slashing.AppModuleBasic{}, - authzmodule.AppModuleBasic{}, - ibc.AppModuleBasic{}, - ibctm.AppModuleBasic{}, - upgrade.AppModuleBasic{}, - evidence.AppModuleBasic{}, - ibctransfer.AppModuleBasic{}, - consensus.AppModuleBasic{}, - vesting.AppModuleBasic{}, - vault.AppModuleBasic{}, - asset.AppModuleBasic{}, - esm.AppModuleBasic{}, - lend.AppModuleBasic{}, - - market.AppModuleBasic{}, - locker.AppModuleBasic{}, - bandoraclemodule.AppModuleBasic{}, - collector.AppModuleBasic{}, - liquidation.AppModuleBasic{}, - auction.AppModuleBasic{}, - tokenmint.AppModuleBasic{}, - wasm.AppModuleBasic{}, - liquidity.AppModuleBasic{}, - rewards.AppModuleBasic{}, - ica.AppModuleBasic{}, - ibcfee.AppModuleBasic{}, - liquidationsV2.AppModuleBasic{}, - auctionsV2.AppModuleBasic{}, - icq.AppModuleBasic{}, - ibchooks.AppModuleBasic{}, - packetforward.AppModuleBasic{}, - nftmodule.AppModuleBasic{}, - ) ) var _ servertypes.Application = (*App)(nil) @@ -331,85 +147,33 @@ func init() { // App extends an ABCI application, but with most of its parameters exported. // They are exported for convenience in creating helper functions, as object // capabilities aren't needed for testing. + type App struct { *baseapp.BaseApp - - amino *codec.LegacyAmino - cdc codec.Codec - + legacyAmino *codec.LegacyAmino + appCodec codec.Codec + txConfig client.TxConfig + invCheckPeriod uint interfaceRegistry codectypes.InterfaceRegistry - invCheckPeriod uint - // keys to access the substores keys map[string]*storetypes.KVStoreKey tkeys map[string]*storetypes.TransientStoreKey - mkeys map[string]*storetypes.MemoryStoreKey - - // keepers - AccountKeeper authkeeper.AccountKeeper - FeegrantKeeper feegrantkeeper.Keeper - BankKeeper bankkeeper.Keeper - BankBaseKeeper *bankkeeper.BaseKeeper - AuthzKeeper authzkeeper.Keeper - CapabilityKeeper *capabilitykeeper.Keeper - StakingKeeper *stakingkeeper.Keeper - SlashingKeeper slashingkeeper.Keeper - MintKeeper mintkeeper.Keeper - DistrKeeper distrkeeper.Keeper - GovKeeper govkeeper.Keeper - CrisisKeeper *crisiskeeper.Keeper - UpgradeKeeper *upgradekeeper.Keeper - ParamsKeeper paramskeeper.Keeper - IbcKeeper *ibckeeper.Keeper // IBC Keeper must be a pointer in the app, so we can SetRouter on it correctly - IBCFeeKeeper ibcfeekeeper.Keeper - IbcHooksKeeper *ibchookskeeper.Keeper - ICAHostKeeper icahostkeeper.Keeper - EvidenceKeeper evidencekeeper.Keeper - IbcTransferKeeper ibctransferkeeper.Keeper - - // make scoped keepers public for test purposes - ScopedIBCKeeper capabilitykeeper.ScopedKeeper - ScopedIBCTransferKeeper capabilitykeeper.ScopedKeeper - ScopedIBCOracleKeeper capabilitykeeper.ScopedKeeper - ScopedBandoracleKeeper capabilitykeeper.ScopedKeeper - ScopedICAHostKeeper capabilitykeeper.ScopedKeeper - ScopedICQKeeper capabilitykeeper.ScopedKeeper + mKeys map[string]*storetypes.MemoryStoreKey - BandoracleKeeper bandoraclemodulekeeper.Keeper - AssetKeeper assetkeeper.Keeper - CollectorKeeper collectorkeeper.Keeper - VaultKeeper vaultkeeper.Keeper + AppKeepers keepers.AppKeepers - MarketKeeper marketkeeper.Keeper - LiquidationKeeper liquidationkeeper.Keeper - LockerKeeper lockerkeeper.Keeper - EsmKeeper esmkeeper.Keeper - LendKeeper lendkeeper.Keeper - ScopedWasmKeeper capabilitykeeper.ScopedKeeper - AuctionKeeper auctionkeeper.Keeper - TokenmintKeeper tokenmintkeeper.Keeper - LiquidityKeeper liquiditykeeper.Keeper - Rewardskeeper rewardskeeper.Keeper - NewliqKeeper liquidationsV2keeper.Keeper - NewaucKeeper auctionsV2keeper.Keeper - NFTKeeper nftkeeper.Keeper - - // IBC modules - // transfer module - Ics20WasmHooks *ibchooks.WasmHooks - HooksICS4Wrapper ibchooks.ICS4Middleware - PacketForwardKeeper *packetforwardkeeper.Keeper - ICQKeeper *icqkeeper.Keeper + // the module manager + ModuleManager *module.Manager - ConsensusParamsKeeper consensusparamkeeper.Keeper + // simulation manager + sm *module.SimulationManager - WasmKeeper wasm.Keeper - ContractKeeper *wasmkeeper.PermissionedKeeper - // the module manager - mm *module.Manager - // Module configurator + // module configurator configurator module.Configurator + + // custom checkTx handler + //checkTxHandler pobabci.CheckTx } // New returns a reference to an initialized App. @@ -418,828 +182,89 @@ func New( db tmdb.DB, traceStore io.Writer, loadLatest bool, - skipUpgradeHeights map[int64]bool, - homePath string, invCheckPeriod uint, - encoding EncodingConfig, appOptions servertypes.AppOptions, wasmEnabledProposals []wasm.ProposalType, wasmOpts []wasm.Option, baseAppOptions ...func(*baseapp.BaseApp), ) *App { - appCodec := encoding.Marshaler - var ( - tkeys = sdk.NewTransientStoreKeys(paramstypes.TStoreKey) - mkeys = sdk.NewMemoryStoreKeys(capabilitytypes.MemStoreKey) - keys = sdk.NewKVStoreKeys( - authtypes.StoreKey, banktypes.StoreKey, stakingtypes.StoreKey, - minttypes.StoreKey, distrtypes.StoreKey, slashingtypes.StoreKey, - govtypes.StoreKey, paramstypes.StoreKey, ibchost.StoreKey, icahosttypes.StoreKey, upgradetypes.StoreKey, - evidencetypes.StoreKey, ibctransfertypes.StoreKey, ibcfeetypes.StoreKey, capabilitytypes.StoreKey, - vaulttypes.StoreKey, assettypes.StoreKey, collectortypes.StoreKey, liquidationtypes.StoreKey, - markettypes.StoreKey, bandoraclemoduletypes.StoreKey, lockertypes.StoreKey, - wasm.StoreKey, authzkeeper.StoreKey, auctiontypes.StoreKey, tokenminttypes.StoreKey, - rewardstypes.StoreKey, feegrant.StoreKey, liquiditytypes.StoreKey, esmtypes.ModuleName, lendtypes.StoreKey, - liquidationsV2types.StoreKey, auctionsV2types.StoreKey, ibchookstypes.StoreKey, packetforwardtypes.StoreKey, - icqtypes.StoreKey, consensusparamtypes.StoreKey, crisistypes.StoreKey, nftkeeper.StoreKey, - ) - ) - baseApp := baseapp.NewBaseApp(Name, logger, db, encoding.TxConfig.TxDecoder(), baseAppOptions...) + encodingConfig := MakeEncodingConfig() + appCodec, legacyAmino := encodingConfig.Marshaler, encodingConfig.Amino + interfaceRegistry := encodingConfig.InterfaceRegistry + txConfig := encodingConfig.TxConfig + + baseApp := baseapp.NewBaseApp(Name, logger, db, txConfig.TxDecoder(), baseAppOptions...) baseApp.SetCommitMultiStoreTracer(traceStore) baseApp.SetVersion(version.Version) - baseApp.SetInterfaceRegistry(encoding.InterfaceRegistry) + baseApp.SetInterfaceRegistry(interfaceRegistry) app := &App{ BaseApp: baseApp, - amino: encoding.Amino, - cdc: encoding.Marshaler, - interfaceRegistry: encoding.InterfaceRegistry, + legacyAmino: legacyAmino, + appCodec: appCodec, + interfaceRegistry: interfaceRegistry, invCheckPeriod: invCheckPeriod, - keys: keys, - tkeys: tkeys, - mkeys: mkeys, + tkeys: sdk.NewTransientStoreKeys(paramstypes.TStoreKey), + mKeys: sdk.NewMemoryStoreKeys(capabilitytypes.MemStoreKey), } - app.ParamsKeeper = paramskeeper.NewKeeper( - app.cdc, - app.amino, - app.keys[paramstypes.StoreKey], - app.tkeys[paramstypes.TStoreKey], - ) - - //nolint:godox //TODO: refactor this code - app.ParamsKeeper.Subspace(authtypes.ModuleName).WithKeyTable(authtypes.ParamKeyTable()) - app.ParamsKeeper.Subspace(banktypes.ModuleName).WithKeyTable(banktypes.ParamKeyTable()) - app.ParamsKeeper.Subspace(stakingtypes.ModuleName).WithKeyTable(stakingtypes.ParamKeyTable()) - app.ParamsKeeper.Subspace(minttypes.ModuleName).WithKeyTable(minttypes.ParamKeyTable()) - app.ParamsKeeper.Subspace(distrtypes.ModuleName).WithKeyTable(distrtypes.ParamKeyTable()) - app.ParamsKeeper.Subspace(slashingtypes.ModuleName).WithKeyTable(slashingtypes.ParamKeyTable()) - app.ParamsKeeper.Subspace(govtypes.ModuleName).WithKeyTable(govtypesv1.ParamKeyTable()) - app.ParamsKeeper.Subspace(crisistypes.ModuleName).WithKeyTable(crisistypes.ParamKeyTable()) - app.ParamsKeeper.Subspace(ibctransfertypes.ModuleName) - app.ParamsKeeper.Subspace(ibchost.ModuleName) - app.ParamsKeeper.Subspace(icahosttypes.SubModuleName) - app.ParamsKeeper.Subspace(vaulttypes.ModuleName) - app.ParamsKeeper.Subspace(assettypes.ModuleName) - app.ParamsKeeper.Subspace(collectortypes.ModuleName) - app.ParamsKeeper.Subspace(esmtypes.ModuleName) - app.ParamsKeeper.Subspace(lendtypes.ModuleName) - app.ParamsKeeper.Subspace(markettypes.ModuleName) - app.ParamsKeeper.Subspace(liquidationtypes.ModuleName) - app.ParamsKeeper.Subspace(lockertypes.ModuleName) - app.ParamsKeeper.Subspace(bandoraclemoduletypes.ModuleName) - app.ParamsKeeper.Subspace(wasmtypes.ModuleName).WithKeyTable(wasmtypes.ParamKeyTable()) - app.ParamsKeeper.Subspace(auctiontypes.ModuleName) - app.ParamsKeeper.Subspace(tokenminttypes.ModuleName) - app.ParamsKeeper.Subspace(liquiditytypes.ModuleName) - app.ParamsKeeper.Subspace(rewardstypes.ModuleName) - app.ParamsKeeper.Subspace(liquidationsV2types.ModuleName) - app.ParamsKeeper.Subspace(auctionsV2types.ModuleName) - app.ParamsKeeper.Subspace(icqtypes.ModuleName) - app.ParamsKeeper.Subspace(packetforwardtypes.ModuleName).WithKeyTable(packetforwardtypes.ParamKeyTable()) - - // set the BaseApp's parameter store - // baseApp.SetParamStore( - // app.ParamsKeeper. - // Subspace(baseapp.Paramspace). - // WithKeyTable(paramskeeper.ConsensusParamsKeyTable()), - // ) - app.ConsensusParamsKeeper = consensusparamkeeper.NewKeeper(appCodec, keys[consensusparamtypes.StoreKey], authtypes.NewModuleAddress(govtypes.ModuleName).String()) - baseApp.SetParamStore(&app.ConsensusParamsKeeper) - - // add capability keeper and ScopeToModule for ibc module - app.CapabilityKeeper = capabilitykeeper.NewKeeper( - app.cdc, - app.keys[capabilitytypes.StoreKey], - app.mkeys[capabilitytypes.MemStoreKey], - ) - - // grant capabilities for the ibc and ibc-transfer modules - var ( - scopedIBCKeeper = app.CapabilityKeeper.ScopeToModule(ibchost.ModuleName) - scopedTransferKeeper = app.CapabilityKeeper.ScopeToModule(ibctransfertypes.ModuleName) - scopedIBCOracleKeeper = app.CapabilityKeeper.ScopeToModule(markettypes.ModuleName) // can remove it - scopedWasmKeeper = app.CapabilityKeeper.ScopeToModule(wasm.ModuleName) - scopedICAHostKeeper = app.CapabilityKeeper.ScopeToModule(icahosttypes.SubModuleName) - scopedBandoracleKeeper = app.CapabilityKeeper.ScopeToModule(bandoraclemoduletypes.ModuleName) - scopedICQKeeper = app.CapabilityKeeper.ScopeToModule(icqtypes.ModuleName) - ) - - // add keepers - app.AccountKeeper = authkeeper.NewAccountKeeper( - app.cdc, - app.keys[authtypes.StoreKey], - authtypes.ProtoBaseAccount, - app.ModuleAccountsPermissions(), - AccountAddressPrefix, - authtypes.NewModuleAddress(govtypes.ModuleName).String(), - ) - app.BankKeeper = bankkeeper.NewBaseKeeper( - app.cdc, - app.keys[banktypes.StoreKey], - app.AccountKeeper, - nil, - authtypes.NewModuleAddress(govtypes.ModuleName).String(), - ) - stakingKeeper := stakingkeeper.NewKeeper( - app.cdc, - app.keys[stakingtypes.StoreKey], - app.AccountKeeper, - app.BankKeeper, - authtypes.NewModuleAddress(govtypes.ModuleName).String(), - ) - app.MintKeeper = mintkeeper.NewKeeper( - app.cdc, - app.keys[minttypes.StoreKey], - stakingKeeper, - app.AccountKeeper, - app.BankKeeper, - authtypes.FeeCollectorName, - authtypes.NewModuleAddress(govtypes.ModuleName).String(), - ) - app.DistrKeeper = distrkeeper.NewKeeper( - app.cdc, - app.keys[distrtypes.StoreKey], - app.AccountKeeper, - app.BankKeeper, - stakingKeeper, - authtypes.FeeCollectorName, - authtypes.NewModuleAddress(govtypes.ModuleName).String(), - ) - app.SlashingKeeper = slashingkeeper.NewKeeper( - app.cdc, - encoding.Amino, - app.keys[slashingtypes.StoreKey], - stakingKeeper, - authtypes.NewModuleAddress(govtypes.ModuleName).String(), - ) - app.CrisisKeeper = crisiskeeper.NewKeeper( - app.cdc, - app.keys[crisistypes.StoreKey], - invCheckPeriod, - app.BankKeeper, - authtypes.FeeCollectorName, - authtypes.NewModuleAddress(govtypes.ModuleName).String(), - ) - - app.AuthzKeeper = authzkeeper.NewKeeper( - keys[authzkeeper.StoreKey], - app.cdc, - baseApp.MsgServiceRouter(), - app.AccountKeeper, - ) - - app.UpgradeKeeper = upgradekeeper.NewKeeper( - skipUpgradeHeights, - app.keys[upgradetypes.StoreKey], - app.cdc, - homePath, - app.BaseApp, - authtypes.NewModuleAddress(govtypes.ModuleName).String(), - ) - // register the staking hooks - // NOTE: StakingKeeper above is passed by reference, so that it will contain these hooks - // app.StakingKeeper = *stakingKeeper.SetHooks( - // stakingtypes.NewMultiStakingHooks( - // app.DistrKeeper.Hooks(), - // app.SlashingKeeper.Hooks(), - // ), - // ) - stakingKeeper.SetHooks( - stakingtypes.NewMultiStakingHooks(app.DistrKeeper.Hooks(), - app.SlashingKeeper.Hooks()), - ) - app.StakingKeeper = stakingKeeper - - // Create IBC Keeper - app.IbcKeeper = ibckeeper.NewKeeper( - app.cdc, - app.keys[ibchost.StoreKey], - app.GetSubspace(ibchost.ModuleName), - app.StakingKeeper, - app.UpgradeKeeper, - scopedIBCKeeper, - ) - - app.NFTKeeper = nftkeeper.NewKeeper(keys[nftkeeper.StoreKey], appCodec, app.AccountKeeper, app.BankKeeper) - - // Configure the hooks keeper - hooksKeeper := ibchookskeeper.NewKeeper( - app.keys[ibchookstypes.StoreKey], - ) - app.IbcHooksKeeper = &hooksKeeper - - cmdxPrefix := sdk.GetConfig().GetBech32AccountAddrPrefix() - wasmHooks := ibchooks.NewWasmHooks(app.IbcHooksKeeper, &app.WasmKeeper, cmdxPrefix) // The contract keeper needs to be set later - app.Ics20WasmHooks = &wasmHooks - app.HooksICS4Wrapper = ibchooks.NewICS4Middleware( - app.IbcKeeper.ChannelKeeper, - app.Ics20WasmHooks, - ) - - // Do not use this middleware for anything except x/wasm requirement. - // The spec currently requires new channels to be created, to use it. - // We need to wait for Channel Upgradability before we can use this for any other middleware. - app.IBCFeeKeeper = ibcfeekeeper.NewKeeper( - appCodec, - app.keys[ibcfeetypes.StoreKey], - app.HooksICS4Wrapper, // replaced with IBC middleware - app.IbcKeeper.ChannelKeeper, - &app.IbcKeeper.PortKeeper, - app.AccountKeeper, - app.BankKeeper, - ) - - app.PacketForwardKeeper = packetforwardkeeper.NewKeeper( - appCodec, - app.keys[packetforwardtypes.StoreKey], - app.GetSubspace(packetforwardtypes.ModuleName), - app.IbcTransferKeeper, // Will be zero-value here. Reference is set later on with SetTransferKeeper. - app.IbcKeeper.ChannelKeeper, - app.DistrKeeper, - app.BankKeeper, - app.IbcKeeper.ChannelKeeper, - ) - - app.IbcTransferKeeper = ibctransferkeeper.NewKeeper( - appCodec, - app.keys[ibctransfertypes.StoreKey], - app.GetSubspace(ibctransfertypes.ModuleName), - app.PacketForwardKeeper, - app.IbcKeeper.ChannelKeeper, - &app.IbcKeeper.PortKeeper, - app.AccountKeeper, - app.BankKeeper, - scopedTransferKeeper, - ) - - app.PacketForwardKeeper.SetTransferKeeper(app.IbcTransferKeeper) - - app.ICAHostKeeper = icahostkeeper.NewKeeper( - appCodec, app.keys[icahosttypes.StoreKey], - app.GetSubspace(icahosttypes.SubModuleName), - app.HooksICS4Wrapper, - app.IbcKeeper.ChannelKeeper, - &app.IbcKeeper.PortKeeper, - app.AccountKeeper, - scopedICAHostKeeper, - app.MsgServiceRouter(), - ) - - app.AssetKeeper = assetkeeper.NewKeeper( - app.cdc, - app.keys[assettypes.StoreKey], - app.GetSubspace(assettypes.ModuleName), - app.AccountKeeper, - app.BankKeeper, - &app.Rewardskeeper, - &app.VaultKeeper, - &app.BandoracleKeeper, - ) - - app.LendKeeper = lendkeeper.NewKeeper( - app.cdc, - app.keys[lendtypes.StoreKey], - app.keys[lendtypes.StoreKey], - app.GetSubspace(lendtypes.ModuleName), - app.BankKeeper, - app.AccountKeeper, - &app.AssetKeeper, - &app.MarketKeeper, - &app.EsmKeeper, - &app.LiquidationKeeper, - &app.AuctionKeeper, - ) - - app.EsmKeeper = esmkeeper.NewKeeper( - app.cdc, - app.keys[esmtypes.StoreKey], - app.keys[esmtypes.StoreKey], - app.GetSubspace(esmtypes.ModuleName), - &app.AssetKeeper, - &app.VaultKeeper, - app.BankKeeper, - &app.MarketKeeper, - &app.TokenmintKeeper, - &app.CollectorKeeper, - ) - - app.VaultKeeper = vaultkeeper.NewKeeper( - app.cdc, - app.keys[vaulttypes.StoreKey], - app.BankKeeper, - &app.AssetKeeper, - &app.MarketKeeper, - &app.CollectorKeeper, - &app.EsmKeeper, - &app.TokenmintKeeper, - &app.Rewardskeeper, - ) - - app.TokenmintKeeper = tokenmintkeeper.NewKeeper( - app.cdc, - app.keys[tokenminttypes.StoreKey], - app.BankKeeper, - &app.AssetKeeper, - ) - - app.BandoracleKeeper = bandoraclemodulekeeper.NewKeeper( - appCodec, - keys[bandoraclemoduletypes.StoreKey], - keys[bandoraclemoduletypes.MemStoreKey], - app.GetSubspace(bandoraclemoduletypes.ModuleName), - app.IbcKeeper.ChannelKeeper, - &app.IbcKeeper.PortKeeper, - scopedBandoracleKeeper, - &app.MarketKeeper, - app.AssetKeeper, - ) - bandoracleModule := bandoraclemodule.NewAppModule( - appCodec, - app.BandoracleKeeper, - app.AccountKeeper, - app.BankKeeper, - app.ScopedBandoracleKeeper, - &app.IbcKeeper.PortKeeper, - app.IbcKeeper.ChannelKeeper, - ) - - app.MarketKeeper = marketkeeper.NewKeeper( - app.cdc, - app.keys[markettypes.StoreKey], - app.GetSubspace(markettypes.ModuleName), - scopedIBCOracleKeeper, - app.AssetKeeper, - &app.BandoracleKeeper, - ) - - app.LiquidationKeeper = liquidationkeeper.NewKeeper( - app.cdc, - keys[liquidationtypes.StoreKey], - keys[liquidationtypes.MemStoreKey], - app.GetSubspace(liquidationtypes.ModuleName), - app.AccountKeeper, - app.BankKeeper, - &app.AssetKeeper, - &app.VaultKeeper, - &app.MarketKeeper, - &app.AuctionKeeper, - &app.EsmKeeper, - &app.Rewardskeeper, - &app.LendKeeper, - ) - - app.AuctionKeeper = auctionkeeper.NewKeeper( - app.cdc, - keys[auctiontypes.StoreKey], - keys[auctiontypes.MemStoreKey], - app.GetSubspace(auctiontypes.ModuleName), - app.AccountKeeper, - app.BankKeeper, - &app.MarketKeeper, - &app.LiquidationKeeper, - &app.AssetKeeper, - &app.VaultKeeper, - &app.CollectorKeeper, - &app.TokenmintKeeper, - &app.EsmKeeper, - &app.LendKeeper, - ) - - app.CollectorKeeper = collectorkeeper.NewKeeper( - app.cdc, - app.keys[collectortypes.StoreKey], - app.keys[collectortypes.MemStoreKey], - &app.AssetKeeper, - &app.AuctionKeeper, - &app.LockerKeeper, - &app.Rewardskeeper, - app.GetSubspace(collectortypes.ModuleName), - app.BankKeeper, - ) - - app.LockerKeeper = lockerkeeper.NewKeeper( - app.cdc, - app.keys[lockertypes.StoreKey], - app.GetSubspace(lockertypes.ModuleName), - app.BankKeeper, - &app.AssetKeeper, - &app.CollectorKeeper, - &app.EsmKeeper, - &app.Rewardskeeper, - ) - - app.LiquidityKeeper = liquiditykeeper.NewKeeper( - app.cdc, - app.keys[liquiditytypes.StoreKey], - app.GetSubspace(liquiditytypes.ModuleName), - app.AccountKeeper, - app.BankKeeper, - &app.AssetKeeper, - &app.MarketKeeper, - &app.Rewardskeeper, - &app.TokenmintKeeper, - ) - - app.Rewardskeeper = rewardskeeper.NewKeeper( - app.cdc, - app.keys[rewardstypes.StoreKey], - app.keys[rewardstypes.MemStoreKey], - app.GetSubspace(rewardstypes.ModuleName), - &app.LockerKeeper, - &app.CollectorKeeper, - &app.VaultKeeper, - &app.AssetKeeper, - app.BankKeeper, - app.LiquidityKeeper, - &app.MarketKeeper, - &app.EsmKeeper, - &app.LendKeeper, - ) - - app.NewliqKeeper = liquidationsV2keeper.NewKeeper( - app.cdc, - app.keys[liquidationsV2types.StoreKey], - app.keys[liquidationsV2types.MemStoreKey], - app.GetSubspace(liquidationsV2types.ModuleName), - app.AccountKeeper, - app.BankKeeper, - &app.AssetKeeper, - &app.VaultKeeper, - &app.MarketKeeper, - &app.EsmKeeper, - &app.Rewardskeeper, - &app.LendKeeper, - &app.NewaucKeeper, - &app.CollectorKeeper, - ) - - app.NewaucKeeper = auctionsV2keeper.NewKeeper( - app.cdc, - app.keys[auctionsV2types.StoreKey], - app.keys[auctionsV2types.MemStoreKey], - app.GetSubspace(auctionsV2types.ModuleName), - &app.NewliqKeeper, - app.BankKeeper, - &app.MarketKeeper, - &app.AssetKeeper, - &app.EsmKeeper, - &app.VaultKeeper, - &app.CollectorKeeper, - &app.TokenmintKeeper, - ) - - // ICQ Keeper - icqKeeper := icqkeeper.NewKeeper( + app.AppKeepers = keepers.NewAppKeepers( appCodec, - app.keys[icqtypes.StoreKey], - app.GetSubspace(icqtypes.ModuleName), - app.IbcKeeper.ChannelKeeper, // may be replaced with middleware - app.IbcKeeper.ChannelKeeper, - &app.IbcKeeper.PortKeeper, - scopedICQKeeper, - app.GRPCQueryRouter(), - // NewQuerierWrapper(baseApp), // in-case of strangelove-ventures icq + baseApp, + legacyAmino, + keepers.GetMaccPerms(), + appOptions, + wasmOpts, + "ucmdx", ) - app.ICQKeeper = &icqKeeper - - // Create Async ICQ module - icqModule := icq.NewIBCModule(*app.ICQKeeper) - - // Note: the sealing is done after creating wasmd and wiring that up - - wasmDir := filepath.Join(homePath, "wasm") - wasmConfig, err := wasm.ReadWasmConfig(appOptions) - if err != nil { - panic(fmt.Sprintf("error while reading wasm config: %s", err)) - } - supportedFeatures := "iterator,staking,stargate,comdex,cosmwasm_1_1,cosmwasm_1_2,cosmwasm_1_3" - - wasmOpts = append(cwasm.RegisterCustomPlugins(&app.LockerKeeper, &app.TokenmintKeeper, &app.AssetKeeper, &app.Rewardskeeper, &app.CollectorKeeper, &app.LiquidationKeeper, &app.AuctionKeeper, &app.EsmKeeper, &app.VaultKeeper, &app.LendKeeper, &app.LiquidityKeeper, &app.MarketKeeper), wasmOpts...) - - app.WasmKeeper = wasmkeeper.NewKeeper( - app.cdc, - keys[wasmtypes.StoreKey], - app.AccountKeeper, - app.BankKeeper, - app.StakingKeeper, - distrkeeper.NewQuerier(app.DistrKeeper), - app.IBCFeeKeeper, - app.IbcKeeper.ChannelKeeper, - &app.IbcKeeper.PortKeeper, - scopedWasmKeeper, - app.IbcTransferKeeper, - baseApp.MsgServiceRouter(), - app.GRPCQueryRouter(), - wasmDir, - wasmConfig, - supportedFeatures, - authtypes.NewModuleAddress(govtypes.ModuleName).String(), - wasmOpts..., - ) - - // set the contract keeper for the Ics20WasmHooks - app.ContractKeeper = wasmkeeper.NewDefaultPermissionKeeper(app.WasmKeeper) - app.Ics20WasmHooks.ContractKeeper = &app.WasmKeeper - - // register the proposal types - govRouter := govtypesv1beta1.NewRouter() - govRouter.AddRoute(govtypes.RouterKey, govtypesv1beta1.ProposalHandler). - AddRoute(paramproposal.RouterKey, params.NewParamChangeProposalHandler(app.ParamsKeeper)). - AddRoute(upgradetypes.RouterKey, upgrade.NewSoftwareUpgradeProposalHandler(app.UpgradeKeeper)). - AddRoute(assettypes.RouterKey, asset.NewUpdateAssetProposalHandler(app.AssetKeeper)). - AddRoute(lendtypes.RouterKey, lend.NewLendHandler(app.LendKeeper)). - AddRoute(bandoraclemoduletypes.RouterKey, bandoraclemodule.NewFetchPriceHandler(app.BandoracleKeeper)). - AddRoute(ibchost.RouterKey, ibcclient.NewClientProposalHandler(app.IbcKeeper.ClientKeeper)). - AddRoute(ibcclienttypes.RouterKey, ibcclient.NewClientProposalHandler(app.IbcKeeper.ClientKeeper)). - AddRoute(liquiditytypes.RouterKey, liquidity.NewLiquidityProposalHandler(app.LiquidityKeeper)). - AddRoute(liquidationsV2types.RouterKey, liquidationsV2.NewLiquidationsV2Handler(app.NewliqKeeper)). - AddRoute(auctionsV2types.RouterKey, auctionsV2.NewAuctionsV2Handler(app.NewaucKeeper)) - - if len(wasmEnabledProposals) != 0 { - govRouter.AddRoute(wasm.RouterKey, wasm.NewWasmProposalHandler(app.WasmKeeper, wasmEnabledProposals)) - } - - govKeeper := govkeeper.NewKeeper( - app.cdc, keys[govtypes.StoreKey], app.AccountKeeper, app.BankKeeper, - app.StakingKeeper, app.MsgServiceRouter(), govtypes.DefaultConfig(), authtypes.NewModuleAddress(govtypes.ModuleName).String(), - ) - - govKeeper.SetLegacyRouter(govRouter) - app.GovKeeper = *govKeeper - - // Create Transfer Stack - var transferStack ibcporttypes.IBCModule - transferStack = ibctransfer.NewIBCModule(app.IbcTransferKeeper) - transferStack = ibcfee.NewIBCMiddleware(transferStack, app.IBCFeeKeeper) - transferStack = ibchooks.NewIBCMiddleware(transferStack, &app.HooksICS4Wrapper) - transferStack = packetforward.NewIBCMiddleware( - transferStack, - app.PacketForwardKeeper, - 0, - packetforwardkeeper.DefaultForwardTransferPacketTimeoutTimestamp, - packetforwardkeeper.DefaultRefundTransferPacketTimeoutTimestamp, - ) - - var ( - evidenceRouter = evidencetypes.NewRouter() - ibcRouter = ibcporttypes.NewRouter() - oracleModule = market.NewAppModule(app.cdc, app.MarketKeeper, app.BandoracleKeeper, app.AssetKeeper) - bandOracleIBCModule = bandoraclemodule.NewIBCModule(app.BandoracleKeeper) - ) - - // RecvPacket, message that originates from core IBC and goes down to app, the flow is: - // channel.RecvPacket -> fee.OnRecvPacket -> icaHost.OnRecvPacket - var icaHostStack ibcporttypes.IBCModule - icaHostStack = icahost.NewIBCModule(app.ICAHostKeeper) - icaHostStack = ibcfee.NewIBCMiddleware(icaHostStack, app.IBCFeeKeeper) - - // Create fee enabled wasm ibc Stack - var wasmStack ibcporttypes.IBCModule - wasmStack = wasm.NewIBCHandler(app.WasmKeeper, app.IbcKeeper.ChannelKeeper, app.IBCFeeKeeper) - wasmStack = ibcfee.NewIBCMiddleware(wasmStack, app.IBCFeeKeeper) - - ibcRouter.AddRoute(ibctransfertypes.ModuleName, transferStack) - ibcRouter.AddRoute(bandoraclemoduletypes.ModuleName, bandOracleIBCModule) - ibcRouter.AddRoute(wasm.ModuleName, wasmStack) - ibcRouter.AddRoute(icahosttypes.SubModuleName, icaHostStack) - ibcRouter.AddRoute(icqtypes.ModuleName, icqModule) - app.IbcKeeper.SetRouter(ibcRouter) - // Create evidence Keeper for to register the IBC light client misbehaviour evidence route - app.EvidenceKeeper = *evidencekeeper.NewKeeper( - app.cdc, - app.keys[evidencetypes.StoreKey], - app.StakingKeeper, - app.SlashingKeeper, - ) - app.EvidenceKeeper.SetRouter(evidenceRouter) - - /**** Module Options ****/ - - // NOTE: we may consider parsing `appOpts` inside module constructors. For the moment - // we prefer to be more strict in what arguments the modules expect. skipGenesisInvariants := cast.ToBool(appOptions.Get(crisis.FlagSkipGenesisInvariants)) - - // NOTE: Any module instantiated in the module manager that is later modified - // must be passed by reference here. - - app.mm = module.NewManager( - genutil.NewAppModule(app.AccountKeeper, app.StakingKeeper, app.BaseApp.DeliverTx, encoding.TxConfig), - auth.NewAppModule(app.cdc, app.AccountKeeper, authsims.RandomGenesisAccounts, app.GetSubspace(authtypes.ModuleName)), - vesting.NewAppModule(app.AccountKeeper, app.BankKeeper), - bank.NewAppModule(app.cdc, app.BankKeeper, app.AccountKeeper, app.GetSubspace(banktypes.ModuleName)), - capability.NewAppModule(app.cdc, *app.CapabilityKeeper, false), - crisis.NewAppModule(app.CrisisKeeper, skipGenesisInvariants, app.GetSubspace(crisistypes.ModuleName)), - gov.NewAppModule(app.cdc, &app.GovKeeper, app.AccountKeeper, app.BankKeeper, app.GetSubspace(govtypes.ModuleName)), - mint.NewAppModule(app.cdc, app.MintKeeper, app.AccountKeeper, nil, app.GetSubspace(minttypes.ModuleName)), // nil -> SDK's default inflation function. - slashing.NewAppModule(app.cdc, app.SlashingKeeper, app.AccountKeeper, app.BankKeeper, app.StakingKeeper, app.GetSubspace(slashingtypes.ModuleName)), - distr.NewAppModule(app.cdc, app.DistrKeeper, app.AccountKeeper, app.BankKeeper, app.StakingKeeper, app.GetSubspace(distrtypes.ModuleName)), - staking.NewAppModule(app.cdc, app.StakingKeeper, app.AccountKeeper, app.BankKeeper, app.GetSubspace(stakingtypes.ModuleName)), - upgrade.NewAppModule(app.UpgradeKeeper), - evidence.NewAppModule(app.EvidenceKeeper), - authzmodule.NewAppModule(app.cdc, app.AuthzKeeper, app.AccountKeeper, app.BankKeeper, app.interfaceRegistry), - ibc.NewAppModule(app.IbcKeeper), - ibcfee.NewAppModule(app.IBCFeeKeeper), - ica.NewAppModule(nil, &app.ICAHostKeeper), - params.NewAppModule(app.ParamsKeeper), - // app.RawIcs20TransferAppModule, - ibctransfer.NewAppModule(app.IbcTransferKeeper), - asset.NewAppModule(app.cdc, app.AssetKeeper), - vault.NewAppModule(app.cdc, app.VaultKeeper), - oracleModule, - bandoracleModule, - liquidation.NewAppModule(app.cdc, app.LiquidationKeeper, app.AccountKeeper, app.BankKeeper), - locker.NewAppModule(app.cdc, app.LockerKeeper, app.AccountKeeper, app.BankKeeper), - collector.NewAppModule(app.cdc, app.CollectorKeeper, app.AccountKeeper, app.BankKeeper), - esm.NewAppModule(app.cdc, app.EsmKeeper, app.AccountKeeper, app.BankKeeper, app.AssetKeeper), - lend.NewAppModule(app.cdc, app.LendKeeper, app.AccountKeeper, app.BankKeeper), - wasm.NewAppModule(app.cdc, &app.WasmKeeper, app.StakingKeeper, app.AccountKeeper, app.BankKeeper, app.MsgServiceRouter(), app.GetSubspace(wasmtypes.ModuleName)), - auction.NewAppModule(app.cdc, app.AuctionKeeper, app.AccountKeeper, app.BankKeeper, app.CollectorKeeper, app.AssetKeeper, app.EsmKeeper), - tokenmint.NewAppModule(app.cdc, app.TokenmintKeeper, app.AccountKeeper, app.BankKeeper), - liquidity.NewAppModule(app.cdc, app.LiquidityKeeper, app.AccountKeeper, app.BankKeeper, app.AssetKeeper), - rewards.NewAppModule(app.cdc, app.Rewardskeeper, app.AccountKeeper, app.BankKeeper), - liquidationsV2.NewAppModule(app.cdc, app.NewliqKeeper, app.AccountKeeper, app.BankKeeper), - auctionsV2.NewAppModule(app.cdc, app.NewaucKeeper, app.BankKeeper), - ibchooks.NewAppModule(app.AccountKeeper), - icq.NewAppModule(*app.ICQKeeper), - packetforward.NewAppModule(app.PacketForwardKeeper), - nftmodule.NewAppModule(appCodec, app.NFTKeeper, app.AccountKeeper, app.BankKeeper, app.interfaceRegistry), - ) - - // During begin block slashing happens after distr.BeginBlocker so that - // there is nothing left over in the validator fee pool, so as to keep the - // CanWithdrawInvariant invariant. - // NOTE: staking module is required if HistoricalEntries param > 0 - app.mm.SetOrderBeginBlockers( - upgradetypes.ModuleName, - minttypes.ModuleName, - distrtypes.ModuleName, - slashingtypes.ModuleName, - evidencetypes.ModuleName, - stakingtypes.ModuleName, - ibchost.ModuleName, - ibctransfertypes.ModuleName, - icatypes.ModuleName, - govtypes.ModuleName, - crisistypes.ModuleName, - genutiltypes.ModuleName, - feegrant.ModuleName, - authtypes.ModuleName, - capabilitytypes.ModuleName, - authz.ModuleName, - assettypes.ModuleName, - collectortypes.ModuleName, - vaulttypes.ModuleName, - bandoraclemoduletypes.ModuleName, - markettypes.ModuleName, - lockertypes.ModuleName, - liquidationtypes.ModuleName, - auctiontypes.ModuleName, - tokenminttypes.ModuleName, - vestingtypes.ModuleName, - paramstypes.ModuleName, - wasmtypes.ModuleName, - banktypes.ModuleName, - rewardstypes.ModuleName, - liquiditytypes.ModuleName, - lendtypes.ModuleName, - esmtypes.ModuleName, - liquidationsV2types.ModuleName, - auctionsV2types.ModuleName, - ibchookstypes.ModuleName, - icqtypes.ModuleName, - packetforwardtypes.ModuleName, - ibcfeetypes.ModuleName, - nft.ModuleName, - consensusparamtypes.ModuleName, - ) - - app.mm.SetOrderEndBlockers( - crisistypes.ModuleName, - govtypes.ModuleName, - stakingtypes.ModuleName, - minttypes.ModuleName, - distrtypes.ModuleName, - genutiltypes.ModuleName, - feegrant.ModuleName, - vestingtypes.ModuleName, - evidencetypes.ModuleName, - ibchost.ModuleName, - icatypes.ModuleName, - ibctransfertypes.ModuleName, - authtypes.ModuleName, - slashingtypes.ModuleName, - authz.ModuleName, - paramstypes.ModuleName, - capabilitytypes.ModuleName, - upgradetypes.ModuleName, - bandoraclemoduletypes.ModuleName, - markettypes.ModuleName, - lockertypes.ModuleName, - vaulttypes.ModuleName, - liquidationtypes.ModuleName, - auctiontypes.ModuleName, - tokenminttypes.ModuleName, - wasmtypes.ModuleName, - lendtypes.ModuleName, - assettypes.ModuleName, - collectortypes.ModuleName, - banktypes.ModuleName, - rewardstypes.ModuleName, - liquiditytypes.ModuleName, - esmtypes.ModuleName, - liquidationsV2types.ModuleName, - auctionsV2types.ModuleName, - ibchookstypes.ModuleName, - icqtypes.ModuleName, - packetforwardtypes.ModuleName, - ibcfeetypes.ModuleName, - nft.ModuleName, - consensusparamtypes.ModuleName, - ) - - // NOTE: The genutils module must occur after staking so that pools are - // properly initialized with tokens from genesis accounts. - // NOTE: Capability module must occur first so that it can initialize any capabilities - // so that other modules that want to create or claim capabilities afterwards in InitChain - // can do so safely. - app.mm.SetOrderInitGenesis( - capabilitytypes.ModuleName, - authtypes.ModuleName, - banktypes.ModuleName, - distrtypes.ModuleName, - stakingtypes.ModuleName, - slashingtypes.ModuleName, - govtypes.ModuleName, - minttypes.ModuleName, - ibchost.ModuleName, - icatypes.ModuleName, - genutiltypes.ModuleName, - evidencetypes.ModuleName, - ibctransfertypes.ModuleName, - wasmtypes.ModuleName, - authz.ModuleName, - vestingtypes.ModuleName, - paramstypes.ModuleName, - upgradetypes.ModuleName, - assettypes.ModuleName, - collectortypes.ModuleName, - esmtypes.ModuleName, - lendtypes.ModuleName, - vaulttypes.ModuleName, - tokenminttypes.ModuleName, - bandoraclemoduletypes.ModuleName, - markettypes.ModuleName, - liquidationtypes.ModuleName, - auctiontypes.ModuleName, - lockertypes.StoreKey, - liquiditytypes.ModuleName, - rewardstypes.ModuleName, - crisistypes.ModuleName, - liquidationsV2types.ModuleName, - auctionsV2types.ModuleName, - ibchookstypes.ModuleName, - icqtypes.ModuleName, - packetforwardtypes.ModuleName, - ibcfeetypes.ModuleName, - nft.ModuleName, - consensusparamtypes.ModuleName, + app.keys = app.AppKeepers.GetKVStoreKey() + app.ModuleManager = module.NewManager( + appModules(app, encodingConfig, skipGenesisInvariants)..., ) - app.mm.RegisterInvariants(app.CrisisKeeper) - app.configurator = module.NewConfigurator(app.cdc, app.MsgServiceRouter(), app.GRPCQueryRouter()) - app.mm.RegisterServices(app.configurator) - app.registerUpgradeHandlers() + app.configurator = module.NewConfigurator(appCodec, app.MsgServiceRouter(), app.GRPCQueryRouter()) + app.ModuleManager.RegisterServices(app.configurator) + app.ModuleManager.SetOrderBeginBlockers(orderBeginBlockers()...) + app.ModuleManager.SetOrderEndBlockers(orderEndBlockers()...) + app.ModuleManager.SetOrderInitGenesis(orderInitGenesis()...) + app.ModuleManager.RegisterInvariants(app.AppKeepers.CrisisKeeper) // initialize stores app.MountKVStores(app.keys) app.MountTransientStores(app.tkeys) - app.MountMemoryStores(app.mkeys) + app.MountMemoryStores(app.mKeys) + app.registerUpgradeHandlers() // SDK v47 - since we do not use dep inject, this gives us access to newer gRPC services. - autocliv1.RegisterQueryServer(app.GRPCQueryRouter(), runtimeservices.NewAutoCLIQueryService(app.mm.Modules)) + autocliv1.RegisterQueryServer(app.GRPCQueryRouter(), runtimeservices.NewAutoCLIQueryService(app.ModuleManager.Modules)) reflectionSvc, err := runtimeservices.NewReflectionService() if err != nil { panic(err) } reflectionv1.RegisterReflectionServiceServer(app.GRPCQueryRouter(), reflectionSvc) + wasmConfig, err := wasm.ReadWasmConfig(appOptions) + if err != nil { + panic("error while reading wasm config: " + err.Error()) + } + // initialize BaseApp app.SetInitChainer(app.InitChainer) app.SetBeginBlocker(app.BeginBlocker) anteHandler, err := NewAnteHandler( HandlerOptions{ HandlerOptions: ante.HandlerOptions{ - AccountKeeper: app.AccountKeeper, - BankKeeper: app.BankKeeper, - FeegrantKeeper: app.FeegrantKeeper, - SignModeHandler: encoding.TxConfig.SignModeHandler(), + AccountKeeper: app.AppKeepers.AccountKeeper, + BankKeeper: app.AppKeepers.BankKeeper, + FeegrantKeeper: app.AppKeepers.FeegrantKeeper, + SignModeHandler: encodingConfig.TxConfig.SignModeHandler(), SigGasConsumer: ante.DefaultSigVerificationGasConsumer, }, - GovKeeper: app.GovKeeper, + GovKeeper: app.AppKeepers.GovKeeper, wasmConfig: wasmConfig, - txCounterStoreKey: app.GetKey(wasm.StoreKey), - IBCChannelKeeper: app.IbcKeeper, + txCounterStoreKey: app.AppKeepers.GetKey(wasmtypes.StoreKey), + IBCChannelKeeper: app.AppKeepers.IbcKeeper, Cdc: appCodec, }, ) @@ -1252,7 +277,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()) @@ -1268,59 +293,57 @@ func New( // are loaded in-memory and prevent any further modules from creating scoped // sub-keepers. // This must be done during creation of baseapp rather than in InitChain so - // that in-memory capabilities get regenerated on app restart. + // that in-memory capabilities get regenerated on appKeepers restart. // Note that since this reads from the store, we can only perform it when // `loadLatest` is set to true. ctx := app.BaseApp.NewUncachedContext(true, tmprototypes.Header{}) - app.CapabilityKeeper.InitMemStore(ctx) - app.CapabilityKeeper.Seal() + app.AppKeepers.CapabilityKeeper.InitMemStore(ctx) + app.AppKeepers.CapabilityKeeper.Seal() } + // set the BaseApp's parameter store + // baseApp.SetParamStore( + // app.ParamsKeeper. + // Subspace(baseapp.Paramspace). + // WithKeyTable(paramskeeper.ConsensusParamsKeyTable()), + // ) - app.ScopedIBCKeeper = scopedIBCKeeper - app.ScopedIBCTransferKeeper = scopedTransferKeeper - app.ScopedIBCOracleKeeper = scopedIBCOracleKeeper - app.ScopedICAHostKeeper = scopedICAHostKeeper - app.ScopedBandoracleKeeper = scopedBandoracleKeeper - app.ScopedICQKeeper = scopedICQKeeper - - app.ScopedWasmKeeper = scopedWasmKeeper return app } // Name returns the name of the App -func (a *App) Name() string { return a.BaseApp.Name() } +func (app *App) Name() string { return app.BaseApp.Name() } // BeginBlocker application updates every begin block -func (a *App) BeginBlocker(ctx sdk.Context, req abcitypes.RequestBeginBlock) abcitypes.ResponseBeginBlock { - return a.mm.BeginBlock(ctx, req) +func (app *App) BeginBlocker(ctx sdk.Context, req abcitypes.RequestBeginBlock) abcitypes.ResponseBeginBlock { + return app.ModuleManager.BeginBlock(ctx, req) } // EndBlocker application updates every end block. -func (a *App) EndBlocker(ctx sdk.Context, req abcitypes.RequestEndBlock) abcitypes.ResponseEndBlock { - return a.mm.EndBlock(ctx, req) +func (app *App) EndBlocker(ctx sdk.Context, req abcitypes.RequestEndBlock) abcitypes.ResponseEndBlock { + return app.ModuleManager.EndBlock(ctx, req) } // InitChainer application update at chain initialization. -func (a *App) InitChainer(ctx sdk.Context, req abcitypes.RequestInitChain) abcitypes.ResponseInitChain { +func (app *App) InitChainer(ctx sdk.Context, req abcitypes.RequestInitChain) abcitypes.ResponseInitChain { var state GenesisState if err := tmjson.Unmarshal(req.AppStateBytes, &state); err != nil { panic(err) } - a.UpgradeKeeper.SetModuleVersionMap(ctx, a.mm.GetVersionMap()) - return a.mm.InitGenesis(ctx, a.AppCodec(), state) + app.AppKeepers.UpgradeKeeper.SetModuleVersionMap(ctx, app.ModuleManager.GetVersionMap()) + return app.ModuleManager.InitGenesis(ctx, app.AppCodec(), state) } // LoadHeight loads a particular height. -func (a *App) LoadHeight(height int64) error { - return a.LoadVersion(height) +func (app *App) LoadHeight(height int64) error { + return app.LoadVersion(height) } // ModuleAccountAddrs returns all the app's module account addresses. -func (a *App) ModuleAccountAddrs() map[string]bool { +func (app *App) ModuleAccountAddrs() map[string]bool { accounts := make(map[string]bool) names := make([]string, 0) - for name := range a.ModuleAccountsPermissions() { + for name := range keepers.GetMaccPerms() { names = append(names, name) } sort.Strings(names) @@ -1335,49 +358,28 @@ func (a *App) ModuleAccountAddrs() map[string]bool { // // NOTE: This is solely to be used for testing purposes as it may be desirable // for modules to register their own custom testing types. -func (a *App) LegacyAmino() *codec.LegacyAmino { - return a.amino +func (app *App) LegacyAmino() *codec.LegacyAmino { + return app.legacyAmino } // AppCodec returns App's codec. // // NOTE: This is solely to be used for testing purposes as it may be desirable // for modules to register their own custom testing types. -func (a *App) AppCodec() codec.Codec { - return a.cdc +func (app *App) AppCodec() codec.Codec { + return app.appCodec } // InterfaceRegistry returns Gaia's InterfaceRegistry. -func (a *App) InterfaceRegistry() codectypes.InterfaceRegistry { - return a.interfaceRegistry -} - -// GetKey returns the KVStoreKey for the provided store key. -// -// NOTE: This is solely to be used for testing purposes. -func (a *App) GetKey(storeKey string) *storetypes.KVStoreKey { - return a.keys[storeKey] -} - -// GetTKey returns the TransientStoreKey for the provided store key. -// -// NOTE: This is solely to be used for testing purposes. -func (a *App) GetTKey(storeKey string) *storetypes.TransientStoreKey { - return a.tkeys[storeKey] -} - -// GetMemKey returns the MemStoreKey for the provided mem key. -// -// NOTE: This is solely used for testing purposes. -func (a *App) GetMemKey(storeKey string) *storetypes.MemoryStoreKey { - return a.mkeys[storeKey] +func (app *App) InterfaceRegistry() codectypes.InterfaceRegistry { + return app.interfaceRegistry } // GetSubspace returns a param subspace for a given module name. // // NOTE: This is solely to be used for testing purposes. -func (a *App) GetSubspace(moduleName string) paramstypes.Subspace { - subspace, _ := a.ParamsKeeper.GetSubspace(moduleName) +func (app *App) GetSubspace(moduleName string) paramstypes.Subspace { + subspace, _ := app.AppKeepers.ParamsKeeper.GetSubspace(moduleName) return subspace } @@ -1427,74 +429,36 @@ func (a *App) RegisterNodeService(clientCtx client.Context) { nodeservice.RegisterNodeService(clientCtx, a.GRPCQueryRouter()) } -func (a *App) ModuleAccountsPermissions() map[string][]string { - return map[string][]string{ - authtypes.FeeCollectorName: nil, - distrtypes.ModuleName: nil, - govtypes.ModuleName: {authtypes.Burner}, - ibctransfertypes.ModuleName: {authtypes.Minter, authtypes.Burner}, - minttypes.ModuleName: {authtypes.Minter}, - stakingtypes.BondedPoolName: {authtypes.Burner, authtypes.Staking}, - stakingtypes.NotBondedPoolName: {authtypes.Burner, authtypes.Staking}, - collectortypes.ModuleName: {authtypes.Burner, authtypes.Staking}, - vaulttypes.ModuleName: {authtypes.Minter, authtypes.Burner}, - lendtypes.ModuleName: {authtypes.Minter, authtypes.Burner}, - tokenminttypes.ModuleName: {authtypes.Minter, authtypes.Burner}, - lendtypes.ModuleAcc1: {authtypes.Minter, authtypes.Burner}, - lendtypes.ModuleAcc2: {authtypes.Minter, authtypes.Burner}, - lendtypes.ModuleAcc3: {authtypes.Minter, authtypes.Burner}, - lendtypes.ModuleAcc4: {authtypes.Minter, authtypes.Burner}, - lendtypes.ModuleAcc5: {authtypes.Minter, authtypes.Burner}, - lendtypes.ModuleAcc6: {authtypes.Minter, authtypes.Burner}, - lendtypes.ModuleAcc7: {authtypes.Minter, authtypes.Burner}, - lendtypes.ModuleAcc8: {authtypes.Minter, authtypes.Burner}, - lendtypes.ModuleAcc9: {authtypes.Minter, authtypes.Burner}, - lendtypes.ModuleAcc10: {authtypes.Minter, authtypes.Burner}, - lendtypes.ModuleAcc11: {authtypes.Minter, authtypes.Burner}, - liquidationtypes.ModuleName: {authtypes.Minter, authtypes.Burner}, - auctiontypes.ModuleName: {authtypes.Minter, authtypes.Burner}, - lockertypes.ModuleName: {authtypes.Minter, authtypes.Burner}, - esmtypes.ModuleName: {authtypes.Burner}, - wasm.ModuleName: {authtypes.Burner}, - liquiditytypes.ModuleName: {authtypes.Minter, authtypes.Burner}, - rewardstypes.ModuleName: {authtypes.Minter, authtypes.Burner}, - liquidationsV2types.ModuleName: {authtypes.Minter, authtypes.Burner}, - auctionsV2types.ModuleName: {authtypes.Minter, authtypes.Burner}, - icatypes.ModuleName: nil, - ibcfeetypes.ModuleName: nil, - assettypes.ModuleName: nil, - icqtypes.ModuleName: nil, - nft.ModuleName: nil, - } -} - -func (a *App) registerUpgradeHandlers() { - a.UpgradeKeeper.SetUpgradeHandler( +func (app *App) registerUpgradeHandlers() { + app.AppKeepers.UpgradeKeeper.SetUpgradeHandler( mv13.UpgradeName, - mv13.CreateUpgradeHandlerV13(a.mm, a.configurator, a.cdc, a.ParamsKeeper, a.ConsensusParamsKeeper, *a.IbcKeeper, a.ICQKeeper, a.GovKeeper, a.AssetKeeper, a.LendKeeper, a.NewliqKeeper, a.NewaucKeeper), + mv13.CreateUpgradeHandlerV13(app.ModuleManager, app.configurator, app.appCodec, app.AppKeepers.ParamsKeeper, + app.AppKeepers.ConsensusParamsKeeper, *app.AppKeepers.IbcKeeper, app.AppKeepers.ICQKeeper, + app.AppKeepers.GovKeeper, app.AppKeepers.AssetKeeper, app.AppKeepers.LendKeeper, + app.AppKeepers.NewliqKeeper, app.AppKeepers.NewaucKeeper), ) // When a planned update height is reached, the old binary will panic // writing on disk the height and name of the update that triggered it // This will read that value, and execute the preparations for the upgrade. - upgradeInfo, err := a.UpgradeKeeper.ReadUpgradeInfoFromDisk() + upgradeInfo, err := app.AppKeepers.UpgradeKeeper.ReadUpgradeInfoFromDisk() if err != nil { panic(err) } var storeUpgrades *storetypes.StoreUpgrades - storeUpgrades = upgradeHandlers(upgradeInfo, a, storeUpgrades) + storeUpgrades = upgradeHandlers(upgradeInfo, app, storeUpgrades) if storeUpgrades != nil { // configure store loader that checks if version == upgradeHeight and applies store upgrades - a.SetStoreLoader(upgradetypes.UpgradeStoreLoader(upgradeInfo.Height, storeUpgrades)) + app.SetStoreLoader(upgradetypes.UpgradeStoreLoader(upgradeInfo.Height, storeUpgrades)) } } func upgradeHandlers(upgradeInfo upgradetypes.Plan, a *App, storeUpgrades *storetypes.StoreUpgrades) *storetypes.StoreUpgrades { switch { - case upgradeInfo.Name == mv13.UpgradeName && !a.UpgradeKeeper.IsSkipHeight(upgradeInfo.Height): + case upgradeInfo.Name == mv13.UpgradeName && !a.AppKeepers.UpgradeKeeper.IsSkipHeight(upgradeInfo.Height): storeUpgrades = &storetypes.StoreUpgrades{ Added: []string{ icqtypes.StoreKey, @@ -1505,7 +469,7 @@ func upgradeHandlers(upgradeInfo upgradetypes.Plan, a *App, storeUpgrades *store ibcfeetypes.StoreKey, }, } - case upgradeInfo.Name == tv13.UpgradeName && !a.UpgradeKeeper.IsSkipHeight(upgradeInfo.Height): + case upgradeInfo.Name == tv13.UpgradeName && !a.AppKeepers.UpgradeKeeper.IsSkipHeight(upgradeInfo.Height): storeUpgrades = &storetypes.StoreUpgrades{ Added: []string{ crisistypes.StoreKey, diff --git a/app/keepers/keepers.go b/app/keepers/keepers.go new file mode 100644 index 000000000..b406b9ff8 --- /dev/null +++ b/app/keepers/keepers.go @@ -0,0 +1,855 @@ +package keepers + +import ( + "fmt" + "github.com/CosmWasm/wasmd/x/wasm" + wasmkeeper "github.com/CosmWasm/wasmd/x/wasm/keeper" + wasmtypes "github.com/CosmWasm/wasmd/x/wasm/types" + cwasm "github.com/comdex-official/comdex/app/wasm" + "github.com/comdex-official/comdex/x/asset" + assetkeeper "github.com/comdex-official/comdex/x/asset/keeper" + assettypes "github.com/comdex-official/comdex/x/asset/types" + auctionkeeper "github.com/comdex-official/comdex/x/auction/keeper" + auctiontypes "github.com/comdex-official/comdex/x/auction/types" + "github.com/comdex-official/comdex/x/auctionsV2" + auctionsV2keeper "github.com/comdex-official/comdex/x/auctionsV2/keeper" + auctionsV2types "github.com/comdex-official/comdex/x/auctionsV2/types" + bandoraclemodule "github.com/comdex-official/comdex/x/bandoracle" + bandoraclemodulekeeper "github.com/comdex-official/comdex/x/bandoracle/keeper" + bandoraclemoduletypes "github.com/comdex-official/comdex/x/bandoracle/types" + collectorkeeper "github.com/comdex-official/comdex/x/collector/keeper" + collectortypes "github.com/comdex-official/comdex/x/collector/types" + esmkeeper "github.com/comdex-official/comdex/x/esm/keeper" + esmtypes "github.com/comdex-official/comdex/x/esm/types" + "github.com/comdex-official/comdex/x/lend" + lendkeeper "github.com/comdex-official/comdex/x/lend/keeper" + lendtypes "github.com/comdex-official/comdex/x/lend/types" + liquidationkeeper "github.com/comdex-official/comdex/x/liquidation/keeper" + liquidationtypes "github.com/comdex-official/comdex/x/liquidation/types" + "github.com/comdex-official/comdex/x/liquidationsV2" + liquidationsV2keeper "github.com/comdex-official/comdex/x/liquidationsV2/keeper" + liquidationsV2types "github.com/comdex-official/comdex/x/liquidationsV2/types" + "github.com/comdex-official/comdex/x/liquidity" + liquiditykeeper "github.com/comdex-official/comdex/x/liquidity/keeper" + liquiditytypes "github.com/comdex-official/comdex/x/liquidity/types" + lockerkeeper "github.com/comdex-official/comdex/x/locker/keeper" + lockertypes "github.com/comdex-official/comdex/x/locker/types" + "github.com/comdex-official/comdex/x/market" + marketkeeper "github.com/comdex-official/comdex/x/market/keeper" + markettypes "github.com/comdex-official/comdex/x/market/types" + rewardskeeper "github.com/comdex-official/comdex/x/rewards/keeper" + rewardstypes "github.com/comdex-official/comdex/x/rewards/types" + tokenmintkeeper "github.com/comdex-official/comdex/x/tokenmint/keeper" + tokenminttypes "github.com/comdex-official/comdex/x/tokenmint/types" + vaultkeeper "github.com/comdex-official/comdex/x/vault/keeper" + vaulttypes "github.com/comdex-official/comdex/x/vault/types" + "github.com/cosmos/cosmos-sdk/baseapp" + "github.com/cosmos/cosmos-sdk/client/flags" + "github.com/cosmos/cosmos-sdk/codec" + codectypes "github.com/cosmos/cosmos-sdk/codec/types" + "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" + "github.com/cosmos/cosmos-sdk/types/module" + authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper" + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + authzkeeper "github.com/cosmos/cosmos-sdk/x/authz/keeper" + bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper" + banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" + capabilitykeeper "github.com/cosmos/cosmos-sdk/x/capability/keeper" + capabilitytypes "github.com/cosmos/cosmos-sdk/x/capability/types" + consensusparamkeeper "github.com/cosmos/cosmos-sdk/x/consensus/keeper" + 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" + 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" + evidencetypes "github.com/cosmos/cosmos-sdk/x/evidence/types" + 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" + govtypesv1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1" + govtypesv1beta1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" + mintkeeper "github.com/cosmos/cosmos-sdk/x/mint/keeper" + minttypes "github.com/cosmos/cosmos-sdk/x/mint/types" + "github.com/cosmos/cosmos-sdk/x/nft" + nftkeeper "github.com/cosmos/cosmos-sdk/x/nft/keeper" + "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" + paramproposal "github.com/cosmos/cosmos-sdk/x/params/types/proposal" + slashingkeeper "github.com/cosmos/cosmos-sdk/x/slashing/keeper" + slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types" + stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" + stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" + "github.com/cosmos/cosmos-sdk/x/upgrade" + upgradekeeper "github.com/cosmos/cosmos-sdk/x/upgrade/keeper" + upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" + "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v7/packetforward" + packetforwardkeeper "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v7/packetforward/keeper" + packetforwardtypes "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v7/packetforward/types" + icq "github.com/cosmos/ibc-apps/modules/async-icq/v7" + icqkeeper "github.com/cosmos/ibc-apps/modules/async-icq/v7/keeper" + icqtypes "github.com/cosmos/ibc-apps/modules/async-icq/v7/types" + ibchooks "github.com/cosmos/ibc-apps/modules/ibc-hooks/v7" + ibchookskeeper "github.com/cosmos/ibc-apps/modules/ibc-hooks/v7/keeper" + ibchookstypes "github.com/cosmos/ibc-apps/modules/ibc-hooks/v7/types" + icahost "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/host" + icahostkeeper "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/host/keeper" + icahosttypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/host/types" + icatypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/types" + ibcfee "github.com/cosmos/ibc-go/v7/modules/apps/29-fee" + ibcfeekeeper "github.com/cosmos/ibc-go/v7/modules/apps/29-fee/keeper" + ibcfeetypes "github.com/cosmos/ibc-go/v7/modules/apps/29-fee/types" + ibctransfer "github.com/cosmos/ibc-go/v7/modules/apps/transfer" + ibctransferkeeper "github.com/cosmos/ibc-go/v7/modules/apps/transfer/keeper" + ibctransfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" + ibcclient "github.com/cosmos/ibc-go/v7/modules/core/02-client" + ibcclienttypes "github.com/cosmos/ibc-go/v7/modules/core/02-client/types" + ibcporttypes "github.com/cosmos/ibc-go/v7/modules/core/05-port/types" + ibchost "github.com/cosmos/ibc-go/v7/modules/core/exported" + ibckeeper "github.com/cosmos/ibc-go/v7/modules/core/keeper" + "github.com/spf13/cast" + "path/filepath" +) + +var maccPerms = map[string][]string{ + authtypes.FeeCollectorName: nil, + distrtypes.ModuleName: nil, + govtypes.ModuleName: {authtypes.Burner}, + ibctransfertypes.ModuleName: {authtypes.Minter, authtypes.Burner}, + minttypes.ModuleName: {authtypes.Minter}, + stakingtypes.BondedPoolName: {authtypes.Burner, authtypes.Staking}, + stakingtypes.NotBondedPoolName: {authtypes.Burner, authtypes.Staking}, + collectortypes.ModuleName: {authtypes.Burner, authtypes.Staking}, + vaulttypes.ModuleName: {authtypes.Minter, authtypes.Burner}, + lendtypes.ModuleName: {authtypes.Minter, authtypes.Burner}, + tokenminttypes.ModuleName: {authtypes.Minter, authtypes.Burner}, + lendtypes.ModuleAcc1: {authtypes.Minter, authtypes.Burner}, + lendtypes.ModuleAcc2: {authtypes.Minter, authtypes.Burner}, + lendtypes.ModuleAcc3: {authtypes.Minter, authtypes.Burner}, + lendtypes.ModuleAcc4: {authtypes.Minter, authtypes.Burner}, + lendtypes.ModuleAcc5: {authtypes.Minter, authtypes.Burner}, + lendtypes.ModuleAcc6: {authtypes.Minter, authtypes.Burner}, + lendtypes.ModuleAcc7: {authtypes.Minter, authtypes.Burner}, + lendtypes.ModuleAcc8: {authtypes.Minter, authtypes.Burner}, + lendtypes.ModuleAcc9: {authtypes.Minter, authtypes.Burner}, + lendtypes.ModuleAcc10: {authtypes.Minter, authtypes.Burner}, + lendtypes.ModuleAcc11: {authtypes.Minter, authtypes.Burner}, + liquidationtypes.ModuleName: {authtypes.Minter, authtypes.Burner}, + auctiontypes.ModuleName: {authtypes.Minter, authtypes.Burner}, + lockertypes.ModuleName: {authtypes.Minter, authtypes.Burner}, + esmtypes.ModuleName: {authtypes.Burner}, + wasm.ModuleName: {authtypes.Burner}, + liquiditytypes.ModuleName: {authtypes.Minter, authtypes.Burner}, + rewardstypes.ModuleName: {authtypes.Minter, authtypes.Burner}, + liquidationsV2types.ModuleName: {authtypes.Minter, authtypes.Burner}, + auctionsV2types.ModuleName: {authtypes.Minter, authtypes.Burner}, + icatypes.ModuleName: nil, + ibcfeetypes.ModuleName: nil, + assettypes.ModuleName: nil, + icqtypes.ModuleName: nil, + nft.ModuleName: nil, +} + +type AppKeepers struct { + *baseapp.BaseApp + + amino *codec.LegacyAmino + cdc codec.Codec + + interfaceRegistry codectypes.InterfaceRegistry + + invCheckPeriod uint + + // keys to access the substores + keys map[string]*storetypes.KVStoreKey + tkeys map[string]*storetypes.TransientStoreKey + mkeys map[string]*storetypes.MemoryStoreKey + + // keepers + AccountKeeper authkeeper.AccountKeeper + FeegrantKeeper feegrantkeeper.Keeper + BankKeeper bankkeeper.Keeper + BankBaseKeeper *bankkeeper.BaseKeeper + AuthzKeeper authzkeeper.Keeper + CapabilityKeeper *capabilitykeeper.Keeper + StakingKeeper *stakingkeeper.Keeper + SlashingKeeper slashingkeeper.Keeper + MintKeeper mintkeeper.Keeper + DistrKeeper distrkeeper.Keeper + GovKeeper govkeeper.Keeper + CrisisKeeper *crisiskeeper.Keeper + UpgradeKeeper *upgradekeeper.Keeper + ParamsKeeper paramskeeper.Keeper + IbcKeeper *ibckeeper.Keeper // IBC Keeper must be a pointer in the app, so we can SetRouter on it correctly + IBCFeeKeeper ibcfeekeeper.Keeper + IbcHooksKeeper *ibchookskeeper.Keeper + ICAHostKeeper icahostkeeper.Keeper + EvidenceKeeper evidencekeeper.Keeper + IbcTransferKeeper ibctransferkeeper.Keeper + + // make scoped keepers public for test purposes + ScopedIBCKeeper capabilitykeeper.ScopedKeeper + ScopedIBCTransferKeeper capabilitykeeper.ScopedKeeper + ScopedIBCOracleKeeper capabilitykeeper.ScopedKeeper + ScopedBandoracleKeeper capabilitykeeper.ScopedKeeper + ScopedICAHostKeeper capabilitykeeper.ScopedKeeper + ScopedICQKeeper capabilitykeeper.ScopedKeeper + + BandoracleKeeper bandoraclemodulekeeper.Keeper + AssetKeeper assetkeeper.Keeper + CollectorKeeper collectorkeeper.Keeper + VaultKeeper vaultkeeper.Keeper + + MarketKeeper marketkeeper.Keeper + LiquidationKeeper liquidationkeeper.Keeper + LockerKeeper lockerkeeper.Keeper + EsmKeeper esmkeeper.Keeper + LendKeeper lendkeeper.Keeper + ScopedWasmKeeper capabilitykeeper.ScopedKeeper + AuctionKeeper auctionkeeper.Keeper + TokenmintKeeper tokenmintkeeper.Keeper + LiquidityKeeper liquiditykeeper.Keeper + Rewardskeeper rewardskeeper.Keeper + NewliqKeeper liquidationsV2keeper.Keeper + NewaucKeeper auctionsV2keeper.Keeper + NFTKeeper nftkeeper.Keeper + + // IBC modules + // transfer module + Ics20WasmHooks *ibchooks.WasmHooks + HooksICS4Wrapper ibchooks.ICS4Middleware + PacketForwardKeeper *packetforwardkeeper.Keeper + ICQKeeper *icqkeeper.Keeper + + ConsensusParamsKeeper consensusparamkeeper.Keeper + + WasmKeeper wasm.Keeper + ContractKeeper *wasmkeeper.PermissionedKeeper + // the module manager + mm *module.Manager + // Module configurator + configurator module.Configurator +} + +func NewAppKeepers( + appCodec codec.Codec, + bApp *baseapp.BaseApp, + cdc *codec.LegacyAmino, + maccPerms map[string][]string, + appOpts servertypes.AppOptions, + wasmOpts []wasmkeeper.Option, + bondDenom string, +) AppKeepers { + + appKeepers := AppKeepers{} + + // Set keys KVStoreKey, TransientStoreKey, MemoryStoreKey + appKeepers.GenerateKeys() + keys := appKeepers.GetKVStoreKey() + tkeys := appKeepers.GetTransientStoreKey() + + appKeepers.ConsensusParamsKeeper = consensusparamkeeper.NewKeeper(appCodec, keys[consensusparamtypes.StoreKey], authtypes.NewModuleAddress(govtypes.ModuleName).String()) + bApp.SetParamStore(&appKeepers.ConsensusParamsKeeper) + + // add capability keeper and ScopeToModule for ibc module + appKeepers.CapabilityKeeper = capabilitykeeper.NewKeeper( + appKeepers.cdc, + appKeepers.keys[capabilitytypes.StoreKey], + appKeepers.mkeys[capabilitytypes.MemStoreKey], + ) + + // grant capabilities for the ibc and ibc-transfer modules + var ( + scopedIBCKeeper = appKeepers.CapabilityKeeper.ScopeToModule(ibchost.ModuleName) + scopedTransferKeeper = appKeepers.CapabilityKeeper.ScopeToModule(ibctransfertypes.ModuleName) + scopedIBCOracleKeeper = appKeepers.CapabilityKeeper.ScopeToModule(markettypes.ModuleName) // can remove it + scopedWasmKeeper = appKeepers.CapabilityKeeper.ScopeToModule(wasm.ModuleName) + scopedICAHostKeeper = appKeepers.CapabilityKeeper.ScopeToModule(icahosttypes.SubModuleName) + scopedBandoracleKeeper = appKeepers.CapabilityKeeper.ScopeToModule(bandoraclemoduletypes.ModuleName) + scopedICQKeeper = appKeepers.CapabilityKeeper.ScopeToModule(icqtypes.ModuleName) + ) + + Bech32Prefix := "comdex" + // add keepers + appKeepers.AccountKeeper = authkeeper.NewAccountKeeper( + appKeepers.cdc, + appKeepers.keys[authtypes.StoreKey], + authtypes.ProtoBaseAccount, + maccPerms, + Bech32Prefix, + authtypes.NewModuleAddress(govtypes.ModuleName).String(), + ) + appKeepers.BankKeeper = bankkeeper.NewBaseKeeper( + appKeepers.cdc, + appKeepers.keys[banktypes.StoreKey], + appKeepers.AccountKeeper, + nil, + authtypes.NewModuleAddress(govtypes.ModuleName).String(), + ) + stakingKeeper := stakingkeeper.NewKeeper( + appKeepers.cdc, + appKeepers.keys[stakingtypes.StoreKey], + appKeepers.AccountKeeper, + appKeepers.BankKeeper, + authtypes.NewModuleAddress(govtypes.ModuleName).String(), + ) + appKeepers.MintKeeper = mintkeeper.NewKeeper( + appKeepers.cdc, + appKeepers.keys[minttypes.StoreKey], + stakingKeeper, + appKeepers.AccountKeeper, + appKeepers.BankKeeper, + authtypes.FeeCollectorName, + authtypes.NewModuleAddress(govtypes.ModuleName).String(), + ) + appKeepers.DistrKeeper = distrkeeper.NewKeeper( + appKeepers.cdc, + appKeepers.keys[distrtypes.StoreKey], + appKeepers.AccountKeeper, + appKeepers.BankKeeper, + stakingKeeper, + authtypes.FeeCollectorName, + authtypes.NewModuleAddress(govtypes.ModuleName).String(), + ) + appKeepers.SlashingKeeper = slashingkeeper.NewKeeper( + appKeepers.cdc, + cdc, + appKeepers.keys[slashingtypes.StoreKey], + stakingKeeper, + authtypes.NewModuleAddress(govtypes.ModuleName).String(), + ) + appKeepers.CrisisKeeper = crisiskeeper.NewKeeper( + appKeepers.cdc, + appKeepers.keys[crisistypes.StoreKey], + appKeepers.invCheckPeriod, + appKeepers.BankKeeper, + authtypes.FeeCollectorName, + authtypes.NewModuleAddress(govtypes.ModuleName).String(), + ) + + appKeepers.AuthzKeeper = authzkeeper.NewKeeper( + keys[authzkeeper.StoreKey], + appKeepers.cdc, + bApp.MsgServiceRouter(), + appKeepers.AccountKeeper, + ) + + 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], + appKeepers.cdc, + homePath, + appKeepers.BaseApp, + 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 + + // Create IBC Keeper + appKeepers.IbcKeeper = ibckeeper.NewKeeper( + appKeepers.cdc, + appKeepers.keys[ibchost.StoreKey], + appKeepers.GetSubspace(ibchost.ModuleName), + appKeepers.StakingKeeper, + appKeepers.UpgradeKeeper, + scopedIBCKeeper, + ) + + appKeepers.NFTKeeper = nftkeeper.NewKeeper(keys[nftkeeper.StoreKey], appCodec, appKeepers.AccountKeeper, appKeepers.BankKeeper) + + // Configure the hooks keeper + hooksKeeper := ibchookskeeper.NewKeeper( + appKeepers.keys[ibchookstypes.StoreKey], + ) + appKeepers.IbcHooksKeeper = &hooksKeeper + + cmdxPrefix := sdk.GetConfig().GetBech32AccountAddrPrefix() + wasmHooks := ibchooks.NewWasmHooks(appKeepers.IbcHooksKeeper, &appKeepers.WasmKeeper, cmdxPrefix) // The contract keeper needs to be set later + appKeepers.Ics20WasmHooks = &wasmHooks + appKeepers.HooksICS4Wrapper = ibchooks.NewICS4Middleware( + appKeepers.IbcKeeper.ChannelKeeper, + appKeepers.Ics20WasmHooks, + ) + + // Do not use this middleware for anything except x/wasm requirement. + // The spec currently requires new channels to be created, to use it. + // We need to wait for Channel Upgradability before we can use this for any other middleware. + appKeepers.IBCFeeKeeper = ibcfeekeeper.NewKeeper( + appCodec, + appKeepers.keys[ibcfeetypes.StoreKey], + appKeepers.HooksICS4Wrapper, // replaced with IBC middleware + appKeepers.IbcKeeper.ChannelKeeper, + &appKeepers.IbcKeeper.PortKeeper, + appKeepers.AccountKeeper, + appKeepers.BankKeeper, + ) + + appKeepers.PacketForwardKeeper = packetforwardkeeper.NewKeeper( + appCodec, + appKeepers.keys[packetforwardtypes.StoreKey], + appKeepers.GetSubspace(packetforwardtypes.ModuleName), + appKeepers.IbcTransferKeeper, // Will be zero-value here. Reference is set later on with SetTransferKeeper. + appKeepers.IbcKeeper.ChannelKeeper, + appKeepers.DistrKeeper, + appKeepers.BankKeeper, + appKeepers.IbcKeeper.ChannelKeeper, + ) + + appKeepers.IbcTransferKeeper = ibctransferkeeper.NewKeeper( + appCodec, + appKeepers.keys[ibctransfertypes.StoreKey], + appKeepers.GetSubspace(ibctransfertypes.ModuleName), + appKeepers.PacketForwardKeeper, + appKeepers.IbcKeeper.ChannelKeeper, + &appKeepers.IbcKeeper.PortKeeper, + appKeepers.AccountKeeper, + appKeepers.BankKeeper, + scopedTransferKeeper, + ) + + appKeepers.PacketForwardKeeper.SetTransferKeeper(appKeepers.IbcTransferKeeper) + + appKeepers.ICAHostKeeper = icahostkeeper.NewKeeper( + appCodec, appKeepers.keys[icahosttypes.StoreKey], + appKeepers.GetSubspace(icahosttypes.SubModuleName), + appKeepers.HooksICS4Wrapper, + appKeepers.IbcKeeper.ChannelKeeper, + &appKeepers.IbcKeeper.PortKeeper, + appKeepers.AccountKeeper, + scopedICAHostKeeper, + bApp.MsgServiceRouter(), + ) + + appKeepers.AssetKeeper = assetkeeper.NewKeeper( + appKeepers.cdc, + appKeepers.keys[assettypes.StoreKey], + appKeepers.GetSubspace(assettypes.ModuleName), + appKeepers.AccountKeeper, + appKeepers.BankKeeper, + &appKeepers.Rewardskeeper, + &appKeepers.VaultKeeper, + &appKeepers.BandoracleKeeper, + ) + + appKeepers.LendKeeper = lendkeeper.NewKeeper( + appKeepers.cdc, + appKeepers.keys[lendtypes.StoreKey], + appKeepers.keys[lendtypes.StoreKey], + appKeepers.GetSubspace(lendtypes.ModuleName), + appKeepers.BankKeeper, + appKeepers.AccountKeeper, + &appKeepers.AssetKeeper, + &appKeepers.MarketKeeper, + &appKeepers.EsmKeeper, + &appKeepers.LiquidationKeeper, + &appKeepers.AuctionKeeper, + ) + + appKeepers.EsmKeeper = esmkeeper.NewKeeper( + appKeepers.cdc, + appKeepers.keys[esmtypes.StoreKey], + appKeepers.keys[esmtypes.StoreKey], + appKeepers.GetSubspace(esmtypes.ModuleName), + &appKeepers.AssetKeeper, + &appKeepers.VaultKeeper, + appKeepers.BankKeeper, + &appKeepers.MarketKeeper, + &appKeepers.TokenmintKeeper, + &appKeepers.CollectorKeeper, + ) + + appKeepers.VaultKeeper = vaultkeeper.NewKeeper( + appKeepers.cdc, + appKeepers.keys[vaulttypes.StoreKey], + appKeepers.BankKeeper, + &appKeepers.AssetKeeper, + &appKeepers.MarketKeeper, + &appKeepers.CollectorKeeper, + &appKeepers.EsmKeeper, + &appKeepers.TokenmintKeeper, + &appKeepers.Rewardskeeper, + ) + + appKeepers.TokenmintKeeper = tokenmintkeeper.NewKeeper( + appKeepers.cdc, + appKeepers.keys[tokenminttypes.StoreKey], + appKeepers.BankKeeper, + &appKeepers.AssetKeeper, + ) + + appKeepers.BandoracleKeeper = bandoraclemodulekeeper.NewKeeper( + appCodec, + keys[bandoraclemoduletypes.StoreKey], + keys[bandoraclemoduletypes.MemStoreKey], + appKeepers.GetSubspace(bandoraclemoduletypes.ModuleName), + appKeepers.IbcKeeper.ChannelKeeper, + &appKeepers.IbcKeeper.PortKeeper, + scopedBandoracleKeeper, + &appKeepers.MarketKeeper, + appKeepers.AssetKeeper, + ) + bandoracleModule := bandoraclemodule.NewAppModule( + appCodec, + appKeepers.BandoracleKeeper, + appKeepers.AccountKeeper, + appKeepers.BankKeeper, + appKeepers.ScopedBandoracleKeeper, + &appKeepers.IbcKeeper.PortKeeper, + appKeepers.IbcKeeper.ChannelKeeper, + ) + + appKeepers.MarketKeeper = marketkeeper.NewKeeper( + appKeepers.cdc, + appKeepers.keys[markettypes.StoreKey], + appKeepers.GetSubspace(markettypes.ModuleName), + scopedIBCOracleKeeper, + appKeepers.AssetKeeper, + &appKeepers.BandoracleKeeper, + ) + + appKeepers.LiquidationKeeper = liquidationkeeper.NewKeeper( + appKeepers.cdc, + keys[liquidationtypes.StoreKey], + keys[liquidationtypes.MemStoreKey], + appKeepers.GetSubspace(liquidationtypes.ModuleName), + appKeepers.AccountKeeper, + appKeepers.BankKeeper, + &appKeepers.AssetKeeper, + &appKeepers.VaultKeeper, + &appKeepers.MarketKeeper, + &appKeepers.AuctionKeeper, + &appKeepers.EsmKeeper, + &appKeepers.Rewardskeeper, + &appKeepers.LendKeeper, + ) + + appKeepers.AuctionKeeper = auctionkeeper.NewKeeper( + appKeepers.cdc, + keys[auctiontypes.StoreKey], + keys[auctiontypes.MemStoreKey], + appKeepers.GetSubspace(auctiontypes.ModuleName), + appKeepers.AccountKeeper, + appKeepers.BankKeeper, + &appKeepers.MarketKeeper, + &appKeepers.LiquidationKeeper, + &appKeepers.AssetKeeper, + &appKeepers.VaultKeeper, + &appKeepers.CollectorKeeper, + &appKeepers.TokenmintKeeper, + &appKeepers.EsmKeeper, + &appKeepers.LendKeeper, + ) + + appKeepers.CollectorKeeper = collectorkeeper.NewKeeper( + appKeepers.cdc, + appKeepers.keys[collectortypes.StoreKey], + appKeepers.keys[collectortypes.MemStoreKey], + &appKeepers.AssetKeeper, + &appKeepers.AuctionKeeper, + &appKeepers.LockerKeeper, + &appKeepers.Rewardskeeper, + appKeepers.GetSubspace(collectortypes.ModuleName), + appKeepers.BankKeeper, + ) + + appKeepers.LockerKeeper = lockerkeeper.NewKeeper( + appKeepers.cdc, + appKeepers.keys[lockertypes.StoreKey], + appKeepers.GetSubspace(lockertypes.ModuleName), + appKeepers.BankKeeper, + &appKeepers.AssetKeeper, + &appKeepers.CollectorKeeper, + &appKeepers.EsmKeeper, + &appKeepers.Rewardskeeper, + ) + + appKeepers.LiquidityKeeper = liquiditykeeper.NewKeeper( + appKeepers.cdc, + appKeepers.keys[liquiditytypes.StoreKey], + appKeepers.GetSubspace(liquiditytypes.ModuleName), + appKeepers.AccountKeeper, + appKeepers.BankKeeper, + &appKeepers.AssetKeeper, + &appKeepers.MarketKeeper, + &appKeepers.Rewardskeeper, + &appKeepers.TokenmintKeeper, + ) + + appKeepers.Rewardskeeper = rewardskeeper.NewKeeper( + appKeepers.cdc, + appKeepers.keys[rewardstypes.StoreKey], + appKeepers.keys[rewardstypes.MemStoreKey], + appKeepers.GetSubspace(rewardstypes.ModuleName), + &appKeepers.LockerKeeper, + &appKeepers.CollectorKeeper, + &appKeepers.VaultKeeper, + &appKeepers.AssetKeeper, + appKeepers.BankKeeper, + appKeepers.LiquidityKeeper, + &appKeepers.MarketKeeper, + &appKeepers.EsmKeeper, + &appKeepers.LendKeeper, + ) + + appKeepers.NewliqKeeper = liquidationsV2keeper.NewKeeper( + appKeepers.cdc, + appKeepers.keys[liquidationsV2types.StoreKey], + appKeepers.keys[liquidationsV2types.MemStoreKey], + appKeepers.GetSubspace(liquidationsV2types.ModuleName), + appKeepers.AccountKeeper, + appKeepers.BankKeeper, + &appKeepers.AssetKeeper, + &appKeepers.VaultKeeper, + &appKeepers.MarketKeeper, + &appKeepers.EsmKeeper, + &appKeepers.Rewardskeeper, + &appKeepers.LendKeeper, + &appKeepers.NewaucKeeper, + &appKeepers.CollectorKeeper, + ) + + appKeepers.NewaucKeeper = auctionsV2keeper.NewKeeper( + appKeepers.cdc, + appKeepers.keys[auctionsV2types.StoreKey], + appKeepers.keys[auctionsV2types.MemStoreKey], + appKeepers.GetSubspace(auctionsV2types.ModuleName), + &appKeepers.NewliqKeeper, + appKeepers.BankKeeper, + &appKeepers.MarketKeeper, + &appKeepers.AssetKeeper, + &appKeepers.EsmKeeper, + &appKeepers.VaultKeeper, + &appKeepers.CollectorKeeper, + &appKeepers.TokenmintKeeper, + ) + + // ICQ Keeper + icqKeeper := icqkeeper.NewKeeper( + appCodec, + appKeepers.keys[icqtypes.StoreKey], + appKeepers.GetSubspace(icqtypes.ModuleName), + appKeepers.IbcKeeper.ChannelKeeper, // may be replaced with middleware + appKeepers.IbcKeeper.ChannelKeeper, + &appKeepers.IbcKeeper.PortKeeper, + scopedICQKeeper, + appKeepers.GRPCQueryRouter(), + // NewQuerierWrapper(baseApp), // in-case of strangelove-ventures icq + ) + appKeepers.ICQKeeper = &icqKeeper + + // Create Async ICQ module + icqModule := icq.NewIBCModule(*appKeepers.ICQKeeper) + + // Note: the sealing is done after creating wasmd and wiring that up + + wasmDir := filepath.Join(homePath, "wasm") + wasmConfig, err := wasm.ReadWasmConfig(appOpts) + if err != nil { + panic(fmt.Sprintf("error while reading wasm config: %s", err)) + } + supportedFeatures := "iterator,staking,stargate,comdex,cosmwasm_1_1,cosmwasm_1_2,cosmwasm_1_3" + + wasmOpts = append(cwasm.RegisterCustomPlugins(&appKeepers.LockerKeeper, &appKeepers.TokenmintKeeper, &appKeepers.AssetKeeper, &appKeepers.Rewardskeeper, &appKeepers.CollectorKeeper, &appKeepers.LiquidationKeeper, &appKeepers.AuctionKeeper, &appKeepers.EsmKeeper, &appKeepers.VaultKeeper, &appKeepers.LendKeeper, &appKeepers.LiquidityKeeper, &appKeepers.MarketKeeper), wasmOpts...) + + appKeepers.WasmKeeper = wasmkeeper.NewKeeper( + appKeepers.cdc, + keys[wasmtypes.StoreKey], + appKeepers.AccountKeeper, + appKeepers.BankKeeper, + appKeepers.StakingKeeper, + distrkeeper.NewQuerier(appKeepers.DistrKeeper), + appKeepers.IBCFeeKeeper, + appKeepers.IbcKeeper.ChannelKeeper, + &appKeepers.IbcKeeper.PortKeeper, + scopedWasmKeeper, + appKeepers.IbcTransferKeeper, + bApp.MsgServiceRouter(), + appKeepers.GRPCQueryRouter(), + wasmDir, + wasmConfig, + supportedFeatures, + authtypes.NewModuleAddress(govtypes.ModuleName).String(), + wasmOpts..., + ) + + // set the contract keeper for the Ics20WasmHooks + appKeepers.ContractKeeper = wasmkeeper.NewDefaultPermissionKeeper(appKeepers.WasmKeeper) + appKeepers.Ics20WasmHooks.ContractKeeper = &appKeepers.WasmKeeper + + // register the proposal types + govRouter := govtypesv1beta1.NewRouter() + govRouter.AddRoute(govtypes.RouterKey, govtypesv1beta1.ProposalHandler). + AddRoute(paramproposal.RouterKey, params.NewParamChangeProposalHandler(appKeepers.ParamsKeeper)). + AddRoute(upgradetypes.RouterKey, upgrade.NewSoftwareUpgradeProposalHandler(appKeepers.UpgradeKeeper)). + AddRoute(assettypes.RouterKey, asset.NewUpdateAssetProposalHandler(appKeepers.AssetKeeper)). + AddRoute(lendtypes.RouterKey, lend.NewLendHandler(appKeepers.LendKeeper)). + AddRoute(bandoraclemoduletypes.RouterKey, bandoraclemodule.NewFetchPriceHandler(appKeepers.BandoracleKeeper)). + AddRoute(ibchost.RouterKey, ibcclient.NewClientProposalHandler(appKeepers.IbcKeeper.ClientKeeper)). + AddRoute(ibcclienttypes.RouterKey, ibcclient.NewClientProposalHandler(appKeepers.IbcKeeper.ClientKeeper)). + AddRoute(liquiditytypes.RouterKey, liquidity.NewLiquidityProposalHandler(appKeepers.LiquidityKeeper)). + AddRoute(liquidationsV2types.RouterKey, liquidationsV2.NewLiquidationsV2Handler(appKeepers.NewliqKeeper)). + AddRoute(auctionsV2types.RouterKey, auctionsV2.NewAuctionsV2Handler(appKeepers.NewaucKeeper)) + + if len(wasmEnabledProposals) != 0 { + govRouter.AddRoute(wasm.RouterKey, wasm.NewWasmProposalHandler(appKeepers.WasmKeeper, wasmEnabledProposals)) + } + + govKeeper := govkeeper.NewKeeper( + appKeepers.cdc, keys[govtypes.StoreKey], appKeepers.AccountKeeper, appKeepers.BankKeeper, + appKeepers.StakingKeeper, bApp.MsgServiceRouter(), govtypes.DefaultConfig(), authtypes.NewModuleAddress(govtypes.ModuleName).String(), + ) + + govKeeper.SetLegacyRouter(govRouter) + appKeepers.GovKeeper = *govKeeper + + // Create Transfer Stack + var transferStack ibcporttypes.IBCModule + transferStack = ibctransfer.NewIBCModule(appKeepers.IbcTransferKeeper) + transferStack = ibcfee.NewIBCMiddleware(transferStack, appKeepers.IBCFeeKeeper) + transferStack = ibchooks.NewIBCMiddleware(transferStack, &appKeepers.HooksICS4Wrapper) + transferStack = packetforward.NewIBCMiddleware( + transferStack, + appKeepers.PacketForwardKeeper, + 0, + packetforwardkeeper.DefaultForwardTransferPacketTimeoutTimestamp, + packetforwardkeeper.DefaultRefundTransferPacketTimeoutTimestamp, + ) + + var ( + evidenceRouter = evidencetypes.NewRouter() + ibcRouter = ibcporttypes.NewRouter() + oracleModule = market.NewAppModule(appKeepers.cdc, appKeepers.MarketKeeper, appKeepers.BandoracleKeeper, appKeepers.AssetKeeper) + bandOracleIBCModule = bandoraclemodule.NewIBCModule(appKeepers.BandoracleKeeper) + ) + + // RecvPacket, message that originates from core IBC and goes down to appKeepers, the flow is: + // channel.RecvPacket -> fee.OnRecvPacket -> icaHost.OnRecvPacket + var icaHostStack ibcporttypes.IBCModule + icaHostStack = icahost.NewIBCModule(appKeepers.ICAHostKeeper) + icaHostStack = ibcfee.NewIBCMiddleware(icaHostStack, appKeepers.IBCFeeKeeper) + + // Create fee enabled wasm ibc Stack + var wasmStack ibcporttypes.IBCModule + wasmStack = wasm.NewIBCHandler(appKeepers.WasmKeeper, appKeepers.IbcKeeper.ChannelKeeper, appKeepers.IBCFeeKeeper) + wasmStack = ibcfee.NewIBCMiddleware(wasmStack, appKeepers.IBCFeeKeeper) + + ibcRouter.AddRoute(ibctransfertypes.ModuleName, transferStack) + ibcRouter.AddRoute(bandoraclemoduletypes.ModuleName, bandOracleIBCModule) + ibcRouter.AddRoute(wasm.ModuleName, wasmStack) + ibcRouter.AddRoute(icahosttypes.SubModuleName, icaHostStack) + ibcRouter.AddRoute(icqtypes.ModuleName, icqModule) + appKeepers.IbcKeeper.SetRouter(ibcRouter) + // Create evidence Keeper for to register the IBC light client misbehaviour evidence route + appKeepers.EvidenceKeeper = *evidencekeeper.NewKeeper( + appKeepers.cdc, + appKeepers.keys[evidencetypes.StoreKey], + appKeepers.StakingKeeper, + appKeepers.SlashingKeeper, + ) + appKeepers.EvidenceKeeper.SetRouter(evidenceRouter) + + // NOTE: Any module instantiated in the module manager that is later modified + // must be passed by reference here. + + appKeepers.ScopedIBCKeeper = scopedIBCKeeper + appKeepers.ScopedIBCTransferKeeper = scopedTransferKeeper + appKeepers.ScopedIBCOracleKeeper = scopedIBCOracleKeeper + appKeepers.ScopedICAHostKeeper = scopedICAHostKeeper + appKeepers.ScopedBandoracleKeeper = scopedBandoracleKeeper + appKeepers.ScopedICQKeeper = scopedICQKeeper + + appKeepers.ScopedWasmKeeper = scopedWasmKeeper + + return appKeepers +} +func initParamsKeeper(cdc codec.BinaryCodec, legacyAmino *codec.LegacyAmino, key, tkey storetypes.StoreKey) paramskeeper.Keeper { + + paramsKeeper := paramskeeper.NewKeeper( + cdc, + legacyAmino, + key, + tkey, + ) + + paramsKeeper.Subspace(authtypes.ModuleName).WithKeyTable(authtypes.ParamKeyTable()) + paramsKeeper.Subspace(banktypes.ModuleName).WithKeyTable(banktypes.ParamKeyTable()) + paramsKeeper.Subspace(stakingtypes.ModuleName).WithKeyTable(stakingtypes.ParamKeyTable()) + paramsKeeper.Subspace(minttypes.ModuleName).WithKeyTable(minttypes.ParamKeyTable()) + paramsKeeper.Subspace(distrtypes.ModuleName).WithKeyTable(distrtypes.ParamKeyTable()) + paramsKeeper.Subspace(slashingtypes.ModuleName).WithKeyTable(slashingtypes.ParamKeyTable()) + paramsKeeper.Subspace(govtypes.ModuleName).WithKeyTable(govtypesv1.ParamKeyTable()) + paramsKeeper.Subspace(crisistypes.ModuleName).WithKeyTable(crisistypes.ParamKeyTable()) + paramsKeeper.Subspace(ibctransfertypes.ModuleName) + paramsKeeper.Subspace(ibchost.ModuleName) + paramsKeeper.Subspace(icahosttypes.SubModuleName) + paramsKeeper.Subspace(vaulttypes.ModuleName) + paramsKeeper.Subspace(assettypes.ModuleName) + paramsKeeper.Subspace(collectortypes.ModuleName) + paramsKeeper.Subspace(esmtypes.ModuleName) + paramsKeeper.Subspace(lendtypes.ModuleName) + paramsKeeper.Subspace(markettypes.ModuleName) + paramsKeeper.Subspace(liquidationtypes.ModuleName) + paramsKeeper.Subspace(lockertypes.ModuleName) + paramsKeeper.Subspace(bandoraclemoduletypes.ModuleName) + paramsKeeper.Subspace(wasmtypes.ModuleName).WithKeyTable(wasmtypes.ParamKeyTable()) + paramsKeeper.Subspace(auctiontypes.ModuleName) + paramsKeeper.Subspace(tokenminttypes.ModuleName) + paramsKeeper.Subspace(liquiditytypes.ModuleName) + paramsKeeper.Subspace(rewardstypes.ModuleName) + paramsKeeper.Subspace(liquidationsV2types.ModuleName) + paramsKeeper.Subspace(auctionsV2types.ModuleName) + paramsKeeper.Subspace(icqtypes.ModuleName) + paramsKeeper.Subspace(packetforwardtypes.ModuleName).WithKeyTable(packetforwardtypes.ParamKeyTable()) + + return paramsKeeper +} + +// GetSubspace returns a param subspace for a given module name. +func (appKeepers *AppKeepers) GetSubspace(moduleName string) paramstypes.Subspace { + subspace, _ := appKeepers.ParamsKeeper.GetSubspace(moduleName) + return subspace +} + +// GetStakingKeeper implements the TestingApp interface. +func (appKeepers *AppKeepers) GetStakingKeeper() *stakingkeeper.Keeper { + return appKeepers.StakingKeeper +} + +// GetIBCKeeper implements the TestingApp interface. +func (appKeepers *AppKeepers) GetIBCKeeper() *ibckeeper.Keeper { + return appKeepers.IbcKeeper +} + +// GetScopedIBCKeeper implements the TestingApp interface. +func (appKeepers *AppKeepers) GetScopedIBCKeeper() capabilitykeeper.ScopedKeeper { + return appKeepers.ScopedIBCKeeper +} + +// GetWasmKeeper implements the TestingApp interface. +func (appKeepers *AppKeepers) GetWasmKeeper() wasmkeeper.Keeper { + return appKeepers.WasmKeeper +} + +func GetMaccPerms() map[string][]string { + return maccPerms +} diff --git a/app/keepers/keys.go b/app/keepers/keys.go new file mode 100644 index 000000000..a603a9589 --- /dev/null +++ b/app/keepers/keys.go @@ -0,0 +1,97 @@ +package keepers + +import ( + "github.com/CosmWasm/wasmd/x/wasm" + assettypes "github.com/comdex-official/comdex/x/asset/types" + auctiontypes "github.com/comdex-official/comdex/x/auction/types" + auctionsV2types "github.com/comdex-official/comdex/x/auctionsV2/types" + bandoraclemoduletypes "github.com/comdex-official/comdex/x/bandoracle/types" + collectortypes "github.com/comdex-official/comdex/x/collector/types" + esmtypes "github.com/comdex-official/comdex/x/esm/types" + lendtypes "github.com/comdex-official/comdex/x/lend/types" + liquidationtypes "github.com/comdex-official/comdex/x/liquidation/types" + liquidationsV2types "github.com/comdex-official/comdex/x/liquidationsV2/types" + liquiditytypes "github.com/comdex-official/comdex/x/liquidity/types" + lockertypes "github.com/comdex-official/comdex/x/locker/types" + markettypes "github.com/comdex-official/comdex/x/market/types" + rewardstypes "github.com/comdex-official/comdex/x/rewards/types" + tokenminttypes "github.com/comdex-official/comdex/x/tokenmint/types" + vaulttypes "github.com/comdex-official/comdex/x/vault/types" + storetypes "github.com/cosmos/cosmos-sdk/store/types" + sdk "github.com/cosmos/cosmos-sdk/types" + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + authzkeeper "github.com/cosmos/cosmos-sdk/x/authz/keeper" + banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" + capabilitytypes "github.com/cosmos/cosmos-sdk/x/capability/types" + consensusparamtypes "github.com/cosmos/cosmos-sdk/x/consensus/types" + crisistypes "github.com/cosmos/cosmos-sdk/x/crisis/types" + distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types" + evidencetypes "github.com/cosmos/cosmos-sdk/x/evidence/types" + "github.com/cosmos/cosmos-sdk/x/feegrant" + govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + minttypes "github.com/cosmos/cosmos-sdk/x/mint/types" + nftkeeper "github.com/cosmos/cosmos-sdk/x/nft/keeper" + paramstypes "github.com/cosmos/cosmos-sdk/x/params/types" + slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types" + stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" + upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" + packetforwardtypes "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v7/packetforward/types" + icqtypes "github.com/cosmos/ibc-apps/modules/async-icq/v7/types" + ibchookstypes "github.com/cosmos/ibc-apps/modules/ibc-hooks/v7/types" + 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/exported" +) + +func (appKeepers *AppKeepers) GenerateKeys() { + + appKeepers.tkeys = sdk.NewTransientStoreKeys(paramstypes.TStoreKey) + appKeepers.mkeys = sdk.NewMemoryStoreKeys(capabilitytypes.MemStoreKey) + + appKeepers.keys = sdk.NewKVStoreKeys( + authtypes.StoreKey, banktypes.StoreKey, stakingtypes.StoreKey, + minttypes.StoreKey, distrtypes.StoreKey, slashingtypes.StoreKey, + govtypes.StoreKey, paramstypes.StoreKey, ibchost.StoreKey, icahosttypes.StoreKey, upgradetypes.StoreKey, + evidencetypes.StoreKey, ibctransfertypes.StoreKey, ibcfeetypes.StoreKey, capabilitytypes.StoreKey, + vaulttypes.StoreKey, assettypes.StoreKey, collectortypes.StoreKey, liquidationtypes.StoreKey, + markettypes.StoreKey, bandoraclemoduletypes.StoreKey, lockertypes.StoreKey, + wasm.StoreKey, authzkeeper.StoreKey, auctiontypes.StoreKey, tokenminttypes.StoreKey, + rewardstypes.StoreKey, feegrant.StoreKey, liquiditytypes.StoreKey, esmtypes.ModuleName, lendtypes.StoreKey, + liquidationsV2types.StoreKey, auctionsV2types.StoreKey, ibchookstypes.StoreKey, packetforwardtypes.StoreKey, + icqtypes.StoreKey, consensusparamtypes.StoreKey, crisistypes.StoreKey, nftkeeper.StoreKey, + ) +} + +// GetKey returns the KVStoreKey for the provided store key. +// +// NOTE: This is solely to be used for testing purposes. +func (appkeepers *AppKeepers) GetKey(storeKey string) *storetypes.KVStoreKey { + return appkeepers.keys[storeKey] +} + +// GetTKey returns the TransientStoreKey for the provided store key. +// +// NOTE: This is solely to be used for testing purposes. +func (appkeepers *AppKeepers) GetTKey(storeKey string) *storetypes.TransientStoreKey { + return appkeepers.tkeys[storeKey] +} + +// GetMemKey returns the MemStoreKey for the provided mem key. +// +// NOTE: This is solely used for testing purposes. +func (appkeepers *AppKeepers) GetMemKey(storeKey string) *storetypes.MemoryStoreKey { + return appkeepers.mkeys[storeKey] +} + +func (appKeepers *AppKeepers) GetKVStoreKey() map[string]*storetypes.KVStoreKey { + return appKeepers.keys +} + +func (appKeepers *AppKeepers) GetTransientStoreKey() map[string]*storetypes.TransientStoreKey { + return appKeepers.tkeys +} + +func (appKeepers *AppKeepers) GetMemoryStoreKey() map[string]*storetypes.MemoryStoreKey { + return appKeepers.mkeys +} diff --git a/app/module.go b/app/module.go new file mode 100644 index 000000000..143e99af4 --- /dev/null +++ b/app/module.go @@ -0,0 +1,332 @@ +package app + +import ( + "github.com/CosmWasm/wasmd/x/wasm" + wasmtypes "github.com/CosmWasm/wasmd/x/wasm/types" + "github.com/comdex-official/comdex/x/asset" + assettypes "github.com/comdex-official/comdex/x/asset/types" + "github.com/comdex-official/comdex/x/auction" + auctiontypes "github.com/comdex-official/comdex/x/auction/types" + "github.com/comdex-official/comdex/x/auctionsV2" + auctionsV2types "github.com/comdex-official/comdex/x/auctionsV2/types" + bandoraclemodule "github.com/comdex-official/comdex/x/bandoracle" + bandoraclemoduletypes "github.com/comdex-official/comdex/x/bandoracle/types" + "github.com/comdex-official/comdex/x/collector" + collectortypes "github.com/comdex-official/comdex/x/collector/types" + "github.com/comdex-official/comdex/x/esm" + esmtypes "github.com/comdex-official/comdex/x/esm/types" + "github.com/comdex-official/comdex/x/lend" + lendtypes "github.com/comdex-official/comdex/x/lend/types" + "github.com/comdex-official/comdex/x/liquidation" + liquidationtypes "github.com/comdex-official/comdex/x/liquidation/types" + "github.com/comdex-official/comdex/x/liquidationsV2" + liquidationsV2types "github.com/comdex-official/comdex/x/liquidationsV2/types" + "github.com/comdex-official/comdex/x/liquidity" + liquiditytypes "github.com/comdex-official/comdex/x/liquidity/types" + "github.com/comdex-official/comdex/x/locker" + lockertypes "github.com/comdex-official/comdex/x/locker/types" + "github.com/comdex-official/comdex/x/market" + markettypes "github.com/comdex-official/comdex/x/market/types" + "github.com/comdex-official/comdex/x/rewards" + rewardstypes "github.com/comdex-official/comdex/x/rewards/types" + "github.com/comdex-official/comdex/x/tokenmint" + tokenminttypes "github.com/comdex-official/comdex/x/tokenmint/types" + "github.com/comdex-official/comdex/x/vault" + vaulttypes "github.com/comdex-official/comdex/x/vault/types" + "github.com/cosmos/cosmos-sdk/types/module" + "github.com/cosmos/cosmos-sdk/x/auth" + authsims "github.com/cosmos/cosmos-sdk/x/auth/simulation" + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + "github.com/cosmos/cosmos-sdk/x/auth/vesting" + vestingtypes "github.com/cosmos/cosmos-sdk/x/auth/vesting/types" + "github.com/cosmos/cosmos-sdk/x/authz" + authzmodule "github.com/cosmos/cosmos-sdk/x/authz/module" + "github.com/cosmos/cosmos-sdk/x/bank" + banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" + "github.com/cosmos/cosmos-sdk/x/capability" + capabilitytypes "github.com/cosmos/cosmos-sdk/x/capability/types" + "github.com/cosmos/cosmos-sdk/x/consensus" + consensusparamtypes "github.com/cosmos/cosmos-sdk/x/consensus/types" + "github.com/cosmos/cosmos-sdk/x/crisis" + crisistypes "github.com/cosmos/cosmos-sdk/x/crisis/types" + distr "github.com/cosmos/cosmos-sdk/x/distribution" + distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types" + "github.com/cosmos/cosmos-sdk/x/evidence" + evidencetypes "github.com/cosmos/cosmos-sdk/x/evidence/types" + "github.com/cosmos/cosmos-sdk/x/feegrant" + "github.com/cosmos/cosmos-sdk/x/genutil" + genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types" + "github.com/cosmos/cosmos-sdk/x/gov" + govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + "github.com/cosmos/cosmos-sdk/x/mint" + minttypes "github.com/cosmos/cosmos-sdk/x/mint/types" + "github.com/cosmos/cosmos-sdk/x/nft" + nftmodule "github.com/cosmos/cosmos-sdk/x/nft/module" + "github.com/cosmos/cosmos-sdk/x/params" + paramstypes "github.com/cosmos/cosmos-sdk/x/params/types" + "github.com/cosmos/cosmos-sdk/x/slashing" + slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types" + "github.com/cosmos/cosmos-sdk/x/staking" + stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" + "github.com/cosmos/cosmos-sdk/x/upgrade" + upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" + "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v7/packetforward" + packetforwardtypes "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v7/packetforward/types" + icq "github.com/cosmos/ibc-apps/modules/async-icq/v7" + icqtypes "github.com/cosmos/ibc-apps/modules/async-icq/v7/types" + ibchooks "github.com/cosmos/ibc-apps/modules/ibc-hooks/v7" + ibchookstypes "github.com/cosmos/ibc-apps/modules/ibc-hooks/v7/types" + ica "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts" + icatypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/types" + ibcfee "github.com/cosmos/ibc-go/v7/modules/apps/29-fee" + ibcfeetypes "github.com/cosmos/ibc-go/v7/modules/apps/29-fee/types" + ibctransfer "github.com/cosmos/ibc-go/v7/modules/apps/transfer" + ibctransfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" + ibc "github.com/cosmos/ibc-go/v7/modules/core" + ibchost "github.com/cosmos/ibc-go/v7/modules/core/exported" + ibctm "github.com/cosmos/ibc-go/v7/modules/light-clients/07-tendermint" +) + +var ModuleBasics = module.NewBasicManager( + + // ModuleBasics defines the module BasicManager is in charge of setting up basic, + // non-dependant module elements, such as codec registration + // and genesis verification. + + auth.AppModuleBasic{}, + genutil.NewAppModuleBasic(genutiltypes.DefaultMessageValidator), + bank.AppModuleBasic{}, + capability.AppModuleBasic{}, + staking.AppModuleBasic{}, + mint.AppModuleBasic{}, + distr.AppModuleBasic{}, + gov.NewAppModuleBasic(GetGovProposalHandlers()), + params.AppModuleBasic{}, + crisis.AppModuleBasic{}, + slashing.AppModuleBasic{}, + authzmodule.AppModuleBasic{}, + ibc.AppModuleBasic{}, + ibctm.AppModuleBasic{}, + upgrade.AppModuleBasic{}, + evidence.AppModuleBasic{}, + ibctransfer.AppModuleBasic{}, + consensus.AppModuleBasic{}, + vesting.AppModuleBasic{}, + vault.AppModuleBasic{}, + asset.AppModuleBasic{}, + esm.AppModuleBasic{}, + lend.AppModuleBasic{}, + + market.AppModuleBasic{}, + locker.AppModuleBasic{}, + bandoraclemodule.AppModuleBasic{}, + collector.AppModuleBasic{}, + liquidation.AppModuleBasic{}, + auction.AppModuleBasic{}, + tokenmint.AppModuleBasic{}, + wasm.AppModuleBasic{}, + liquidity.AppModuleBasic{}, + rewards.AppModuleBasic{}, + ica.AppModuleBasic{}, + ibcfee.AppModuleBasic{}, + liquidationsV2.AppModuleBasic{}, + auctionsV2.AppModuleBasic{}, + icq.AppModuleBasic{}, + ibchooks.AppModuleBasic{}, + packetforward.AppModuleBasic{}, + nftmodule.AppModuleBasic{}, +) + +func appModules( + app *App, + encodingConfig EncodingConfig, + skipGenesisInvariants bool, +) []module.AppModule { + appCodec := encodingConfig.Marshaler + + //bondDenom := app.GetChainBondDenom() + + return []module.AppModule{ + genutil.NewAppModule( + app.AppKeepers.AccountKeeper, + app.AppKeepers.StakingKeeper, + app.BaseApp.DeliverTx, + encodingConfig.TxConfig, + ), + auth.NewAppModule(appCodec, app.AppKeepers.AccountKeeper, authsims.RandomGenesisAccounts, app.GetSubspace(authtypes.ModuleName)), + vesting.NewAppModule(app.AppKeepers.AccountKeeper, app.AppKeepers.BankKeeper), + bank.NewAppModule(appCodec, app.AppKeepers.BankKeeper, app.AppKeepers.AccountKeeper, app.GetSubspace(banktypes.ModuleName)), + capability.NewAppModule(appCodec, *app.AppKeepers.CapabilityKeeper, false), + crisis.NewAppModule(app.AppKeepers.CrisisKeeper, skipGenesisInvariants, app.GetSubspace(crisistypes.ModuleName)), + gov.NewAppModule(appCodec, &app.AppKeepers.GovKeeper, app.AppKeepers.AccountKeeper, app.AppKeepers.BankKeeper, app.GetSubspace(govtypes.ModuleName)), + mint.NewAppModule(appCodec, app.AppKeepers.MintKeeper, app.AppKeepers.AccountKeeper, nil, app.GetSubspace(minttypes.ModuleName)), // nil -> SDK's default inflation function. + slashing.NewAppModule(appCodec, app.AppKeepers.SlashingKeeper, app.AppKeepers.AccountKeeper, app.AppKeepers.BankKeeper, app.AppKeepers.StakingKeeper, app.GetSubspace(slashingtypes.ModuleName)), + distr.NewAppModule(appCodec, app.AppKeepers.DistrKeeper, app.AppKeepers.AccountKeeper, app.AppKeepers.BankKeeper, app.AppKeepers.StakingKeeper, app.GetSubspace(distrtypes.ModuleName)), + staking.NewAppModule(appCodec, app.AppKeepers.StakingKeeper, app.AppKeepers.AccountKeeper, app.AppKeepers.BankKeeper, app.GetSubspace(stakingtypes.ModuleName)), + upgrade.NewAppModule(app.AppKeepers.UpgradeKeeper), + evidence.NewAppModule(app.AppKeepers.EvidenceKeeper), + authzmodule.NewAppModule(appCodec, app.AppKeepers.AuthzKeeper, app.AppKeepers.AccountKeeper, app.AppKeepers.BankKeeper, app.interfaceRegistry), + ibc.NewAppModule(app.AppKeepers.IbcKeeper), + ibcfee.NewAppModule(app.AppKeepers.IBCFeeKeeper), + ica.NewAppModule(nil, &app.AppKeepers.ICAHostKeeper), + params.NewAppModule(app.AppKeepers.ParamsKeeper), + // app.AppKeepers.RawIcs20TransferAppModule, + ibctransfer.NewAppModule(app.AppKeepers.IbcTransferKeeper), + asset.NewAppModule(appCodec, app.AppKeepers.AssetKeeper), + vault.NewAppModule(appCodec, app.AppKeepers.VaultKeeper), + oracleModule, + bandoracleModule, + liquidation.NewAppModule(appCodec, app.AppKeepers.LiquidationKeeper, app.AppKeepers.AccountKeeper, app.AppKeepers.BankKeeper), + locker.NewAppModule(appCodec, app.AppKeepers.LockerKeeper, app.AppKeepers.AccountKeeper, app.AppKeepers.BankKeeper), + collector.NewAppModule(appCodec, app.AppKeepers.CollectorKeeper, app.AppKeepers.AccountKeeper, app.AppKeepers.BankKeeper), + esm.NewAppModule(appCodec, app.AppKeepers.EsmKeeper, app.AppKeepers.AccountKeeper, app.AppKeepers.BankKeeper, app.AppKeepers.AssetKeeper), + lend.NewAppModule(appCodec, app.AppKeepers.LendKeeper, app.AppKeepers.AccountKeeper, app.AppKeepers.BankKeeper), + wasm.NewAppModule(appCodec, &app.AppKeepers.WasmKeeper, app.AppKeepers.StakingKeeper, app.AppKeepers.AccountKeeper, app.AppKeepers.BankKeeper, app.MsgServiceRouter(), app.GetSubspace(wasmtypes.ModuleName)), + auction.NewAppModule(appCodec, app.AppKeepers.AuctionKeeper, app.AppKeepers.AccountKeeper, app.AppKeepers.BankKeeper, app.AppKeepers.CollectorKeeper, app.AppKeepers.AssetKeeper, app.AppKeepers.EsmKeeper), + tokenmint.NewAppModule(appCodec, app.AppKeepers.TokenmintKeeper, app.AppKeepers.AccountKeeper, app.AppKeepers.BankKeeper), + liquidity.NewAppModule(appCodec, app.AppKeepers.LiquidityKeeper, app.AppKeepers.AccountKeeper, app.AppKeepers.BankKeeper, app.AppKeepers.AssetKeeper), + rewards.NewAppModule(appCodec, app.AppKeepers.Rewardskeeper, app.AppKeepers.AccountKeeper, app.AppKeepers.BankKeeper), + liquidationsV2.NewAppModule(appCodec, app.AppKeepers.NewliqKeeper, app.AppKeepers.AccountKeeper, app.AppKeepers.BankKeeper), + auctionsV2.NewAppModule(appCodec, app.AppKeepers.NewaucKeeper, app.AppKeepers.BankKeeper), + ibchooks.NewAppModule(app.AppKeepers.AccountKeeper), + icq.NewAppModule(*app.AppKeepers.ICQKeeper), + packetforward.NewAppModule(app.AppKeepers.PacketForwardKeeper), + nftmodule.NewAppModule(appCodec, app.AppKeepers.NFTKeeper, app.AppKeepers.AccountKeeper, app.AppKeepers.BankKeeper, app.interfaceRegistry), + } +} +func orderBeginBlockers() []string { + return []string{ + upgradetypes.ModuleName, + minttypes.ModuleName, + distrtypes.ModuleName, + slashingtypes.ModuleName, + evidencetypes.ModuleName, + stakingtypes.ModuleName, + ibchost.ModuleName, + ibctransfertypes.ModuleName, + icatypes.ModuleName, + govtypes.ModuleName, + crisistypes.ModuleName, + genutiltypes.ModuleName, + feegrant.ModuleName, + authtypes.ModuleName, + capabilitytypes.ModuleName, + authz.ModuleName, + assettypes.ModuleName, + collectortypes.ModuleName, + vaulttypes.ModuleName, + bandoraclemoduletypes.ModuleName, + markettypes.ModuleName, + lockertypes.ModuleName, + liquidationtypes.ModuleName, + auctiontypes.ModuleName, + tokenminttypes.ModuleName, + vestingtypes.ModuleName, + paramstypes.ModuleName, + wasmtypes.ModuleName, + banktypes.ModuleName, + rewardstypes.ModuleName, + liquiditytypes.ModuleName, + lendtypes.ModuleName, + esmtypes.ModuleName, + liquidationsV2types.ModuleName, + auctionsV2types.ModuleName, + ibchookstypes.ModuleName, + icqtypes.ModuleName, + packetforwardtypes.ModuleName, + ibcfeetypes.ModuleName, + nft.ModuleName, + consensusparamtypes.ModuleName, + } +} + +func orderEndBlockers() []string { + return []string{ + crisistypes.ModuleName, + govtypes.ModuleName, + stakingtypes.ModuleName, + minttypes.ModuleName, + distrtypes.ModuleName, + genutiltypes.ModuleName, + feegrant.ModuleName, + vestingtypes.ModuleName, + evidencetypes.ModuleName, + ibchost.ModuleName, + icatypes.ModuleName, + ibctransfertypes.ModuleName, + authtypes.ModuleName, + slashingtypes.ModuleName, + authz.ModuleName, + paramstypes.ModuleName, + capabilitytypes.ModuleName, + upgradetypes.ModuleName, + bandoraclemoduletypes.ModuleName, + markettypes.ModuleName, + lockertypes.ModuleName, + vaulttypes.ModuleName, + liquidationtypes.ModuleName, + auctiontypes.ModuleName, + tokenminttypes.ModuleName, + wasmtypes.ModuleName, + lendtypes.ModuleName, + assettypes.ModuleName, + collectortypes.ModuleName, + banktypes.ModuleName, + rewardstypes.ModuleName, + liquiditytypes.ModuleName, + esmtypes.ModuleName, + liquidationsV2types.ModuleName, + auctionsV2types.ModuleName, + ibchookstypes.ModuleName, + icqtypes.ModuleName, + packetforwardtypes.ModuleName, + ibcfeetypes.ModuleName, + nft.ModuleName, + consensusparamtypes.ModuleName, + } +} + +func orderInitGenesis() []string { + return []string{ + capabilitytypes.ModuleName, + authtypes.ModuleName, + banktypes.ModuleName, + distrtypes.ModuleName, + stakingtypes.ModuleName, + slashingtypes.ModuleName, + govtypes.ModuleName, + minttypes.ModuleName, + ibchost.ModuleName, + icatypes.ModuleName, + genutiltypes.ModuleName, + evidencetypes.ModuleName, + ibctransfertypes.ModuleName, + wasmtypes.ModuleName, + authz.ModuleName, + vestingtypes.ModuleName, + paramstypes.ModuleName, + upgradetypes.ModuleName, + assettypes.ModuleName, + collectortypes.ModuleName, + esmtypes.ModuleName, + lendtypes.ModuleName, + vaulttypes.ModuleName, + tokenminttypes.ModuleName, + bandoraclemoduletypes.ModuleName, + markettypes.ModuleName, + liquidationtypes.ModuleName, + auctiontypes.ModuleName, + lockertypes.StoreKey, + liquiditytypes.ModuleName, + rewardstypes.ModuleName, + crisistypes.ModuleName, + liquidationsV2types.ModuleName, + auctionsV2types.ModuleName, + ibchookstypes.ModuleName, + icqtypes.ModuleName, + packetforwardtypes.ModuleName, + ibcfeetypes.ModuleName, + nft.ModuleName, + consensusparamtypes.ModuleName, + } +} diff --git a/app/test_helpers.go b/app/test_helpers.go index 9e4f2cf00..f822b7578 100644 --- a/app/test_helpers.go +++ b/app/test_helpers.go @@ -3,6 +3,7 @@ package app import ( "cosmossdk.io/math" "encoding/json" + "github.com/comdex-official/comdex/app/params" dbm "github.com/cometbft/cometbft-db" abci "github.com/cometbft/cometbft/abci/types" "github.com/cometbft/cometbft/libs/log" @@ -55,7 +56,7 @@ func MakeTestEncodingConfig() moduletestutil.TestEncodingConfig { func setup(t *testing.T, withGenesis bool) (*App, GenesisState) { db := dbm.NewMemDB() //encCdc := MakeTestEncodingConfig() - app := New(log.NewNopLogger(), db, nil, true, map[int64]bool{}, DefaultNodeHome, 5, MakeEncodingConfig(), simtestutil.EmptyAppOptions{}, GetWasmEnabledProposals(), EmptyWasmOpts) + app := New(log.NewNopLogger(), db, nil, true, map[int64]bool{}, DefaultNodeHome, 5, params.MakeEncodingConfig(), simtestutil.EmptyAppOptions{}, GetWasmEnabledProposals(), EmptyWasmOpts) if withGenesis { return app, NewDefaultGenesisState(app.AppCodec()) } diff --git a/cmd/comdex/root.go b/cmd/comdex/root.go index 6dbdaa3dd..32e207d4a 100644 --- a/cmd/comdex/root.go +++ b/cmd/comdex/root.go @@ -2,6 +2,7 @@ package main import ( "errors" + "github.com/comdex-official/comdex/app/params" "io" "os" "path/filepath" @@ -45,8 +46,8 @@ import ( comdex "github.com/comdex-official/comdex/app" ) -func NewRootCmd() (*cobra.Command, comdex.EncodingConfig) { - encodingConfig := comdex.MakeEncodingConfig() +func NewRootCmd() (*cobra.Command, params.EncodingConfig) { + encodingConfig := params.MakeEncodingConfig() initClientCtx := client.Context{}. WithCodec(encodingConfig.Marshaler). WithInterfaceRegistry(encodingConfig.InterfaceRegistry). @@ -128,10 +129,10 @@ func initAppConfig() (string, interface{}) { return customAppTemplate, customAppConfig } -func initRootCmd(rootCmd *cobra.Command, encoding comdex.EncodingConfig) { +func initRootCmd(rootCmd *cobra.Command, encoding params.EncodingConfig) { cfg := sdk.GetConfig() cfg.Seal() - + gentxModule := comdex.ModuleBasics[genutiltypes.ModuleName].(genutil.AppModuleBasic) rootCmd.AddCommand( genutilcli.InitCmd(comdex.ModuleBasics, comdex.DefaultNodeHome), @@ -260,7 +261,7 @@ func appCreatorFunc(logger log.Logger, db tmdb.DB, tracer io.Writer, options ser logger, db, tracer, true, skipUpgradeHeights, cast.ToString(options.Get(flags.FlagHome)), cast.ToUint(options.Get(server.FlagInvCheckPeriod)), - comdex.MakeEncodingConfig(), + params.MakeEncodingConfig(), options, comdex.GetWasmEnabledProposals(), wasmOpts, @@ -280,7 +281,7 @@ func appCreatorFunc(logger log.Logger, db tmdb.DB, tracer io.Writer, options ser func appExportFunc(logger log.Logger, db tmdb.DB, tracer io.Writer, height int64, forZeroHeight bool, jailAllowedAddrs []string, options servertypes.AppOptions, modulesToExport []string, ) (servertypes.ExportedApp, error) { - config := comdex.MakeEncodingConfig() + config := params.MakeEncodingConfig() config.Marshaler = codec.NewProtoCodec(config.InterfaceRegistry) homePath, ok := options.Get(flags.FlagHome).(string) if !ok || homePath == "" { diff --git a/testutil/network/network.go b/testutil/network/network.go index cc2897844..940e9baef 100644 --- a/testutil/network/network.go +++ b/testutil/network/network.go @@ -2,6 +2,7 @@ package network import ( "fmt" + "github.com/comdex-official/comdex/app/params" "testing" "time" @@ -11,18 +12,18 @@ import ( "github.com/cosmos/cosmos-sdk/crypto/hd" "github.com/cosmos/cosmos-sdk/crypto/keyring" servertypes "github.com/cosmos/cosmos-sdk/server/types" + pruningtypes "github.com/cosmos/cosmos-sdk/store/pruning/types" "github.com/cosmos/cosmos-sdk/testutil/network" simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - pruningtypes "github.com/cosmos/cosmos-sdk/store/pruning/types" comdex "github.com/comdex-official/comdex/app" ) type ( - Network = network.Network - Config = network.Config + Network = network.Network + Config = network.Config Validator = network.Validator ) @@ -38,7 +39,7 @@ func New(t *testing.T, configs ...network.Config) *network.Network { } else { cfg = configs[0] } - net, _ := network.New(t,t.TempDir(), cfg) + net, _ := network.New(t, t.TempDir(), cfg) t.Cleanup(net.Cleanup) return net } @@ -46,7 +47,7 @@ func New(t *testing.T, configs ...network.Config) *network.Network { // DefaultConfig will initialize config for the network with custom application, // genesis and single validator. All other parameters are inherited from cosmos-sdk/testutil/network.DefaultConfig func DefaultConfig() network.Config { - encoding := comdex.MakeEncodingConfig() + encoding := params.MakeEncodingConfig() return network.Config{ Codec: encoding.Marshaler, TxConfig: encoding.TxConfig, diff --git a/testutil/simapp/simapp.go b/testutil/simapp/simapp.go index c96425a12..afca7fe98 100644 --- a/testutil/simapp/simapp.go +++ b/testutil/simapp/simapp.go @@ -1,6 +1,7 @@ package simapp import ( + "github.com/comdex-official/comdex/app/params" "time" tmdb "github.com/cometbft/cometbft-db" @@ -18,7 +19,7 @@ func New(dir string) *comdex.App { var ( db = tmdb.NewMemDB() logger = log.NewNopLogger() - encoding = comdex.MakeEncodingConfig() + encoding = params.MakeEncodingConfig() ) a := comdex.New(logger, db, nil, true, map[int64]bool{}, dir, 0, encoding, diff --git a/x/liquidity/client/testutil/suite.go b/x/liquidity/client/testutil/suite.go index db6526e71..8f2ed1571 100644 --- a/x/liquidity/client/testutil/suite.go +++ b/x/liquidity/client/testutil/suite.go @@ -2,6 +2,7 @@ package testutil import ( "fmt" + "github.com/comdex-official/comdex/app/params" "testing" "github.com/stretchr/testify/suite" @@ -37,7 +38,7 @@ func NewAppConstructor() networkI.AppConstructor { return func(val networkI.ValidatorI) servertypes.Application { return chain.New( val.GetCtx().Logger, dbm.NewMemDB(), nil, true, make(map[int64]bool), val.GetCtx().Config.RootDir, 0, - chain.MakeEncodingConfig(), simtestutil.EmptyAppOptions{}, chain.GetWasmEnabledProposals(), chain.EmptyWasmOpts, + params.MakeEncodingConfig(), simtestutil.EmptyAppOptions{}, chain.GetWasmEnabledProposals(), chain.EmptyWasmOpts, baseapp.SetPruning(pruningtypes.NewPruningOptionsFromString(val.GetAppConfig().Pruning)), baseapp.SetMinGasPrices(val.GetAppConfig().MinGasPrices), ) diff --git a/x/vault/client/testutil/suite.go b/x/vault/client/testutil/suite.go index 2a0a5b7c6..8ade047c9 100644 --- a/x/vault/client/testutil/suite.go +++ b/x/vault/client/testutil/suite.go @@ -2,6 +2,7 @@ package testutil import ( "fmt" + "github.com/comdex-official/comdex/app/params" "testing" "github.com/stretchr/testify/suite" @@ -41,7 +42,7 @@ func NewAppConstructor() networkI.AppConstructor { return func(val networkI.ValidatorI) servertypes.Application { return chain.New( val.GetCtx().Logger, dbm.NewMemDB(), nil, true, make(map[int64]bool), val.GetCtx().Config.RootDir, 0, - chain.MakeEncodingConfig(), simtestutil.EmptyAppOptions{}, chain.GetWasmEnabledProposals(), chain.EmptyWasmOpts, + params.MakeEncodingConfig(), simtestutil.EmptyAppOptions{}, chain.GetWasmEnabledProposals(), chain.EmptyWasmOpts, baseapp.SetPruning(pruningtypes.NewPruningOptionsFromString(val.GetAppConfig().Pruning)), baseapp.SetMinGasPrices(val.GetAppConfig().MinGasPrices), ) From 5d58ba45d4083e8a925ae4d16f3c021d72ed575d Mon Sep 17 00:00:00 2001 From: Dheeraj Dubey Date: Tue, 9 Jan 2024 13:37:25 +0530 Subject: [PATCH 3/3] reverting nft init --- app/keepers/keepers.go | 6 ------ app/module.go | 7 ------- 2 files changed, 13 deletions(-) diff --git a/app/keepers/keepers.go b/app/keepers/keepers.go index b406b9ff8..2a7c9b586 100644 --- a/app/keepers/keepers.go +++ b/app/keepers/keepers.go @@ -74,8 +74,6 @@ import ( govtypesv1beta1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" mintkeeper "github.com/cosmos/cosmos-sdk/x/mint/keeper" minttypes "github.com/cosmos/cosmos-sdk/x/mint/types" - "github.com/cosmos/cosmos-sdk/x/nft" - nftkeeper "github.com/cosmos/cosmos-sdk/x/nft/keeper" "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" @@ -151,7 +149,6 @@ var maccPerms = map[string][]string{ ibcfeetypes.ModuleName: nil, assettypes.ModuleName: nil, icqtypes.ModuleName: nil, - nft.ModuleName: nil, } type AppKeepers struct { @@ -216,7 +213,6 @@ type AppKeepers struct { Rewardskeeper rewardskeeper.Keeper NewliqKeeper liquidationsV2keeper.Keeper NewaucKeeper auctionsV2keeper.Keeper - NFTKeeper nftkeeper.Keeper // IBC modules // transfer module @@ -375,8 +371,6 @@ func NewAppKeepers( scopedIBCKeeper, ) - appKeepers.NFTKeeper = nftkeeper.NewKeeper(keys[nftkeeper.StoreKey], appCodec, appKeepers.AccountKeeper, appKeepers.BankKeeper) - // Configure the hooks keeper hooksKeeper := ibchookskeeper.NewKeeper( appKeepers.keys[ibchookstypes.StoreKey], diff --git a/app/module.go b/app/module.go index 143e99af4..0fccdb228 100644 --- a/app/module.go +++ b/app/module.go @@ -60,8 +60,6 @@ import ( govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" "github.com/cosmos/cosmos-sdk/x/mint" minttypes "github.com/cosmos/cosmos-sdk/x/mint/types" - "github.com/cosmos/cosmos-sdk/x/nft" - nftmodule "github.com/cosmos/cosmos-sdk/x/nft/module" "github.com/cosmos/cosmos-sdk/x/params" paramstypes "github.com/cosmos/cosmos-sdk/x/params/types" "github.com/cosmos/cosmos-sdk/x/slashing" @@ -134,7 +132,6 @@ var ModuleBasics = module.NewBasicManager( icq.AppModuleBasic{}, ibchooks.AppModuleBasic{}, packetforward.AppModuleBasic{}, - nftmodule.AppModuleBasic{}, ) func appModules( @@ -191,7 +188,6 @@ func appModules( ibchooks.NewAppModule(app.AppKeepers.AccountKeeper), icq.NewAppModule(*app.AppKeepers.ICQKeeper), packetforward.NewAppModule(app.AppKeepers.PacketForwardKeeper), - nftmodule.NewAppModule(appCodec, app.AppKeepers.NFTKeeper, app.AppKeepers.AccountKeeper, app.AppKeepers.BankKeeper, app.interfaceRegistry), } } func orderBeginBlockers() []string { @@ -235,7 +231,6 @@ func orderBeginBlockers() []string { icqtypes.ModuleName, packetforwardtypes.ModuleName, ibcfeetypes.ModuleName, - nft.ModuleName, consensusparamtypes.ModuleName, } } @@ -281,7 +276,6 @@ func orderEndBlockers() []string { icqtypes.ModuleName, packetforwardtypes.ModuleName, ibcfeetypes.ModuleName, - nft.ModuleName, consensusparamtypes.ModuleName, } } @@ -326,7 +320,6 @@ func orderInitGenesis() []string { icqtypes.ModuleName, packetforwardtypes.ModuleName, ibcfeetypes.ModuleName, - nft.ModuleName, consensusparamtypes.ModuleName, } }