From 1afb5bf9d2589e017da24ca52e7cc991f143bc01 Mon Sep 17 00:00:00 2001 From: Christopher Goes Date: Fri, 19 Oct 2018 23:01:23 +0200 Subject: [PATCH] Simulate minting, fix bug where pool was not updated --- cmd/gaia/app/sim_test.go | 14 +++++--------- x/mint/abci_app.go | 3 +++ x/mint/expected_keepers.go | 7 ++++++- x/mint/genesis.go | 2 +- x/mint/minter.go | 1 + 5 files changed, 16 insertions(+), 11 deletions(-) diff --git a/cmd/gaia/app/sim_test.go b/cmd/gaia/app/sim_test.go index 20e903b05..630165cd0 100644 --- a/cmd/gaia/app/sim_test.go +++ b/cmd/gaia/app/sim_test.go @@ -51,7 +51,7 @@ func appStateFn(r *rand.Rand, accs []simulation.Account) json.RawMessage { // Randomly generate some genesis accounts for _, acc := range accs { - coins := sdk.Coins{sdk.Coin{"steak", sdk.NewInt(100)}} + coins := sdk.Coins{sdk.Coin{"steak", sdk.NewInt(10000)}} genesisAccounts = append(genesisAccounts, GenesisAccount{ Address: acc.Address, Coins: coins, @@ -73,20 +73,16 @@ func appStateFn(r *rand.Rand, accs []simulation.Account) json.RawMessage { valAddrs[i] = valAddr validator := stake.NewValidator(valAddr, accs[i].PubKey, stake.Description{}) - validator.Tokens = sdk.NewDec(100) - validator.DelegatorShares = sdk.NewDec(100) - delegation := stake.Delegation{accs[i].Address, valAddr, sdk.NewDec(100), 0} + validator.Tokens = sdk.NewDec(10000) + validator.DelegatorShares = sdk.NewDec(10000) + delegation := stake.Delegation{accs[i].Address, valAddr, sdk.NewDec(10000), 0} validators = append(validators, validator) delegations = append(delegations, delegation) } - stakeGenesis.Pool.LooseTokens = sdk.NewDec(int64(100*250) + (numInitiallyBonded * 100)) + stakeGenesis.Pool.LooseTokens = sdk.NewDec(int64(10000*250) + (numInitiallyBonded * 10000)) stakeGenesis.Validators = validators stakeGenesis.Bonds = delegations - - // No inflation, for now mintGenesis := mint.DefaultGenesisState() - mintGenesis.Params.InflationMax = sdk.NewDec(0) - mintGenesis.Params.InflationMin = sdk.NewDec(0) genesis := GenesisState{ Accounts: genesisAccounts, diff --git a/x/mint/abci_app.go b/x/mint/abci_app.go index cb3bd44c5..1e6b5a27b 100644 --- a/x/mint/abci_app.go +++ b/x/mint/abci_app.go @@ -21,5 +21,8 @@ func BeginBlocker(ctx sdk.Context, k Keeper) { minter.InflationLastTime = blockTime minter, mintedCoin := minter.ProcessProvisions(params, totalSupply, bondedRatio) k.fck.AddCollectedFees(ctx, sdk.Coins{mintedCoin}) + pool := k.sk.GetPool(ctx) + pool.LooseTokens = pool.LooseTokens.Add(sdk.NewDecFromInt(mintedCoin.Amount)) + k.sk.SetPool(ctx, pool) k.SetMinter(ctx, minter) } diff --git a/x/mint/expected_keepers.go b/x/mint/expected_keepers.go index 8daaaf7ac..69ee9f3bd 100644 --- a/x/mint/expected_keepers.go +++ b/x/mint/expected_keepers.go @@ -1,9 +1,14 @@ package mint -import sdk "github.com/cosmos/cosmos-sdk/types" +import ( + sdk "github.com/cosmos/cosmos-sdk/types" + stake "github.com/cosmos/cosmos-sdk/x/stake" +) // expected stake keeper type StakeKeeper interface { + GetPool(ctx sdk.Context) stake.Pool + SetPool(ctx sdk.Context, pool stake.Pool) TotalPower(ctx sdk.Context) sdk.Dec BondedRatio(ctx sdk.Context) sdk.Dec InflateSupply(ctx sdk.Context, newTokens sdk.Dec) diff --git a/x/mint/genesis.go b/x/mint/genesis.go index 9dab64628..561768573 100644 --- a/x/mint/genesis.go +++ b/x/mint/genesis.go @@ -6,7 +6,7 @@ import ( // GenesisState - all distribution state that must be provided at genesis type GenesisState struct { - Minter Minter `json:"Minter"` // minter object + Minter Minter `json:"minter"` // minter object Params Params `json:"params"` // inflation params } diff --git a/x/mint/minter.go b/x/mint/minter.go index da2f6c5be..135675887 100644 --- a/x/mint/minter.go +++ b/x/mint/minter.go @@ -40,6 +40,7 @@ func (m Minter) ProcessProvisions(params Params, totalSupply, bondedRatio sdk.De m.Inflation = m.NextInflation(params, bondedRatio) provisionsDec := m.Inflation.Mul(totalSupply).Quo(hrsPerYr) provisions = sdk.NewCoin(params.MintDenom, provisionsDec.TruncateInt()) + return m, provisions }