Skip to content

Commit

Permalink
feat: add fee grant module
Browse files Browse the repository at this point in the history
  • Loading branch information
ivivanov authored and ivivanov committed Jan 8, 2024
1 parent 3158283 commit ebabac8
Show file tree
Hide file tree
Showing 7 changed files with 67 additions and 3 deletions.
2 changes: 1 addition & 1 deletion app/ante.go
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ func NewAnteHandler(options HandlerOptions) (sdk.AnteHandler, error) {
ante.NewTxTimeoutHeightDecorator(),
ante.NewValidateMemoDecorator(options.AccountKeeper),
ante.NewConsumeGasForTxSizeDecorator(options.AccountKeeper),
ante.NewDeductFeeDecorator(options.AccountKeeper, options.BankKeeper, nil, options.TxFeeChecker),
ante.NewDeductFeeDecorator(options.AccountKeeper, options.BankKeeper, options.FeegrantKeeper, options.TxFeeChecker),

// Tax calculation must be called after fees
taxkeeper.NewDeductTaxDecorator(options.AccountKeeper, options.BankKeeper, options.TaxKeeper),
Expand Down
5 changes: 3 additions & 2 deletions app/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ import (
"github.com/Nolus-Protocol/nolus-core/app/params"
appparams "github.com/Nolus-Protocol/nolus-core/app/params"
"github.com/Nolus-Protocol/nolus-core/app/upgrades"
v05 "github.com/Nolus-Protocol/nolus-core/app/upgrades/v05"
v051 "github.com/Nolus-Protocol/nolus-core/app/upgrades/v051"
"github.com/Nolus-Protocol/nolus-core/docs"

wasmkeeper "github.com/CosmWasm/wasmd/x/wasm/keeper"
Expand All @@ -61,7 +61,7 @@ const (
var (
DefaultNodeHome string

Upgrades = []upgrades.Upgrade{v05.Upgrade}
Upgrades = []upgrades.Upgrade{v051.Upgrade}
)

var (
Expand Down Expand Up @@ -210,6 +210,7 @@ func New(
SignModeHandler: encodingConfig.TxConfig.SignModeHandler(),
SigGasConsumer: ante.DefaultSigVerificationGasConsumer,
TxFeeChecker: app.TaxKeeper.CustomTxFeeChecker, // when nil is provided NewDeductFeeDecorator uses default checkTxFeeWithValidatorMinGasPrices
FeegrantKeeper: app.FeegrantKeeper,
},
BankKeeper: app.BankKeeper,
TaxKeeper: *app.TaxKeeper,
Expand Down
10 changes: 10 additions & 0 deletions app/keepers/keepers.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import (
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"
"github.com/cosmos/cosmos-sdk/x/feegrant"
govkeeper "github.com/cosmos/cosmos-sdk/x/gov/keeper"
govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
govv1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1"
Expand Down Expand Up @@ -66,6 +67,7 @@ import (
wasmkeeper "github.com/CosmWasm/wasmd/x/wasm/keeper"
wasmtypes "github.com/CosmWasm/wasmd/x/wasm/types"

feegrantkeeper "github.com/cosmos/cosmos-sdk/x/feegrant/keeper"
"github.com/neutron-org/neutron/x/contractmanager"
contractmanagermodulekeeper "github.com/neutron-org/neutron/x/contractmanager/keeper"
contractmanagermoduletypes "github.com/neutron-org/neutron/x/contractmanager/types"
Expand All @@ -92,6 +94,7 @@ type AppKeepers struct {
AccountKeeper *authkeeper.AccountKeeper
BankKeeper *bankkeeper.BaseKeeper
CapabilityKeeper *capabilitykeeper.Keeper
FeegrantKeeper *feegrantkeeper.Keeper
StakingKeeper *stakingkeeper.Keeper
SlashingKeeper *slashingkeeper.Keeper
DistrKeeper *distrkeeper.Keeper
Expand Down Expand Up @@ -203,6 +206,13 @@ func (appKeepers *AppKeepers) NewAppKeepers(
)
appKeepers.AccountKeeper = &accountKeeper

feegrantKeeper := feegrantkeeper.NewKeeper(
appCodec,
appKeepers.keys[feegrant.StoreKey],
appKeepers.AccountKeeper,
)
appKeepers.FeegrantKeeper = &feegrantKeeper

bankKeeper := bankkeeper.NewBaseKeeper(
appCodec,
appKeepers.keys[banktypes.StoreKey],
Expand Down
2 changes: 2 additions & 0 deletions app/keepers/keys.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import (
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"
paramstypes "github.com/cosmos/cosmos-sdk/x/params/types"
slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types"
Expand Down Expand Up @@ -50,6 +51,7 @@ func (appKeepers *AppKeepers) GenerateKeys() {
ibcexported.StoreKey,
upgradetypes.StoreKey,
evidencetypes.StoreKey,
feegrant.StoreKey,
ibctransfertypes.StoreKey,
taxmoduletypes.StoreKey,
vestingstypes.StoreKey,
Expand Down
8 changes: 8 additions & 0 deletions app/modules.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@ import (
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"
feegrantmodule "github.com/cosmos/cosmos-sdk/x/feegrant/module"
"github.com/cosmos/cosmos-sdk/x/genutil"
genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types"
"github.com/cosmos/cosmos-sdk/x/gov"
Expand Down Expand Up @@ -105,6 +107,7 @@ var ModuleBasics = module.NewBasicManager(
sdkparams.AppModuleBasic{},
crisis.AppModuleBasic{},
slashing.AppModuleBasic{},
feegrantmodule.AppModuleBasic{},
ibc.AppModuleBasic{},
upgrade.AppModuleBasic{},
evidence.AppModuleBasic{},
Expand Down Expand Up @@ -143,6 +146,7 @@ func appModules(
bank.NewAppModule(appCodec, *app.BankKeeper, *app.AccountKeeper, app.GetSubspace(banktypes.ModuleName)),
capability.NewAppModule(appCodec, *app.CapabilityKeeper, false),
crisis.NewAppModule(app.CrisisKeeper, skipGenesisInvariants, app.GetSubspace(crisistypes.ModuleName)),
feegrantmodule.NewAppModule(appCodec, app.AccountKeeper, app.BankKeeper, *app.FeegrantKeeper, app.interfaceRegistry),
gov.NewAppModule(appCodec, app.GovKeeper, app.AccountKeeper, app.BankKeeper, app.GetSubspace(govtypes.ModuleName)),
mint.NewAppModule(appCodec, *app.MintKeeper, app.AccountKeeper, app.GetSubspace(minttypes.ModuleName)),
slashing.NewAppModule(appCodec, *app.SlashingKeeper, app.AccountKeeper, app.BankKeeper, app.StakingKeeper, app.GetSubspace(slashingtypes.ModuleName)),
Expand Down Expand Up @@ -178,6 +182,7 @@ func simulationModules(
auth.NewAppModule(appCodec, *app.AccountKeeper, authsims.RandomGenesisAccounts, app.GetSubspace(authtypes.ModuleName)),
bank.NewAppModule(appCodec, *app.BankKeeper, *app.AccountKeeper, app.GetSubspace(banktypes.ModuleName)),
capability.NewAppModule(appCodec, *app.CapabilityKeeper, false),
feegrantmodule.NewAppModule(appCodec, app.AccountKeeper, app.BankKeeper, *app.FeegrantKeeper, app.interfaceRegistry),
gov.NewAppModule(appCodec, app.GovKeeper, app.AccountKeeper, app.BankKeeper, app.GetSubspace(govtypes.ModuleName)),
mint.NewAppModule(appCodec, *app.MintKeeper, app.AccountKeeper, app.GetSubspace(minttypes.ModuleName)),
tax.NewAppModule(appCodec, *app.TaxKeeper, app.AccountKeeper, app.BankKeeper, app.GetSubspace(taxmoduletypes.ModuleName)),
Expand Down Expand Up @@ -225,6 +230,7 @@ func orderBeginBlockers() []string {
authz.ModuleName,
ibctransfertypes.ModuleName,
crisistypes.ModuleName,
feegrant.ModuleName,
taxmoduletypes.ModuleName,
vestingstypes.ModuleName,
govtypes.ModuleName,
Expand All @@ -251,6 +257,7 @@ func orderEndBlockers() []string {
vestingtypes.ModuleName,
minttypes.ModuleName,
evidencetypes.ModuleName,
feegrant.ModuleName,
authz.ModuleName,
ibctransfertypes.ModuleName,
genutiltypes.ModuleName,
Expand Down Expand Up @@ -292,6 +299,7 @@ func orderInitBlockers() []string {
ibcexported.ModuleName,
genutiltypes.ModuleName,
evidencetypes.ModuleName,
feegrant.ModuleName,
authz.ModuleName,
paramstypes.ModuleName,
upgradetypes.ModuleName,
Expand Down
22 changes: 22 additions & 0 deletions app/upgrades/v051/constants.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package v051

import (
"github.com/Nolus-Protocol/nolus-core/app/upgrades"
store "github.com/cosmos/cosmos-sdk/store/types"
"github.com/cosmos/cosmos-sdk/x/feegrant"
)

const (
// UpgradeName defines the on-chain upgrades name.
UpgradeName = "v0.5.1"
)

var Upgrade = upgrades.Upgrade{
UpgradeName: UpgradeName,
CreateUpgradeHandler: CreateUpgradeHandler,
StoreUpgrades: store.StoreUpgrades{
Added: []string{
feegrant.ModuleName,
},
},
}
21 changes: 21 additions & 0 deletions app/upgrades/v051/upgrades.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package v051

import (
"github.com/Nolus-Protocol/nolus-core/app/keepers"

"github.com/cosmos/cosmos-sdk/codec"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/module"
upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types"
)

func CreateUpgradeHandler(
mm *module.Manager,
configurator module.Configurator,
keepers *keepers.AppKeepers,
codec codec.Codec,
) upgradetypes.UpgradeHandler {
return func(ctx sdk.Context, plan upgradetypes.Plan, fromVM module.VersionMap) (module.VersionMap, error) {
return mm.RunMigrations(ctx, configurator, fromVM)
}
}

0 comments on commit ebabac8

Please sign in to comment.