mint

package
v1.6.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 26, 2024 License: Apache-2.0, Apache-2.0 Imports: 15 Imported by: 3

README

Mint Module

The Mint module is responsible for the creation (minting) of new tokens according to predefined rules. It operates based on epochs, a concept borrowed from the x/epochs module, to regulate the timing of minting operations.

On genesis, a RollApp deployer should initialize it's current inflation rate, target inflation rate and the time for reaching the target. The module will automatically decrease the inflation rate linearly over time until it reaches the target inflation rate.

Example: On genesis a RollApp deployer initializes an 8% inflation rate, with a target 2% inflation rate, linearly decreasing for 1825 daily epochs (i.e. 5 years). After 1825 epochs the inflation remains at a 2% inflation rate.

Key Features

  • Token Minting: Automatically mints new tokens at the end of each mint epoch, which is configurable and defaults to a daily cycle.
  • Inflation Adjustment: Adjusts the inflation rate at the end of each inflation epoch, which is also configurable and defaults to a yearly cycle.
  • Distribution: Integrates with the x/distribution module to allocate minted tokens to various stakeholders, including governors, community pool and the current sequencer.

How It Works

  1. Minting Epoch: At the end of each minting epoch, the module calculates the amount of new tokens to be minted based on the current total supply and the inflation rate.
  2. Inflation Adjustment: The inflation rate can be adjusted at the end of each inflation epoch based on predefined rules or governance decisions.
  3. Distribution: Once tokens are minted, they are distributed according to the rules defined in the x/distribution module.

Configuration

The module's behavior can be customized through parameters set at genesis or updated through governance proposals. Key parameters include:

  • CurrentInflationRate: Specifies the current inflation rate. Should be defined at genesis.
  • TargetInflationRate: Specifies the target inflation rate to be reached over time.
  • InflationChangeEpochIdentifier: How often the inflation rate should be adjusted.
  • InflationRateChange: How much should the inflation rate change at each inflation epoch.

Integration Points

  • Bank Module: Interacts with the Bank module to mint tokens and update the supply.
  • Distribution Module: Coordinates with the Distribution module to allocate minted tokens.
  • Epochs Module: Uses the Epochs module to track the passage of minting and inflation epochs.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AppModule

type AppModule struct {
	AppModuleBasic
	// contains filtered or unexported fields
}

AppModule implements an application module for the mint module.

func NewAppModule

func NewAppModule(cdc codec.Codec, keeper keeper.Keeper, ak types.AccountKeeper, bk types.BankKeeper) AppModule

NewAppModule creates a new AppModule object.

func (AppModule) BeginBlock

func (am AppModule) BeginBlock(ctx sdk.Context, _ abci.RequestBeginBlock)

BeginBlock returns the begin blocker for the mint module.

func (AppModule) ConsensusVersion

func (AppModule) ConsensusVersion() uint64

ConsensusVersion implements AppModule/ConsensusVersion.

func (AppModule) EndBlock

EndBlock returns the end blocker for the mint module. It returns no validator updates.

func (AppModule) ExportGenesis

func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.RawMessage

ExportGenesis returns the exported genesis state as raw bytes for the mint module.

func (AppModule) InitGenesis

func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, data json.RawMessage) []abci.ValidatorUpdate

InitGenesis performs genesis initialization for the mint module. It returns no validator updates.

func (AppModule) LegacyQuerierHandler

func (am AppModule) LegacyQuerierHandler(legacyQuerierCdc *codec.LegacyAmino) sdk.Querier

LegacyQuerierHandler returns the x/mint module's sdk.Querier.

func (AppModule) Name

func (AppModule) Name() string

Name returns the mint module's name.

func (AppModule) ProposalContents

func (AppModule) ProposalContents(simState module.SimulationState) []simtypes.WeightedProposalContent

ProposalContents doesn't return any content functions for governance proposals.

func (AppModule) QuerierRoute

func (AppModule) QuerierRoute() string

QuerierRoute returns the mint module's querier route name.

func (AppModule) RegisterInvariants

func (am AppModule) RegisterInvariants(_ sdk.InvariantRegistry)

RegisterInvariants registers the mint module invariants.

func (AppModule) RegisterServices

func (am AppModule) RegisterServices(cfg module.Configurator)

RegisterServices registers a gRPC query service to respond to the module-specific gRPC queries.

func (AppModule) Route

func (AppModule) Route() sdk.Route

Route returns the message routing key for the mint module.

func (AppModule) WeightedOperations

func (AppModule) WeightedOperations(_ module.SimulationState) []simtypes.WeightedOperation

WeightedOperations doesn't return any mint module operation.

type AppModuleBasic

type AppModuleBasic struct {
	// contains filtered or unexported fields
}

AppModuleBasic defines the basic application module used by the mint module.

func (AppModuleBasic) DefaultGenesis

func (AppModuleBasic) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage

DefaultGenesis returns default genesis state as raw bytes for the mint module.

func (AppModuleBasic) GetQueryCmd

func (AppModuleBasic) GetQueryCmd() *cobra.Command

GetQueryCmd returns the root query command for the mint module.

func (AppModuleBasic) GetTxCmd

func (AppModuleBasic) GetTxCmd() *cobra.Command

GetTxCmd returns no root tx command for the mint module.

func (AppModuleBasic) Name

func (AppModuleBasic) Name() string

Name returns the mint module's name.

func (AppModuleBasic) RegisterGRPCGatewayRoutes

func (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *runtime.ServeMux)

RegisterGRPCGatewayRoutes registers the gRPC Gateway routes for the mint module.

func (AppModuleBasic) RegisterInterfaces

func (b AppModuleBasic) RegisterInterfaces(_ cdctypes.InterfaceRegistry)

RegisterInterfaces registers the module's interface types.

func (AppModuleBasic) RegisterLegacyAminoCodec

func (AppModuleBasic) RegisterLegacyAminoCodec(cdc *codec.LegacyAmino)

RegisterLegacyAminoCodec registers the mint module's types on the given LegacyAmino codec.

func (AppModuleBasic) ValidateGenesis

func (AppModuleBasic) ValidateGenesis(cdc codec.JSONCodec, config client.TxEncodingConfig, bz json.RawMessage) error

ValidateGenesis performs genesis state validation for the mint module.

Directories

Path Synopsis
client
cli
Package types is a reverse proxy.
Package types is a reverse proxy.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL