diff --git a/x/gov/abci.go b/x/gov/abci.go index 6cda55a0..6d6f4626 100644 --- a/x/gov/abci.go +++ b/x/gov/abci.go @@ -217,6 +217,9 @@ func EndBlocker(ctx sdk.Context, keeper *keeper.Keeper) { ) return false }) + + keeper.UpdateMinInitialDeposit(ctx, true) + keeper.UpdateMinDeposit(ctx, true) } // executes handle(msg) and recovers from panic. diff --git a/x/gov/keeper/min_deposit.go b/x/gov/keeper/min_deposit.go index a5ffeea2..fa1863bf 100644 --- a/x/gov/keeper/min_deposit.go +++ b/x/gov/keeper/min_deposit.go @@ -34,8 +34,7 @@ func (keeper Keeper) IncrementActiveProposalsNumber(ctx sdk.Context) { activeProposalsNumber := keeper.GetActiveProposalsNumber(ctx) + 1 keeper.SetActiveProposalsNumber(ctx, activeProposalsNumber) - currMinDeposit := keeper.GetMinDeposit(ctx) - keeper.SetLastMinDeposit(ctx, currMinDeposit, ctx.BlockTime()) + keeper.UpdateMinDeposit(ctx, false) } // DecrementActiveProposalsNumber decrements the number of active proposals by one @@ -48,8 +47,7 @@ func (keeper Keeper) DecrementActiveProposalsNumber(ctx sdk.Context) { panic("number of active proposals should never be negative") } - currMinDeposit := keeper.GetMinDeposit(ctx) - keeper.SetLastMinDeposit(ctx, currMinDeposit, ctx.BlockTime()) + keeper.UpdateMinDeposit(ctx, false) } // SetLastMinDeposit updates the last min deposit and last min deposit time. @@ -78,18 +76,33 @@ func (keeper Keeper) GetLastMinDeposit(ctx sdk.Context) (sdk.Coins, time.Time) { // GetMinDeposit returns the (dynamic) minimum deposit currently required for a proposal func (keeper Keeper) GetMinDeposit(ctx sdk.Context) sdk.Coins { + minDeposit, _ := keeper.GetLastMinDeposit(ctx) + + if minDeposit.Empty() { + // ValidateBasic prevents an empty FloorValue + // (and thus an empty deposit), if LastMinDeposit is empty + // it means it was never set, so we return the floor value + return keeper.GetParams(ctx).MinDepositThrottler.GetFloorValue() + } + + return minDeposit +} + +// UpdateMinDeposit updates the minimum deposit required for a proposal +func (keeper Keeper) UpdateMinDeposit(ctx sdk.Context, checkElapsedTime bool) { params := keeper.GetParams(ctx) - minDepositFloor := sdk.Coins(params.MinDepositThrottler.FloorValue) tick := params.MinDepositThrottler.UpdatePeriod + lastMinDeposit, lastMinDepositTime := keeper.GetLastMinDeposit(ctx) + if checkElapsedTime && ctx.BlockTime().Sub(lastMinDepositTime).Nanoseconds() < tick.Nanoseconds() { + return + } + + minDepositFloor := sdk.Coins(params.MinDepositThrottler.FloorValue) targetActiveProposals := math.NewIntFromUint64(params.MinDepositThrottler.TargetActiveProposals) k := params.MinDepositThrottler.SensitivityTargetDistance var a sdk.Dec numActiveProposals := math.NewIntFromUint64(keeper.GetActiveProposalsNumber(ctx)) - lastMinDeposit, lastMinDepositTime := keeper.GetLastMinDeposit(ctx) - // get number of ticks passed since last update - ticksPassed := ctx.BlockTime().Sub(lastMinDepositTime).Nanoseconds() / tick.Nanoseconds() - if numActiveProposals.GT(targetActiveProposals) { a = sdk.MustNewDecFromStr(params.MinDepositThrottler.IncreaseRatio) } else { @@ -107,26 +120,24 @@ func (keeper Keeper) GetMinDeposit(ctx sdk.Context) sdk.Coins { c := a.Mul(b) percChange = percChange.Add(c) } - if ticksPassed != 0 { - percChange = percChange.Power(uint64(ticksPassed)) - } - minDeposit := sdk.Coins{} + newMinDeposit := sdk.Coins{} minDepositFloorDenomsSeen := make(map[string]bool) for _, lastMinDepositCoin := range lastMinDeposit { minDepositFloorCoinAmt := minDepositFloor.AmountOf(lastMinDepositCoin.Denom) if minDepositFloorCoinAmt.IsZero() { - // minDepositFloor was changed and this coin was removed, - // reflect this also in the current min deposit, i.e. remove - // this coin + // minDepositFloor was changed since last update, + // and this coin was removed. + // reflect this also in the current min initial deposit, + // i.e. remove this coin continue } minDepositFloorDenomsSeen[lastMinDepositCoin.Denom] = true minDepositCoinAmt := lastMinDepositCoin.Amount.ToLegacyDec().Mul(percChange).TruncateInt() if minDepositCoinAmt.LT(minDepositFloorCoinAmt) { - minDeposit = append(minDeposit, sdk.NewCoin(lastMinDepositCoin.Denom, minDepositFloorCoinAmt)) + newMinDeposit = append(newMinDeposit, sdk.NewCoin(lastMinDepositCoin.Denom, minDepositFloorCoinAmt)) } else { - minDeposit = append(minDeposit, sdk.NewCoin(lastMinDepositCoin.Denom, minDepositCoinAmt)) + newMinDeposit = append(newMinDeposit, sdk.NewCoin(lastMinDepositCoin.Denom, minDepositCoinAmt)) } } @@ -135,12 +146,12 @@ func (keeper Keeper) GetMinDeposit(ctx sdk.Context) sdk.Coins { if _, seen := minDepositFloorDenomsSeen[minDepositFloorCoin.Denom]; !seen { minDepositCoinAmt := minDepositFloorCoin.Amount.ToLegacyDec().Mul(percChange).TruncateInt() if minDepositCoinAmt.LT(minDepositFloorCoin.Amount) { - minDeposit = append(minDeposit, minDepositFloorCoin) + newMinDeposit = append(newMinDeposit, minDepositFloorCoin) } else { - minDeposit = append(minDeposit, sdk.NewCoin(minDepositFloorCoin.Denom, minDepositCoinAmt)) + newMinDeposit = append(newMinDeposit, sdk.NewCoin(minDepositFloorCoin.Denom, minDepositCoinAmt)) } } } - return minDeposit + keeper.SetLastMinDeposit(ctx, newMinDeposit, ctx.BlockTime()) } diff --git a/x/gov/keeper/min_deposit_test.go b/x/gov/keeper/min_deposit_test.go index 05233772..bcc2067f 100644 --- a/x/gov/keeper/min_deposit_test.go +++ b/x/gov/keeper/min_deposit_test.go @@ -56,6 +56,7 @@ func TestGetMinDeposit(t *testing.T) { setup: func(ctx sdk.Context, k *keeper.Keeper) { k.SetActiveProposalsNumber(ctx, 0) k.SetLastMinDeposit(ctx, minDepositFloor, minDepositTimeFromTicks(0)) + k.UpdateMinDeposit(ctx, false) }, expectedMinDeposit: minDepositFloor.String(), }, @@ -64,6 +65,7 @@ func TestGetMinDeposit(t *testing.T) { setup: func(ctx sdk.Context, k *keeper.Keeper) { k.SetActiveProposalsNumber(ctx, N) k.SetLastMinDeposit(ctx, minDepositFloor, minDepositTimeFromTicks(0)) + k.UpdateMinDeposit(ctx, false) }, expectedMinDeposit: minDepositFloor.String(), }, @@ -72,6 +74,7 @@ func TestGetMinDeposit(t *testing.T) { setup: func(ctx sdk.Context, k *keeper.Keeper) { k.SetActiveProposalsNumber(ctx, N+1) k.SetLastMinDeposit(ctx, minDepositFloor, minDepositTimeFromTicks(0)) + k.UpdateMinDeposit(ctx, false) }, expectedMinDeposit: "10500000stake", }, @@ -84,6 +87,7 @@ func TestGetMinDeposit(t *testing.T) { ), minDepositTimeFromTicks(0), ) + k.UpdateMinDeposit(ctx, false) }, expectedMinDeposit: "10500000stake", }, @@ -92,6 +96,7 @@ func TestGetMinDeposit(t *testing.T) { setup: func(ctx sdk.Context, k *keeper.Keeper) { k.SetActiveProposalsNumber(ctx, N-1) k.SetLastMinDeposit(ctx, minDepositFloorX2, minDepositTimeFromTicks(0)) + k.UpdateMinDeposit(ctx, false) }, expectedMinDeposit: "19500000stake", }, @@ -100,6 +105,7 @@ func TestGetMinDeposit(t *testing.T) { setup: func(ctx sdk.Context, k *keeper.Keeper) { k.SetActiveProposalsNumber(ctx, N) k.SetLastMinDeposit(ctx, minDepositFloorX2, minDepositTimeFromTicks(0)) + k.UpdateMinDeposit(ctx, false) }, expectedMinDeposit: minDepositFloorX2.String(), }, @@ -108,6 +114,7 @@ func TestGetMinDeposit(t *testing.T) { setup: func(ctx sdk.Context, k *keeper.Keeper) { k.SetActiveProposalsNumber(ctx, N+1) k.SetLastMinDeposit(ctx, minDepositFloorX2, minDepositTimeFromTicks(0)) + k.UpdateMinDeposit(ctx, false) }, expectedMinDeposit: "21000000stake", }, @@ -116,6 +123,7 @@ func TestGetMinDeposit(t *testing.T) { setup: func(ctx sdk.Context, k *keeper.Keeper) { k.SetActiveProposalsNumber(ctx, N-1) k.SetLastMinDeposit(ctx, minDepositFloorX2, minDepositTimeFromTicks(1)) + k.UpdateMinDeposit(ctx, true) }, expectedMinDeposit: "19500000stake", }, @@ -124,6 +132,7 @@ func TestGetMinDeposit(t *testing.T) { setup: func(ctx sdk.Context, k *keeper.Keeper) { k.SetActiveProposalsNumber(ctx, N) k.SetLastMinDeposit(ctx, minDepositFloorX2, minDepositTimeFromTicks(1)) + k.UpdateMinDeposit(ctx, true) }, expectedMinDeposit: minDepositFloorX2.String(), }, @@ -132,6 +141,7 @@ func TestGetMinDeposit(t *testing.T) { setup: func(ctx sdk.Context, k *keeper.Keeper) { k.SetActiveProposalsNumber(ctx, N+1) k.SetLastMinDeposit(ctx, minDepositFloorX2, minDepositTimeFromTicks(1)) + k.UpdateMinDeposit(ctx, true) }, expectedMinDeposit: "21000000stake", }, @@ -140,6 +150,8 @@ func TestGetMinDeposit(t *testing.T) { setup: func(ctx sdk.Context, k *keeper.Keeper) { k.SetActiveProposalsNumber(ctx, N-1) k.SetLastMinDeposit(ctx, minDepositFloorX2, minDepositTimeFromTicks(2)) + k.UpdateMinDeposit(ctx.WithBlockTime(minDepositTimeFromTicks(1)), true) + k.UpdateMinDeposit(ctx, true) }, expectedMinDeposit: "19012500stake", }, @@ -148,6 +160,8 @@ func TestGetMinDeposit(t *testing.T) { setup: func(ctx sdk.Context, k *keeper.Keeper) { k.SetActiveProposalsNumber(ctx, N) k.SetLastMinDeposit(ctx, minDepositFloorX2, minDepositTimeFromTicks(2)) + k.UpdateMinDeposit(ctx.WithBlockTime(minDepositTimeFromTicks(1)), true) + k.UpdateMinDeposit(ctx, true) }, expectedMinDeposit: minDepositFloorX2.String(), }, @@ -156,6 +170,8 @@ func TestGetMinDeposit(t *testing.T) { setup: func(ctx sdk.Context, k *keeper.Keeper) { k.SetActiveProposalsNumber(ctx, N+1) k.SetLastMinDeposit(ctx, minDepositFloorX2, minDepositTimeFromTicks(2)) + k.UpdateMinDeposit(ctx.WithBlockTime(minDepositTimeFromTicks(1)), true) + k.UpdateMinDeposit(ctx, true) }, expectedMinDeposit: "22050000stake", }, diff --git a/x/gov/keeper/min_initial_deposit.go b/x/gov/keeper/min_initial_deposit.go index f85d2b54..95a325ce 100644 --- a/x/gov/keeper/min_initial_deposit.go +++ b/x/gov/keeper/min_initial_deposit.go @@ -34,8 +34,7 @@ func (keeper Keeper) IncrementInactiveProposalsNumber(ctx sdk.Context) { inactiveProposalsNumber := keeper.GetInactiveProposalsNumber(ctx) + 1 keeper.SetInactiveProposalsNumber(ctx, inactiveProposalsNumber) - currMinInitialDeposit := keeper.GetMinInitialDeposit(ctx) - keeper.SetLastMinInitialDeposit(ctx, currMinInitialDeposit, ctx.BlockTime()) + keeper.UpdateMinInitialDeposit(ctx, false) } // DecrementInactiveProposalsNumber decrements the number of inactive proposals by one @@ -48,8 +47,7 @@ func (keeper Keeper) DecrementInactiveProposalsNumber(ctx sdk.Context) { panic("number of inactive proposals should never be negative") } - currMinInitialDeposit := keeper.GetMinInitialDeposit(ctx) - keeper.SetLastMinInitialDeposit(ctx, currMinInitialDeposit, ctx.BlockTime()) + keeper.UpdateMinInitialDeposit(ctx, false) } // SetLastMinInitialDeposit updates the last min initial deposit and last min @@ -80,18 +78,33 @@ func (keeper Keeper) GetLastMinInitialDeposit(ctx sdk.Context) (sdk.Coins, time. // GetMinInitialDeposit returns the (dynamic) minimum initial deposit currently required for // proposal submission func (keeper Keeper) GetMinInitialDeposit(ctx sdk.Context) sdk.Coins { + minInitialDeposit, _ := keeper.GetLastMinInitialDeposit(ctx) + + if minInitialDeposit.Empty() { + // ValidateBasic prevents an empty FloorValue + // (and thus an empty deposit), if LastMinInitialDeposit is empty + // it means it was never set, so we return the floor value + return keeper.GetParams(ctx).MinInitialDepositThrottler.GetFloorValue() + } + + return minInitialDeposit +} + +// UpdateMinInitialDeposit updates the min initial deposit required for proposal submission +func (keeper Keeper) UpdateMinInitialDeposit(ctx sdk.Context, checkElapsedTime bool) { params := keeper.GetParams(ctx) - minInitialDepositFloor := sdk.Coins(params.MinInitialDepositThrottler.FloorValue) tick := params.MinInitialDepositThrottler.UpdatePeriod + lastMinInitialDeposit, lastMinInitialDepositTime := keeper.GetLastMinInitialDeposit(ctx) + if checkElapsedTime && ctx.BlockTime().Sub(lastMinInitialDepositTime).Nanoseconds() < tick.Nanoseconds() { + return + } + + minInitialDepositFloor := sdk.Coins(params.MinInitialDepositThrottler.FloorValue) targetInactiveProposals := math.NewIntFromUint64(params.MinInitialDepositThrottler.TargetProposals) k := params.MinInitialDepositThrottler.SensitivityTargetDistance var a sdk.Dec numInactiveProposals := math.NewIntFromUint64(keeper.GetInactiveProposalsNumber(ctx)) - lastMinInitialDeposit, lastMinInitialDepositTime := keeper.GetLastMinInitialDeposit(ctx) - // get number of ticks passed since last update - ticksPassed := ctx.BlockTime().Sub(lastMinInitialDepositTime).Nanoseconds() / tick.Nanoseconds() - if numInactiveProposals.GT(targetInactiveProposals) { a = sdk.MustNewDecFromStr(params.MinInitialDepositThrottler.IncreaseRatio) } else { @@ -109,16 +122,14 @@ func (keeper Keeper) GetMinInitialDeposit(ctx sdk.Context) sdk.Coins { c := a.Mul(b) percChange = percChange.Add(c) } - if ticksPassed != 0 { - percChange = percChange.Power(uint64(ticksPassed)) - } - minInitialDeposit := sdk.Coins{} + newMinInitialDeposit := sdk.Coins{} minInitialDepositFloorDenomsSeen := make(map[string]bool) for _, lastMinInitialDepositCoin := range lastMinInitialDeposit { minInitialDepositFloorCoinAmt := minInitialDepositFloor.AmountOf(lastMinInitialDepositCoin.Denom) if minInitialDepositFloorCoinAmt.IsZero() { - // minInitialDepositFloor was changed and this coin was removed, + // minInitialDepositFloor was changed since last update, + // and this coin was removed. // reflect this also in the current min initial deposit, // i.e. remove this coin continue @@ -126,9 +137,9 @@ func (keeper Keeper) GetMinInitialDeposit(ctx sdk.Context) sdk.Coins { minInitialDepositFloorDenomsSeen[lastMinInitialDepositCoin.Denom] = true minInitialDepositCoinAmt := lastMinInitialDepositCoin.Amount.ToLegacyDec().Mul(percChange).TruncateInt() if minInitialDepositCoinAmt.LT(minInitialDepositFloorCoinAmt) { - minInitialDeposit = append(minInitialDeposit, sdk.NewCoin(lastMinInitialDepositCoin.Denom, minInitialDepositFloorCoinAmt)) + newMinInitialDeposit = append(newMinInitialDeposit, sdk.NewCoin(lastMinInitialDepositCoin.Denom, minInitialDepositFloorCoinAmt)) } else { - minInitialDeposit = append(minInitialDeposit, sdk.NewCoin(lastMinInitialDepositCoin.Denom, minInitialDepositCoinAmt)) + newMinInitialDeposit = append(newMinInitialDeposit, sdk.NewCoin(lastMinInitialDepositCoin.Denom, minInitialDepositCoinAmt)) } } @@ -137,12 +148,12 @@ func (keeper Keeper) GetMinInitialDeposit(ctx sdk.Context) sdk.Coins { if _, seen := minInitialDepositFloorDenomsSeen[minInitialDepositFloorCoin.Denom]; !seen { minInitialDepositCoinAmt := minInitialDepositFloorCoin.Amount.ToLegacyDec().Mul(percChange).TruncateInt() if minInitialDepositCoinAmt.LT(minInitialDepositFloorCoin.Amount) { - minInitialDeposit = append(minInitialDeposit, minInitialDepositFloorCoin) + newMinInitialDeposit = append(newMinInitialDeposit, minInitialDepositFloorCoin) } else { - minInitialDeposit = append(minInitialDeposit, sdk.NewCoin(minInitialDepositFloorCoin.Denom, minInitialDepositCoinAmt)) + newMinInitialDeposit = append(newMinInitialDeposit, sdk.NewCoin(minInitialDepositFloorCoin.Denom, minInitialDepositCoinAmt)) } } } - return minInitialDeposit + keeper.SetLastMinInitialDeposit(ctx, newMinInitialDeposit, ctx.BlockTime()) } diff --git a/x/gov/keeper/min_initial_deposit_test.go b/x/gov/keeper/min_initial_deposit_test.go index 23f2a0cf..07167ca8 100644 --- a/x/gov/keeper/min_initial_deposit_test.go +++ b/x/gov/keeper/min_initial_deposit_test.go @@ -54,6 +54,7 @@ func TestGetMinInitialDeposit(t *testing.T) { setup: func(ctx sdk.Context, k *keeper.Keeper) { k.SetInactiveProposalsNumber(ctx, 0) k.SetLastMinInitialDeposit(ctx, minInitialDepositFloor, minInitialDepositTimeFromTicks(0)) + k.UpdateMinInitialDeposit(ctx, false) }, expectedMinInitialDeposit: minInitialDepositFloor.String(), }, @@ -62,6 +63,7 @@ func TestGetMinInitialDeposit(t *testing.T) { setup: func(ctx sdk.Context, k *keeper.Keeper) { k.SetInactiveProposalsNumber(ctx, N) k.SetLastMinInitialDeposit(ctx, minInitialDepositFloor, minInitialDepositTimeFromTicks(0)) + k.UpdateMinInitialDeposit(ctx, false) }, expectedMinInitialDeposit: minInitialDepositFloor.String(), }, @@ -70,6 +72,7 @@ func TestGetMinInitialDeposit(t *testing.T) { setup: func(ctx sdk.Context, k *keeper.Keeper) { k.SetInactiveProposalsNumber(ctx, N+1) k.SetLastMinInitialDeposit(ctx, minInitialDepositFloor, minInitialDepositTimeFromTicks(0)) + k.UpdateMinInitialDeposit(ctx, false) }, expectedMinInitialDeposit: "101000stake", }, @@ -82,6 +85,7 @@ func TestGetMinInitialDeposit(t *testing.T) { ), minInitialDepositTimeFromTicks(0), ) + k.UpdateMinInitialDeposit(ctx, false) }, expectedMinInitialDeposit: "101000stake", }, @@ -90,6 +94,7 @@ func TestGetMinInitialDeposit(t *testing.T) { setup: func(ctx sdk.Context, k *keeper.Keeper) { k.SetInactiveProposalsNumber(ctx, N-1) k.SetLastMinInitialDeposit(ctx, minInitialDepositFloorX2, minInitialDepositTimeFromTicks(0)) + k.UpdateMinInitialDeposit(ctx, false) }, expectedMinInitialDeposit: "199000stake", }, @@ -98,6 +103,7 @@ func TestGetMinInitialDeposit(t *testing.T) { setup: func(ctx sdk.Context, k *keeper.Keeper) { k.SetInactiveProposalsNumber(ctx, N) k.SetLastMinInitialDeposit(ctx, minInitialDepositFloorX2, minInitialDepositTimeFromTicks(0)) + k.UpdateMinInitialDeposit(ctx, false) }, expectedMinInitialDeposit: minInitialDepositFloorX2.String(), }, @@ -106,6 +112,7 @@ func TestGetMinInitialDeposit(t *testing.T) { setup: func(ctx sdk.Context, k *keeper.Keeper) { k.SetInactiveProposalsNumber(ctx, N+1) k.SetLastMinInitialDeposit(ctx, minInitialDepositFloorX2, minInitialDepositTimeFromTicks(0)) + k.UpdateMinInitialDeposit(ctx, false) }, expectedMinInitialDeposit: "202000stake", }, @@ -114,6 +121,7 @@ func TestGetMinInitialDeposit(t *testing.T) { setup: func(ctx sdk.Context, k *keeper.Keeper) { k.SetInactiveProposalsNumber(ctx, N-1) k.SetLastMinInitialDeposit(ctx, minInitialDepositFloorX2, minInitialDepositTimeFromTicks(1)) + k.UpdateMinInitialDeposit(ctx, true) }, expectedMinInitialDeposit: "199000stake", }, @@ -122,6 +130,7 @@ func TestGetMinInitialDeposit(t *testing.T) { setup: func(ctx sdk.Context, k *keeper.Keeper) { k.SetInactiveProposalsNumber(ctx, N) k.SetLastMinInitialDeposit(ctx, minInitialDepositFloorX2, minInitialDepositTimeFromTicks(1)) + k.UpdateMinInitialDeposit(ctx, true) }, expectedMinInitialDeposit: minInitialDepositFloorX2.String(), }, @@ -130,6 +139,7 @@ func TestGetMinInitialDeposit(t *testing.T) { setup: func(ctx sdk.Context, k *keeper.Keeper) { k.SetInactiveProposalsNumber(ctx, N+1) k.SetLastMinInitialDeposit(ctx, minInitialDepositFloorX2, minInitialDepositTimeFromTicks(1)) + k.UpdateMinInitialDeposit(ctx, true) }, expectedMinInitialDeposit: "202000stake", }, @@ -138,6 +148,8 @@ func TestGetMinInitialDeposit(t *testing.T) { setup: func(ctx sdk.Context, k *keeper.Keeper) { k.SetInactiveProposalsNumber(ctx, N-1) k.SetLastMinInitialDeposit(ctx, minInitialDepositFloorX2, minInitialDepositTimeFromTicks(2)) + k.UpdateMinInitialDeposit(ctx.WithBlockTime(minInitialDepositTimeFromTicks(1)), true) + k.UpdateMinInitialDeposit(ctx, true) }, expectedMinInitialDeposit: "198005stake", }, @@ -146,6 +158,8 @@ func TestGetMinInitialDeposit(t *testing.T) { setup: func(ctx sdk.Context, k *keeper.Keeper) { k.SetInactiveProposalsNumber(ctx, N) k.SetLastMinInitialDeposit(ctx, minInitialDepositFloorX2, minInitialDepositTimeFromTicks(2)) + k.UpdateMinInitialDeposit(ctx.WithBlockTime(minInitialDepositTimeFromTicks(1)), true) + k.UpdateMinInitialDeposit(ctx, false) }, expectedMinInitialDeposit: minInitialDepositFloorX2.String(), }, @@ -154,6 +168,8 @@ func TestGetMinInitialDeposit(t *testing.T) { setup: func(ctx sdk.Context, k *keeper.Keeper) { k.SetInactiveProposalsNumber(ctx, N+1) k.SetLastMinInitialDeposit(ctx, minInitialDepositFloorX2, minInitialDepositTimeFromTicks(2)) + k.UpdateMinInitialDeposit(ctx.WithBlockTime(minInitialDepositTimeFromTicks(1)), true) + k.UpdateMinInitialDeposit(ctx, false) }, expectedMinInitialDeposit: "204020stake", },