From f7cb351dd13d23d8a97a2be3a3f93ca12d9d4734 Mon Sep 17 00:00:00 2001 From: Christopher Goes Date: Thu, 27 Sep 2018 15:52:30 +0200 Subject: [PATCH] Merge PR #2162: Add loose/bonded token supply invariants back to simulation --- PENDING.md | 1 + x/stake/simulation/invariants.go | 14 +++++++------- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/PENDING.md b/PENDING.md index fafb495fd9..7458a110aa 100644 --- a/PENDING.md +++ b/PENDING.md @@ -39,6 +39,7 @@ BREAKING CHANGES * [x/stake] [#1013] TendermintUpdates now uses transient store * [x/gov] [#2195] Governance uses BFT Time * [x/gov] \#2256 Removed slashing for governance non-voting validators + * [simulation] \#2162 Added back correct supply invariants * SDK * [core] [\#1807](https://github.com/cosmos/cosmos-sdk/issues/1807) Switch from use of rational to decimal diff --git a/x/stake/simulation/invariants.go b/x/stake/simulation/invariants.go index cdd80a8c41..2866f6292f 100644 --- a/x/stake/simulation/invariants.go +++ b/x/stake/simulation/invariants.go @@ -34,7 +34,7 @@ func AllInvariants(ck bank.Keeper, k stake.Keeper, am auth.AccountMapper) simula func SupplyInvariants(ck bank.Keeper, k stake.Keeper, am auth.AccountMapper) simulation.Invariant { return func(app *baseapp.BaseApp) error { ctx := app.NewContext(false, abci.Header{}) - //pool := k.GetPool(ctx) + pool := k.GetPool(ctx) loose := sdk.ZeroInt() bonded := sdk.ZeroDec() @@ -59,14 +59,14 @@ func SupplyInvariants(ck bank.Keeper, k stake.Keeper, am auth.AccountMapper) sim }) // Loose tokens should equal coin supply plus unbonding delegations plus tokens on unbonded validators - // XXX TODO https://github.com/cosmos/cosmos-sdk/issues/2063#issuecomment-413720872 - // require.True(t, pool.LooseTokens.RoundInt64() == loose.Int64(), "expected loose tokens to equal total steak held by accounts - pool.LooseTokens: %v, sum of account tokens: %v\nlog: %s", - // pool.LooseTokens.RoundInt64(), loose.Int64(), log) + if pool.LooseTokens.RoundInt64() != loose.Int64() { + return fmt.Errorf("expected loose tokens to equal total steak held by accounts - pool.LooseTokens: %v, sum of account tokens: %v", pool.LooseTokens.RoundInt64(), loose.Int64()) + } // Bonded tokens should equal sum of tokens with bonded validators - // XXX TODO https://github.com/cosmos/cosmos-sdk/issues/2063#issuecomment-413720872 - // require.True(t, pool.BondedTokens.RoundInt64() == bonded.RoundInt64(), "expected bonded tokens to equal total steak held by bonded validators - pool.BondedTokens: %v, sum of bonded validator tokens: %v\nlog: %s", - // pool.BondedTokens.RoundInt64(), bonded.RoundInt64(), log) + if pool.BondedTokens.RoundInt64() != bonded.RoundInt64() { + return fmt.Errorf("expected bonded tokens to equal total steak held by bonded validators - pool.BondedTokens: %v, sum of bonded validator tokens: %v", pool.BondedTokens.RoundInt64(), bonded.RoundInt64()) + } // TODO Inflation check on total supply return nil