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, ¶ms) 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, ¶ms) 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 }