Coin balance fix (#151)

* Fix setting account balances from assuming single denom

* Set order for end blocker to not override account balances

* Panic instead of ignoring error (case should never be hit)
This commit is contained in:
Austin Abell
2019-11-12 16:07:34 -05:00
committed by GitHub
parent 1f51b73d71
commit 327abc4edf
3 changed files with 20 additions and 7 deletions
+15 -3
View File
@@ -47,10 +47,22 @@ func (acc Account) Balance() sdk.Int {
return acc.GetCoins().AmountOf(DenomDefault)
}
// SetBalance sets an account's balance.
// SetBalance sets an account's balance of photons
func (acc Account) SetBalance(amt sdk.Int) {
//nolint:gosec,errcheck
acc.SetCoins(sdk.Coins{sdk.NewCoin(DenomDefault, amt)})
coins := acc.GetCoins()
diff := amt.Sub(coins.AmountOf(DenomDefault))
if diff.IsZero() {
return
} else if diff.IsPositive() {
// Increase coins to amount
coins = coins.Add(sdk.Coins{sdk.NewCoin(DenomDefault, diff)})
} else {
// Decrease coins to amount
coins = coins.Sub(sdk.Coins{sdk.NewCoin(DenomDefault, diff.Neg())})
}
if err := acc.SetCoins(coins); err != nil {
panic(fmt.Sprintf("Could not set coins for address %s", acc.GetAddress()))
}
}
// ----------------------------------------------------------------------------