-
Notifications
You must be signed in to change notification settings - Fork 0
/
keeper.go
119 lines (101 loc) · 3.7 KB
/
keeper.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
package keeper
import (
"github.com/ci123chain/ci123chain/pkg/abci/codec"
sdk "github.com/ci123chain/ci123chain/pkg/abci/types"
"github.com/ci123chain/ci123chain/pkg/mint/types"
"github.com/ci123chain/ci123chain/pkg/params"
sk "github.com/ci123chain/ci123chain/pkg/staking/keeper"
supply "github.com/ci123chain/ci123chain/pkg/supply/keeper"
)
type MinterKeeper struct {
cdc *codec.Codec
storeKey sdk.StoreKey
paramSpace params.Subspace
sk sk.StakingKeeper
supplyKeeper supply.Keeper
feeCollectorName string
}
func NewMinterKeeper(
cdc *codec.Codec, key sdk.StoreKey, paramSpace params.Subspace,
sk sk.StakingKeeper, supplyKeeper supply.Keeper, feeCollectorName string,
) MinterKeeper {
// ensure mint module account is set
if addr := supplyKeeper.GetModuleAddress(types.ModuleName); addr.Empty() {
panic("the mint module account has not been set")
}
return MinterKeeper{
cdc: cdc,
storeKey: key,
paramSpace: paramSpace.WithKeyTable(types.ParamKeyTable()),
sk: sk,
supplyKeeper: supplyKeeper,
feeCollectorName: feeCollectorName,
}
}
// get the minter
func (k MinterKeeper) GetMinter(ctx sdk.Context) (minter types.Minter) {
store := ctx.KVStore(k.storeKey)
b := store.Get(types.MinterKey)
if b == nil {
panic("stored minter should not have been nil")
}
k.cdc.MustUnmarshalBinaryLengthPrefixed(b, &minter)
return
}
// set the minter
func (k MinterKeeper) SetMinter(ctx sdk.Context, minter types.Minter) {
store := ctx.KVStore(k.storeKey)
b := k.cdc.MustMarshalBinaryLengthPrefixed(minter)
store.Set(types.MinterKey, b)
}
// GetParams returns the total set of minting parameters.
func (k MinterKeeper) GetParams(ctx sdk.Context) (params types.Params) {
k.paramSpace.GetParamSet(ctx, ¶ms)
return params
}
// SetParams sets the total set of minting parameters.
func (k MinterKeeper) SetParams(ctx sdk.Context, params types.Params) {
k.paramSpace.SetParamSet(ctx, ¶ms)
}
// StakingTokenSupply implements an alias call to the underlying staking keeper's
// StakingTokenSupply to be used in BeginBlocker.
func (k MinterKeeper) StakingTokenSupply(ctx sdk.Context) sdk.Int {
return k.sk.StakingTokenSupply(ctx)
}
// BondedRatio implements an alias call to the underlying staking keeper's
// BondedRatio to be used in BeginBlocker.
func (k MinterKeeper) BondedRatio(ctx sdk.Context) sdk.Dec {
return k.sk.BondedRatio(ctx)
}
func (k MinterKeeper) AllBonded(ctx sdk.Context) sdk.Coin {
return sdk.NewChainCoin(k.sk.GetBondedPool(ctx).GetCoins().AmountOf(sdk.ChainCoinDenom))
}
// MintCoins implements an alias call to the underlying supply keeper's
// MintCoins to be used in BeginBlocker.
func (k MinterKeeper) MintCoins(ctx sdk.Context, newCoins sdk.Coins) error {
/*if newCoins.Empty() {
// skip as no coins need to be minted
return nil
}*/
//if ctx.BlockHeight() > 3853640 {
// newCoins = newCoins.Add(newCoins)
//}
return k.supplyKeeper.MintCoins(ctx, types.ModuleName, newCoins)
}
// AddCollectedFees implements an alias call to the underlying supply keeper's
// AddCollectedFees to be used in BeginBlocker.
func (k MinterKeeper) AddCollectedFees(ctx sdk.Context, fees sdk.Coin) error {
return k.supplyKeeper.SendCoinsFromModuleToModule(ctx, types.ModuleName, k.feeCollectorName, fees)
}
func (k MinterKeeper) SetLatestMintedCoin(ctx sdk.Context, fees sdk.Coin) {
store := ctx.KVStore(k.storeKey)
b := k.cdc.MustMarshalBinaryLengthPrefixed(fees)
store.Set(types.LatestMintedKey, b)
}
func (k MinterKeeper) GetLatestMintedCoin(ctx sdk.Context) sdk.Coin {
store := ctx.KVStore(k.storeKey)
b := store.Get(types.LatestMintedKey)
var fees sdk.Coin
k.cdc.MustUnmarshalBinaryLengthPrefixed(b, &fees)
return fees
}