From 263335a4d31538c31695dceeb069d0583f54e21a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guilherme=20Brand=C3=A3o?= Date: Thu, 28 Nov 2024 17:58:10 +0000 Subject: [PATCH] Added fee market state/params initialization --- app/app.go | 62 +++------------------------------ app/app.yaml | 2 +- app/keepers/keepers.go | 60 +++++++++++++++++++++++++++++++ app/upgrades.go | 6 ++-- app/upgrades/types.go | 3 +- app/upgrades/v0_3_0/upgrades.go | 2 ++ app/upgrades/v0_4_0/upgrades.go | 2 ++ app/upgrades/v0_5_0/upgrades.go | 3 ++ app/upgrades/v0_6_0/upgrades.go | 2 ++ app/upgrades/v0_7_0/upgrades.go | 43 ++++++++++++++++++++++- test/common/client.go | 1 + test/generate_genesis.sh | 1 + 12 files changed, 125 insertions(+), 62 deletions(-) create mode 100644 app/keepers/keepers.go diff --git a/app/app.go b/app/app.go index 35dd4ca99..31591ed8a 100644 --- a/app/app.go +++ b/app/app.go @@ -25,11 +25,7 @@ import ( dbm "github.com/cosmos/cosmos-db" storetypes "cosmossdk.io/store/types" - circuitkeeper "cosmossdk.io/x/circuit/keeper" - feegrantkeeper "cosmossdk.io/x/feegrant/keeper" - upgradekeeper "cosmossdk.io/x/upgrade/keeper" - emissionsKeeper "github.com/allora-network/allora-chain/x/emissions/keeper" - mintkeeper "github.com/allora-network/allora-chain/x/mint/keeper" + "github.com/allora-network/allora-chain/app/keepers" "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/codec" @@ -41,29 +37,14 @@ import ( servertypes "github.com/cosmos/cosmos-sdk/server/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" - authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper" - authzkeeper "github.com/cosmos/cosmos-sdk/x/authz/keeper" - bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper" - consensuskeeper "github.com/cosmos/cosmos-sdk/x/consensus/keeper" - distrkeeper "github.com/cosmos/cosmos-sdk/x/distribution/keeper" "github.com/cosmos/cosmos-sdk/x/genutil" genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types" - govkeeper "github.com/cosmos/cosmos-sdk/x/gov/keeper" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" paramsclient "github.com/cosmos/cosmos-sdk/x/params/client" - paramskeeper "github.com/cosmos/cosmos-sdk/x/params/keeper" paramstypes "github.com/cosmos/cosmos-sdk/x/params/types" - slashingkeeper "github.com/cosmos/cosmos-sdk/x/slashing/keeper" - stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" capabilitykeeper "github.com/cosmos/ibc-go/modules/capability/keeper" - icacontrollerkeeper "github.com/cosmos/ibc-go/v8/modules/apps/27-interchain-accounts/controller/keeper" - icahostkeeper "github.com/cosmos/ibc-go/v8/modules/apps/27-interchain-accounts/host/keeper" - ibcfeekeeper "github.com/cosmos/ibc-go/v8/modules/apps/29-fee/keeper" - ibctransferkeeper "github.com/cosmos/ibc-go/v8/modules/apps/transfer/keeper" ibckeeper "github.com/cosmos/ibc-go/v8/modules/core/keeper" metrics "github.com/hashicorp/go-metrics" - feemarketkeeper "github.com/skip-mev/feemarket/x/feemarket/keeper" - feemarkettypes "github.com/skip-mev/feemarket/x/feemarket/types" _ "cosmossdk.io/api/cosmos/tx/config/v1" // import for side-effects _ "cosmossdk.io/x/circuit" // import for side-effects @@ -101,44 +82,13 @@ var ( // capabilities aren't needed for testing. type AlloraApp struct { *runtime.App + keepers.AppKeepers + legacyAmino *codec.LegacyAmino appCodec codec.Codec txConfig client.TxConfig interfaceRegistry codectypes.InterfaceRegistry - // keepers - AccountKeeper authkeeper.AccountKeeper - AuthzKeeper authzkeeper.Keeper - CircuitBreakerKeeper circuitkeeper.Keeper - BankKeeper bankkeeper.Keeper - StakingKeeper *stakingkeeper.Keeper - DistrKeeper distrkeeper.Keeper - ConsensusParamsKeeper consensuskeeper.Keeper - MintKeeper mintkeeper.Keeper - GovKeeper *govkeeper.Keeper - EmissionsKeeper emissionsKeeper.Keeper - ParamsKeeper paramskeeper.Keeper - UpgradeKeeper *upgradekeeper.Keeper - SlashingKeeper slashingkeeper.Keeper - FeeGrantKeeper feegrantkeeper.Keeper - - // IBC - IBCKeeper *ibckeeper.Keeper // IBC Keeper must be a pointer in the app, so we can SetRouter on it correctly - CapabilityKeeper *capabilitykeeper.Keeper - IBCFeeKeeper ibcfeekeeper.Keeper - ICAControllerKeeper icacontrollerkeeper.Keeper - ICAHostKeeper icahostkeeper.Keeper - TransferKeeper ibctransferkeeper.Keeper - - // Scoped IBC - ScopedIBCKeeper capabilitykeeper.ScopedKeeper - ScopedIBCTransferKeeper capabilitykeeper.ScopedKeeper - ScopedICAControllerKeeper capabilitykeeper.ScopedKeeper - ScopedICAHostKeeper capabilitykeeper.ScopedKeeper - - // Fee Market - FeeMarketKeeper feemarketkeeper.Keeper - // simulation manager sm *module.SimulationManager @@ -209,6 +159,7 @@ func NewAlloraApp( appOpts, ), ), + &appBuilder, &app.appCodec, &app.legacyAmino, @@ -249,7 +200,7 @@ func NewAlloraApp( app.sm = module.NewSimulationManagerFromAppModules(app.ModuleManager.Modules, make(map[string]module.AppModuleSimulation, 0)) app.sm.RegisterStoreDecoders() - app.setupUpgradeHandlers() + app.setupUpgradeHandlers(&app.AppKeepers) app.setupUpgradeStoreLoaders() app.SetInitChainer(func(ctx sdk.Context, req *abci.RequestInitChain) (*abci.ResponseInitChain, error) { @@ -260,9 +211,6 @@ func NewAlloraApp( return app.App.InitChainer(ctx, req) }) - // set denom resolver to test variant. - app.FeeMarketKeeper.SetDenomResolver(&feemarkettypes.TestDenomResolver{}) - // Create a global ante handler that will be called on each transaction when // proposals are being built and verified. anteHandlerOptions := ante.HandlerOptions{ diff --git a/app/app.yaml b/app/app.yaml index dc57ce487..1274c0928 100644 --- a/app/app.yaml +++ b/app/app.yaml @@ -17,7 +17,6 @@ modules: - slashing # staking module is required if HistoricalEntries param > 0 - staking - - feegrant - mint - feemarket - ibc @@ -56,6 +55,7 @@ modules: - upgrade - consensus - circuit + # feemarket must be after genutil to allow genesis transactions with 0fees - feemarket - emissions diff --git a/app/keepers/keepers.go b/app/keepers/keepers.go new file mode 100644 index 000000000..278bde4fa --- /dev/null +++ b/app/keepers/keepers.go @@ -0,0 +1,60 @@ +package keepers + +import ( + circuitkeeper "cosmossdk.io/x/circuit/keeper" + feegrantkeeper "cosmossdk.io/x/feegrant/keeper" + upgradekeeper "cosmossdk.io/x/upgrade/keeper" + emissionsKeeper "github.com/allora-network/allora-chain/x/emissions/keeper" + mintkeeper "github.com/allora-network/allora-chain/x/mint/keeper" + authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper" + authzkeeper "github.com/cosmos/cosmos-sdk/x/authz/keeper" + bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper" + consensuskeeper "github.com/cosmos/cosmos-sdk/x/consensus/keeper" + distrkeeper "github.com/cosmos/cosmos-sdk/x/distribution/keeper" + govkeeper "github.com/cosmos/cosmos-sdk/x/gov/keeper" + paramskeeper "github.com/cosmos/cosmos-sdk/x/params/keeper" + slashingkeeper "github.com/cosmos/cosmos-sdk/x/slashing/keeper" + stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" + capabilitykeeper "github.com/cosmos/ibc-go/modules/capability/keeper" + icacontrollerkeeper "github.com/cosmos/ibc-go/v8/modules/apps/27-interchain-accounts/controller/keeper" + icahostkeeper "github.com/cosmos/ibc-go/v8/modules/apps/27-interchain-accounts/host/keeper" + ibcfeekeeper "github.com/cosmos/ibc-go/v8/modules/apps/29-fee/keeper" + ibctransferkeeper "github.com/cosmos/ibc-go/v8/modules/apps/transfer/keeper" + ibckeeper "github.com/cosmos/ibc-go/v8/modules/core/keeper" + feemarketkeeper "github.com/skip-mev/feemarket/x/feemarket/keeper" +) + +type AppKeepers struct { + // keepers + AccountKeeper authkeeper.AccountKeeper + AuthzKeeper authzkeeper.Keeper + CircuitBreakerKeeper circuitkeeper.Keeper + BankKeeper bankkeeper.Keeper + StakingKeeper *stakingkeeper.Keeper + DistrKeeper distrkeeper.Keeper + ConsensusParamsKeeper consensuskeeper.Keeper + MintKeeper mintkeeper.Keeper + GovKeeper *govkeeper.Keeper + EmissionsKeeper emissionsKeeper.Keeper + ParamsKeeper paramskeeper.Keeper + UpgradeKeeper *upgradekeeper.Keeper + SlashingKeeper slashingkeeper.Keeper + FeeGrantKeeper feegrantkeeper.Keeper + + // IBC + IBCKeeper *ibckeeper.Keeper // IBC Keeper must be a pointer in the app, so we can SetRouter on it correctly + CapabilityKeeper *capabilitykeeper.Keeper + IBCFeeKeeper ibcfeekeeper.Keeper + ICAControllerKeeper icacontrollerkeeper.Keeper + ICAHostKeeper icahostkeeper.Keeper + TransferKeeper ibctransferkeeper.Keeper + + // Scoped IBC + ScopedIBCKeeper capabilitykeeper.ScopedKeeper + ScopedIBCTransferKeeper capabilitykeeper.ScopedKeeper + ScopedICAControllerKeeper capabilitykeeper.ScopedKeeper + ScopedICAHostKeeper capabilitykeeper.ScopedKeeper + + // Fee Market + FeeMarketKeeper feemarketkeeper.Keeper +} diff --git a/app/upgrades.go b/app/upgrades.go index d20e9097c..cd0cd0551 100644 --- a/app/upgrades.go +++ b/app/upgrades.go @@ -4,6 +4,7 @@ import ( "fmt" upgradetypes "cosmossdk.io/x/upgrade/types" + "github.com/allora-network/allora-chain/app/keepers" "github.com/allora-network/allora-chain/app/upgrades" "github.com/allora-network/allora-chain/app/upgrades/v0_3_0" "github.com/allora-network/allora-chain/app/upgrades/v0_4_0" @@ -22,10 +23,11 @@ var upgradeHandlers = []upgrades.Upgrade{ // ... } -func (app *AlloraApp) setupUpgradeHandlers() { +func (app *AlloraApp) setupUpgradeHandlers(appKeepers *keepers.AppKeepers) { for _, handler := range upgradeHandlers { app.UpgradeKeeper.SetUpgradeHandler(handler.UpgradeName, - handler.CreateUpgradeHandler(app.ModuleManager, app.Configurator())) + handler.CreateUpgradeHandler(app.ModuleManager, app.Configurator(), appKeepers)) + } } diff --git a/app/upgrades/types.go b/app/upgrades/types.go index 5b02c562a..c7e974151 100644 --- a/app/upgrades/types.go +++ b/app/upgrades/types.go @@ -4,6 +4,7 @@ import ( storetypes "cosmossdk.io/store/types" upgradetypes "cosmossdk.io/x/upgrade/types" + "github.com/allora-network/allora-chain/app/keepers" "github.com/cosmos/cosmos-sdk/types/module" ) @@ -15,7 +16,7 @@ type Upgrade struct { UpgradeName string // CreateUpgradeHandler defines the function that creates an upgrade handler - CreateUpgradeHandler func(mm *module.Manager, configurator module.Configurator) upgradetypes.UpgradeHandler + CreateUpgradeHandler func(mm *module.Manager, configurator module.Configurator, keepers *keepers.AppKeepers) upgradetypes.UpgradeHandler // StoreUpgrades should be used for any new modules introduced, new modules deleted, or store names renamed. StoreUpgrades storetypes.StoreUpgrades diff --git a/app/upgrades/v0_3_0/upgrades.go b/app/upgrades/v0_3_0/upgrades.go index f569a1059..3d23ec6ec 100644 --- a/app/upgrades/v0_3_0/upgrades.go +++ b/app/upgrades/v0_3_0/upgrades.go @@ -5,6 +5,7 @@ import ( storetypes "cosmossdk.io/store/types" upgradetypes "cosmossdk.io/x/upgrade/types" + "github.com/allora-network/allora-chain/app/keepers" "github.com/allora-network/allora-chain/app/upgrades" "github.com/cosmos/cosmos-sdk/types/module" ) @@ -22,6 +23,7 @@ var Upgrade = upgrades.Upgrade{ func CreateUpgradeHandler( moduleManager *module.Manager, configurator module.Configurator, + keepers *keepers.AppKeepers, ) upgradetypes.UpgradeHandler { return func(ctx context.Context, plan upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { return moduleManager.RunMigrations(ctx, configurator, vm) diff --git a/app/upgrades/v0_4_0/upgrades.go b/app/upgrades/v0_4_0/upgrades.go index 45ec4b13b..c1f56a0d5 100644 --- a/app/upgrades/v0_4_0/upgrades.go +++ b/app/upgrades/v0_4_0/upgrades.go @@ -5,6 +5,7 @@ import ( storetypes "cosmossdk.io/store/types" upgradetypes "cosmossdk.io/x/upgrade/types" + "github.com/allora-network/allora-chain/app/keepers" "github.com/allora-network/allora-chain/app/upgrades" "github.com/cosmos/cosmos-sdk/types/module" ) @@ -22,6 +23,7 @@ var Upgrade = upgrades.Upgrade{ func CreateUpgradeHandler( moduleManager *module.Manager, configurator module.Configurator, + keepers *keepers.AppKeepers, ) upgradetypes.UpgradeHandler { return func(ctx context.Context, plan upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { return moduleManager.RunMigrations(ctx, configurator, vm) diff --git a/app/upgrades/v0_5_0/upgrades.go b/app/upgrades/v0_5_0/upgrades.go index 67be75570..0bb7be924 100644 --- a/app/upgrades/v0_5_0/upgrades.go +++ b/app/upgrades/v0_5_0/upgrades.go @@ -5,6 +5,8 @@ import ( storetypes "cosmossdk.io/store/types" upgradetypes "cosmossdk.io/x/upgrade/types" + + "github.com/allora-network/allora-chain/app/keepers" "github.com/allora-network/allora-chain/app/upgrades" "github.com/cosmos/cosmos-sdk/types/module" ) @@ -22,6 +24,7 @@ var Upgrade = upgrades.Upgrade{ func CreateUpgradeHandler( moduleManager *module.Manager, configurator module.Configurator, + keepers *keepers.AppKeepers, ) upgradetypes.UpgradeHandler { return func(ctx context.Context, plan upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { return moduleManager.RunMigrations(ctx, configurator, vm) diff --git a/app/upgrades/v0_6_0/upgrades.go b/app/upgrades/v0_6_0/upgrades.go index 753e73dba..1c1e97d93 100644 --- a/app/upgrades/v0_6_0/upgrades.go +++ b/app/upgrades/v0_6_0/upgrades.go @@ -5,6 +5,7 @@ import ( storetypes "cosmossdk.io/store/types" upgradetypes "cosmossdk.io/x/upgrade/types" + "github.com/allora-network/allora-chain/app/keepers" "github.com/allora-network/allora-chain/app/upgrades" "github.com/cosmos/cosmos-sdk/types/module" ) @@ -22,6 +23,7 @@ var Upgrade = upgrades.Upgrade{ func CreateUpgradeHandler( moduleManager *module.Manager, configurator module.Configurator, + keepers *keepers.AppKeepers, ) upgradetypes.UpgradeHandler { return func(ctx context.Context, plan upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { return moduleManager.RunMigrations(ctx, configurator, vm) diff --git a/app/upgrades/v0_7_0/upgrades.go b/app/upgrades/v0_7_0/upgrades.go index 0b3971603..8c294001e 100644 --- a/app/upgrades/v0_7_0/upgrades.go +++ b/app/upgrades/v0_7_0/upgrades.go @@ -3,10 +3,14 @@ package v0_7_0 //nolint:revive // var-naming: don't use an underscore in package import ( "context" + cosmosmath "cosmossdk.io/math" storetypes "cosmossdk.io/store/types" "cosmossdk.io/x/feegrant" upgradetypes "cosmossdk.io/x/upgrade/types" + "github.com/allora-network/allora-chain/app/keepers" + "github.com/allora-network/allora-chain/app/params" "github.com/allora-network/allora-chain/app/upgrades" + sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" feemarkettypes "github.com/skip-mev/feemarket/x/feemarket/types" ) @@ -30,8 +34,45 @@ var Upgrade = upgrades.Upgrade{ func CreateUpgradeHandler( moduleManager *module.Manager, configurator module.Configurator, + keepers *keepers.AppKeepers, ) upgradetypes.UpgradeHandler { return func(ctx context.Context, plan upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { - return moduleManager.RunMigrations(ctx, configurator, vm) + + vm, err := moduleManager.RunMigrations(ctx, configurator, vm) + if err != nil { + return vm, err + } + + if err := ConfigureFeeMarketModule(ctx, keepers); err != nil { + return vm, err + } + + return vm, nil + } +} + +func ConfigureFeeMarketModule(ctx context.Context, keepers *keepers.AppKeepers) error { + sdkCtx := sdk.UnwrapSDKContext(ctx) + + feeMarketParams, err := keepers.FeeMarketKeeper.GetParams(sdkCtx) + if err != nil { + return err } + + feeMarketParams.Enabled = true + feeMarketParams.FeeDenom = params.BaseCoinUnit + feeMarketParams.MinBaseGasPrice = cosmosmath.LegacyMustNewDecFromStr("10") + feeMarketParams.MaxBlockUtilization = feemarkettypes.DefaultMaxBlockUtilization + if err := keepers.FeeMarketKeeper.SetParams(sdkCtx, feeMarketParams); err != nil { + return err + } + + state, err := keepers.FeeMarketKeeper.GetState(sdkCtx) + if err != nil { + return err + } + + state.BaseGasPrice = cosmosmath.LegacyMustNewDecFromStr("10") + + return keepers.FeeMarketKeeper.SetState(sdkCtx, state) } diff --git a/test/common/client.go b/test/common/client.go index f28681cc0..527f443b7 100644 --- a/test/common/client.go +++ b/test/common/client.go @@ -81,6 +81,7 @@ func NewClient( cosmosclient.WithHome(alloraHomeDir), cosmosclient.WithGas("auto"), cosmosclient.WithGasAdjustment(1.2), + cosmosclient.WithFees("10000uallo"), ) require.NoError(t, err) ccCtx := cosmosClient.Context() diff --git a/test/generate_genesis.sh b/test/generate_genesis.sh index 1eea32fdb..a070eb110 100755 --- a/test/generate_genesis.sh +++ b/test/generate_genesis.sh @@ -132,6 +132,7 @@ FAUCET_ADDRESS="${FAUCET_ADDRESS%%[[:cntrl:]]}" # some sample default parameters for integration tests dasel put 'app_state.emissions.core_team_addresses.append()' -t string -v $FAUCET_ADDRESS -f $genesisHome/config/genesis.json dasel put 'app_state.gov.params.expedited_voting_period' -t string -v "300s" -f $genesisHome/config/genesis.json +dasel put 'app_state.feemarket.params.fee_denom' -t string -v "uallo" -f $genesisHome/config/genesis.json cp -f $genesisHome/config/genesis.json $COMMON_HOME_DIR