github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/libs/cosmos-sdk/x/mint/internal/keeper/keeper.go (about)

     1  package keeper
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"github.com/fibonacci-chain/fbc/libs/tendermint/libs/log"
     7  
     8  	"github.com/fibonacci-chain/fbc/libs/cosmos-sdk/codec"
     9  	sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types"
    10  	"github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/mint/internal/types"
    11  	"github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/params"
    12  )
    13  
    14  // Keeper of the mint store
    15  type Keeper struct {
    16  	cdc              *codec.Codec
    17  	storeKey         sdk.StoreKey
    18  	paramSpace       params.Subspace
    19  	sk               types.StakingKeeper
    20  	supplyKeeper     types.SupplyKeeper
    21  	feeCollectorName string
    22  
    23  	farmModuleName         string
    24  	originalMintedPerBlock sdk.Dec
    25  	govKeeper              types.GovKeeper
    26  }
    27  
    28  // NewKeeper creates a new mint Keeper instance
    29  func NewKeeper(
    30  	cdc *codec.Codec, key sdk.StoreKey, paramSpace params.Subspace,
    31  	sk types.StakingKeeper, supplyKeeper types.SupplyKeeper, feeCollectorName, farmModule string,
    32  ) Keeper {
    33  
    34  	// ensure mint module account is set
    35  	if addr := supplyKeeper.GetModuleAddress(types.ModuleName); addr == nil {
    36  		panic("the mint module account has not been set")
    37  	}
    38  
    39  	return Keeper{
    40  		cdc:                    cdc,
    41  		storeKey:               key,
    42  		paramSpace:             paramSpace.WithKeyTable(types.ParamKeyTable()),
    43  		sk:                     sk,
    44  		supplyKeeper:           supplyKeeper,
    45  		feeCollectorName:       feeCollectorName,
    46  		farmModuleName:         farmModule,
    47  		originalMintedPerBlock: types.DefaultOriginalMintedPerBlock(),
    48  	}
    49  }
    50  
    51  //______________________________________________________________________
    52  
    53  // Logger returns a module-specific logger.
    54  func (k Keeper) Logger(ctx sdk.Context) log.Logger {
    55  	return ctx.Logger().With("module", fmt.Sprintf("x/%s", types.ModuleName))
    56  }
    57  
    58  // get the minter
    59  func (k Keeper) GetMinter(ctx sdk.Context) (minter types.Minter) {
    60  	store := ctx.KVStore(k.storeKey)
    61  	b := store.Get(types.MinterKey)
    62  	if b == nil {
    63  		panic("stored minter should not have been nil")
    64  	}
    65  
    66  	k.cdc.MustUnmarshalBinaryLengthPrefixed(b, &minter)
    67  	return
    68  }
    69  
    70  // set the minter
    71  func (k Keeper) SetMinter(ctx sdk.Context, minter types.MinterCustom) {
    72  	store := ctx.KVStore(k.storeKey)
    73  	b := k.cdc.MustMarshalBinaryLengthPrefixed(minter)
    74  	store.Set(types.MinterKey, b)
    75  }
    76  
    77  //______________________________________________________________________
    78  
    79  // GetParams returns the total set of minting parameters.
    80  func (k Keeper) GetParams(ctx sdk.Context) (params types.Params) {
    81  	k.paramSpace.GetParamSet(ctx, &params)
    82  	return params
    83  }
    84  
    85  // SetParams sets the total set of minting parameters.
    86  func (k Keeper) SetParams(ctx sdk.Context, params types.Params) {
    87  	k.paramSpace.SetParamSet(ctx, &params)
    88  }
    89  
    90  //______________________________________________________________________
    91  
    92  // StakingTokenSupply implements an alias call to the underlying staking keeper's
    93  // StakingTokenSupply to be used in BeginBlocker.
    94  func (k Keeper) StakingTokenSupply(ctx sdk.Context) sdk.Dec {
    95  	return k.sk.StakingTokenSupply(ctx)
    96  }
    97  
    98  // BondedRatio implements an alias call to the underlying staking keeper's
    99  // BondedRatio to be used in BeginBlocker.
   100  func (k Keeper) BondedRatio(ctx sdk.Context) sdk.Dec {
   101  	return k.sk.BondedRatio(ctx)
   102  }
   103  
   104  // MintCoins implements an alias call to the underlying supply keeper's
   105  // MintCoins to be used in BeginBlocker.
   106  func (k Keeper) MintCoins(ctx sdk.Context, newCoins sdk.Coins) error {
   107  	if newCoins.Empty() {
   108  		// skip as no coins need to be minted
   109  		return nil
   110  	}
   111  
   112  	return k.supplyKeeper.MintCoins(ctx, types.ModuleName, newCoins)
   113  }
   114  
   115  // AddCollectedFees implements an alias call to the underlying supply keeper's
   116  // AddCollectedFees to be used in BeginBlocker.
   117  func (k Keeper) AddCollectedFees(ctx sdk.Context, fees sdk.Coins) error {
   118  	remain, err := k.AllocateTokenToTreasure(ctx, fees)
   119  	if err != nil {
   120  		return err
   121  	}
   122  	return k.supplyKeeper.SendCoinsFromModuleToModule(ctx, types.ModuleName, k.feeCollectorName, remain)
   123  }
   124  
   125  // SetGovKeeper sets keeper of gov
   126  func (k *Keeper) SetGovKeeper(gk types.GovKeeper) {
   127  	k.govKeeper = gk
   128  }