Simulate minting, fix bug where pool was not updated
This commit is contained in:
parent
843ccaf615
commit
1afb5bf9d2
|
@ -51,7 +51,7 @@ func appStateFn(r *rand.Rand, accs []simulation.Account) json.RawMessage {
|
||||||
|
|
||||||
// Randomly generate some genesis accounts
|
// Randomly generate some genesis accounts
|
||||||
for _, acc := range accs {
|
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{
|
genesisAccounts = append(genesisAccounts, GenesisAccount{
|
||||||
Address: acc.Address,
|
Address: acc.Address,
|
||||||
Coins: coins,
|
Coins: coins,
|
||||||
|
@ -73,20 +73,16 @@ func appStateFn(r *rand.Rand, accs []simulation.Account) json.RawMessage {
|
||||||
valAddrs[i] = valAddr
|
valAddrs[i] = valAddr
|
||||||
|
|
||||||
validator := stake.NewValidator(valAddr, accs[i].PubKey, stake.Description{})
|
validator := stake.NewValidator(valAddr, accs[i].PubKey, stake.Description{})
|
||||||
validator.Tokens = sdk.NewDec(100)
|
validator.Tokens = sdk.NewDec(10000)
|
||||||
validator.DelegatorShares = sdk.NewDec(100)
|
validator.DelegatorShares = sdk.NewDec(10000)
|
||||||
delegation := stake.Delegation{accs[i].Address, valAddr, sdk.NewDec(100), 0}
|
delegation := stake.Delegation{accs[i].Address, valAddr, sdk.NewDec(10000), 0}
|
||||||
validators = append(validators, validator)
|
validators = append(validators, validator)
|
||||||
delegations = append(delegations, delegation)
|
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.Validators = validators
|
||||||
stakeGenesis.Bonds = delegations
|
stakeGenesis.Bonds = delegations
|
||||||
|
|
||||||
// No inflation, for now
|
|
||||||
mintGenesis := mint.DefaultGenesisState()
|
mintGenesis := mint.DefaultGenesisState()
|
||||||
mintGenesis.Params.InflationMax = sdk.NewDec(0)
|
|
||||||
mintGenesis.Params.InflationMin = sdk.NewDec(0)
|
|
||||||
|
|
||||||
genesis := GenesisState{
|
genesis := GenesisState{
|
||||||
Accounts: genesisAccounts,
|
Accounts: genesisAccounts,
|
||||||
|
|
|
@ -21,5 +21,8 @@ func BeginBlocker(ctx sdk.Context, k Keeper) {
|
||||||
minter.InflationLastTime = blockTime
|
minter.InflationLastTime = blockTime
|
||||||
minter, mintedCoin := minter.ProcessProvisions(params, totalSupply, bondedRatio)
|
minter, mintedCoin := minter.ProcessProvisions(params, totalSupply, bondedRatio)
|
||||||
k.fck.AddCollectedFees(ctx, sdk.Coins{mintedCoin})
|
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)
|
k.SetMinter(ctx, minter)
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,14 @@
|
||||||
package mint
|
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
|
// expected stake keeper
|
||||||
type StakeKeeper interface {
|
type StakeKeeper interface {
|
||||||
|
GetPool(ctx sdk.Context) stake.Pool
|
||||||
|
SetPool(ctx sdk.Context, pool stake.Pool)
|
||||||
TotalPower(ctx sdk.Context) sdk.Dec
|
TotalPower(ctx sdk.Context) sdk.Dec
|
||||||
BondedRatio(ctx sdk.Context) sdk.Dec
|
BondedRatio(ctx sdk.Context) sdk.Dec
|
||||||
InflateSupply(ctx sdk.Context, newTokens sdk.Dec)
|
InflateSupply(ctx sdk.Context, newTokens sdk.Dec)
|
||||||
|
|
|
@ -6,7 +6,7 @@ import (
|
||||||
|
|
||||||
// GenesisState - all distribution state that must be provided at genesis
|
// GenesisState - all distribution state that must be provided at genesis
|
||||||
type GenesisState struct {
|
type GenesisState struct {
|
||||||
Minter Minter `json:"Minter"` // minter object
|
Minter Minter `json:"minter"` // minter object
|
||||||
Params Params `json:"params"` // inflation params
|
Params Params `json:"params"` // inflation params
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -40,6 +40,7 @@ func (m Minter) ProcessProvisions(params Params, totalSupply, bondedRatio sdk.De
|
||||||
m.Inflation = m.NextInflation(params, bondedRatio)
|
m.Inflation = m.NextInflation(params, bondedRatio)
|
||||||
provisionsDec := m.Inflation.Mul(totalSupply).Quo(hrsPerYr)
|
provisionsDec := m.Inflation.Mul(totalSupply).Quo(hrsPerYr)
|
||||||
provisions = sdk.NewCoin(params.MintDenom, provisionsDec.TruncateInt())
|
provisions = sdk.NewCoin(params.MintDenom, provisionsDec.TruncateInt())
|
||||||
|
|
||||||
return m, provisions
|
return m, provisions
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue