From 34278f5220db2a4fe18e23cb6ed042f41667b476 Mon Sep 17 00:00:00 2001 From: rigelrozanski Date: Fri, 30 Mar 2018 22:51:40 +0200 Subject: [PATCH] fix in candidateAddTokens --- x/stake/pool.go | 3 ++- x/stake/pool_test.go | 7 ++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/x/stake/pool.go b/x/stake/pool.go index f68bf9b38d..eb8dd6b5a6 100644 --- a/x/stake/pool.go +++ b/x/stake/pool.go @@ -84,6 +84,8 @@ func (p Pool) removeSharesUnbonded(shares sdk.Rat) (p2 Pool, removedTokens int64 func (p Pool) candidateAddTokens(candidate Candidate, amount int64) (p2 Pool, candidate2 Candidate, issuedDelegatorShares sdk.Rat) { + exRate := candidate.delegatorShareExRate() + var receivedGlobalShares sdk.Rat if candidate.Status == Bonded { p, receivedGlobalShares = p.addTokensBonded(amount) @@ -92,7 +94,6 @@ func (p Pool) candidateAddTokens(candidate Candidate, } candidate.Assets = candidate.Assets.Add(receivedGlobalShares) - exRate := candidate.delegatorShareExRate() issuedDelegatorShares = exRate.Mul(receivedGlobalShares) candidate.Liabilities = candidate.Liabilities.Add(issuedDelegatorShares) diff --git a/x/stake/pool_test.go b/x/stake/pool_test.go index 782431cfae..91d4797e90 100644 --- a/x/stake/pool_test.go +++ b/x/stake/pool_test.go @@ -132,13 +132,14 @@ func TestRemoveSharesUnbonded(t *testing.T) { func TestCandidateAddTokens(t *testing.T) { ctx, _, keeper := createTestInput(t, nil, false, 0) + poolA := keeper.GetPool(ctx) candA := Candidate{ + Status: Bonded, Address: addrs[0], PubKey: pks[0], Assets: sdk.NewRat(9), Liabilities: sdk.NewRat(9), - Status: Bonded, } poolA.BondedPool = candA.Assets.Evaluate() poolA.BondedShares = candA.Assets @@ -148,11 +149,11 @@ func TestCandidateAddTokens(t *testing.T) { poolB, candB, sharesB := poolA.candidateAddTokens(candA, 10) // shares were issued - assert.Equal(t, sharesB, sdk.NewRat(10).Mul(candA.delegatorShareExRate())) + assert.Equal(t, sdk.NewRat(10).Mul(candA.delegatorShareExRate()), sharesB) // pool shares were added assert.Equal(t, candB.Assets, candA.Assets.Add(sdk.NewRat(10))) // conservation of tokens - assert.Equal(t, poolB.UnbondedPool+poolB.BondedPool, 10+poolA.UnbondedPool+poolA.BondedPool) + assert.Equal(t, poolB.BondedPool, 10+poolA.BondedPool) } func TestCandidateRemoveShares(t *testing.T) {