Skip to content

Commit

Permalink
x/mint begin blocker -> manifest
Browse files Browse the repository at this point in the history
  • Loading branch information
Reecepbcups committed Feb 22, 2024
1 parent acab063 commit f16711a
Show file tree
Hide file tree
Showing 5 changed files with 109 additions and 4 deletions.
6 changes: 3 additions & 3 deletions app/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -692,7 +692,7 @@ func NewApp(
poamodule.NewAppModule(appCodec, app.POAKeeper),
// sdk
crisis.NewAppModule(app.CrisisKeeper, skipGenesisInvariants, app.GetSubspace(crisistypes.ModuleName)), // always be last to make sure that it checks for all invariants and not only part of them
manifest.NewAppModule(appCodec, app.ManifestKeeper),
manifest.NewAppModule(appCodec, app.ManifestKeeper, app.MintKeeper, app.BankKeeper),
)

// BasicModuleManager defines the module BasicManager is in charge of setting up basic,
Expand Down Expand Up @@ -723,7 +723,8 @@ func NewApp(
// NOTE: staking module is required if HistoricalEntries param > 0
// NOTE: capability module's beginblocker must come before any modules using capabilities (e.g. IBC)
app.ModuleManager.SetOrderBeginBlockers(
minttypes.ModuleName,
// minttypes.ModuleName, // we override with the manifest module logic
manifesttypes.ModuleName, // minter to stakeholders
distrtypes.ModuleName,
slashingtypes.ModuleName,
evidencetypes.ModuleName,
Expand All @@ -738,7 +739,6 @@ func NewApp(
icatypes.ModuleName,
ibcfeetypes.ModuleName,
tokenfactorytypes.ModuleName,
manifesttypes.ModuleName,
)

app.ModuleManager.SetOrderEndBlockers(
Expand Down
2 changes: 2 additions & 0 deletions app/test_helpers.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import (

apphelpers "github.com/liftedinit/manifest-ledger/app/helpers"
appparams "github.com/liftedinit/manifest-ledger/app/params"
"github.com/liftedinit/manifest-ledger/x/manifest/types"
"github.com/strangelove-ventures/poa"
"github.com/stretchr/testify/require"

Expand Down Expand Up @@ -215,6 +216,7 @@ func setup(t *testing.T, withGenesis bool) (*ManifestApp, GenesisState) {
app.GovKeeper.Constitution.Set(ctx, "")
app.GovKeeper.Params.Set(ctx, govv1types.DefaultParams())
app.ConsensusParamsKeeper.ParamsStore.Set(ctx, *simtestutil.DefaultConsensusParams)
app.ManifestKeeper.Params.Set(ctx, types.DefaultParams())

if withGenesis {
return app, NewDefaultGenesisState(t)
Expand Down
88 changes: 88 additions & 0 deletions x/manifest/abci.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
package module

import (
"context"
"time"

sdk "github.com/cosmos/cosmos-sdk/types"

sdkmath "cosmossdk.io/math"
"github.com/cosmos/cosmos-sdk/telemetry"
bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper"
mintkeeper "github.com/cosmos/cosmos-sdk/x/mint/keeper"
minttypes "github.com/cosmos/cosmos-sdk/x/mint/types"
"github.com/liftedinit/manifest-ledger/x/manifest/keeper"
manifesttypes "github.com/liftedinit/manifest-ledger/x/manifest/types"
)

// BeginBlocker mints new tokens for the previous block.
func BeginBlocker(ctx context.Context, k keeper.Keeper, mk mintkeeper.Keeper, bk bankkeeper.Keeper) error {

ic := minttypes.DefaultInflationCalculationFn

defer telemetry.ModuleMeasureSince(manifesttypes.ModuleName, time.Now(), telemetry.MetricKeyBeginBlocker)

// fetch stored minter & params
minter, err := mk.Minter.Get(ctx)
if err != nil {
return err
}

params, err := mk.Params.Get(ctx)
if err != nil {
return err
}

// recalculate inflation rate
totalSupply := bk.GetSupply(ctx, "umfx").Amount

// bondedRatio, err := k.BondedRatio(ctx)
// if err != nil {
// return err
// }
// always 0 for us
bondedRatio := sdkmath.LegacyZeroDec()

minter.Inflation = ic(ctx, minter, params, bondedRatio)
minter.AnnualProvisions = minter.NextAnnualProvisions(params, totalSupply)
if err = mk.Minter.Set(ctx, minter); err != nil {
return err
}

// mint coins, update supply
mintedCoin := minter.BlockProvision(params)
mintedCoins := sdk.NewCoins(mintedCoin)

err = mk.MintCoins(ctx, mintedCoins)
if err != nil {
return err
}

// Payout
if err := k.PayoutStakeholders(ctx, mintedCoin); err != nil {
return err
}

// send the minted coins to the fee collector account
err = mk.AddCollectedFees(ctx, mintedCoins)
if err != nil {
return err
}

if mintedCoin.Amount.IsInt64() {
defer telemetry.ModuleSetGauge(minttypes.ModuleName, float32(mintedCoin.Amount.Int64()), "minted_tokens")
}

sdkCtx := sdk.UnwrapSDKContext(ctx)
sdkCtx.EventManager().EmitEvent(
sdk.NewEvent(
minttypes.EventTypeMint,
sdk.NewAttribute(minttypes.AttributeKeyBondedRatio, bondedRatio.String()),
sdk.NewAttribute(minttypes.AttributeKeyInflation, minter.Inflation.String()),
sdk.NewAttribute(minttypes.AttributeKeyAnnualProvisions, minter.AnnualProvisions.String()),
sdk.NewAttribute(sdk.AttributeKeyAmount, mintedCoin.Amount.String()),
),
)

return nil
}
2 changes: 1 addition & 1 deletion x/manifest/depinject.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ type ModuleOutputs struct {

func ProvideModule(in ModuleInputs) ModuleOutputs {
k := keeper.NewKeeper(in.Cdc, in.StoreService, in.MintKeeper, in.BankKeeper, log.NewLogger(os.Stderr), authtypes.NewModuleAddress(govtypes.ModuleName).String())
m := NewAppModule(in.Cdc, k)
m := NewAppModule(in.Cdc, k, in.MintKeeper, in.BankKeeper)

return ModuleOutputs{Module: m, Keeper: k, Out: depinject.Out{}}
}
15 changes: 15 additions & 0 deletions x/manifest/module.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,16 @@ import (

autocliv1 "cosmossdk.io/api/cosmos/autocli/v1"
"cosmossdk.io/client/v2/autocli"
"cosmossdk.io/core/appmodule"
errorsmod "cosmossdk.io/errors"

"github.com/cosmos/cosmos-sdk/client"
"github.com/cosmos/cosmos-sdk/codec"
codectypes "github.com/cosmos/cosmos-sdk/codec/types"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/module"
bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper"
mintkeeper "github.com/cosmos/cosmos-sdk/x/mint/keeper"
)

const (
Expand All @@ -35,6 +38,8 @@ var (
_ module.AppModuleGenesis = AppModule{}
_ module.AppModule = AppModule{}

_ appmodule.HasBeginBlocker = AppModule{}

_ autocli.HasAutoCLIConfig = AppModule{}
_ autocli.HasCustomQueryCommand = AppModule{}
_ autocli.HasCustomTxCommand = AppModule{}
Expand All @@ -49,16 +54,22 @@ type AppModule struct {
AppModuleBasic

keeper keeper.Keeper
mk mintkeeper.Keeper
bk bankkeeper.Keeper
}

// NewAppModule constructor
func NewAppModule(
cdc codec.Codec,
keeper keeper.Keeper,
mintkeeper mintkeeper.Keeper,
bankkeeper bankkeeper.Keeper,
) *AppModule {
return &AppModule{
AppModuleBasic: AppModuleBasic{cdc: cdc},
keeper: keeper,
mk: mintkeeper,
bk: bankkeeper,
}
}

Expand Down Expand Up @@ -153,6 +164,10 @@ func (a AppModule) RegisterServices(cfg module.Configurator) {
types.RegisterQueryServer(cfg.QueryServer(), keeper.NewQuerier(a.keeper))
}

func (a AppModule) BeginBlock(ctx context.Context) error {
return BeginBlocker(ctx, a.keeper, a.mk, a.bk)
}

// ConsensusVersion is a sequence number for state-breaking change of the
// module. It should be incremented on each consensus-breaking change
// introduced by the module. To avoid wrong/empty versions, the initial version
Expand Down

0 comments on commit f16711a

Please sign in to comment.