From f756b40a01f932fcecac89915a48b352af2a2425 Mon Sep 17 00:00:00 2001 From: Jae Kwon Date: Wed, 24 Oct 2018 00:04:06 -0700 Subject: [PATCH] LastValidatorPower is also an Int --- x/distribution/keeper/delegation.go | 4 ++-- x/distribution/keeper/delegation_test.go | 2 +- x/distribution/keeper/validator.go | 2 +- x/distribution/types/keepers.go | 2 +- x/stake/keeper/keeper.go | 9 +++------ x/stake/keeper/val_state_change.go | 4 ++-- 6 files changed, 10 insertions(+), 13 deletions(-) diff --git a/x/distribution/keeper/delegation.go b/x/distribution/keeper/delegation.go index c3a6cfa54e..46852ac345 100644 --- a/x/distribution/keeper/delegation.go +++ b/x/distribution/keeper/delegation.go @@ -82,7 +82,7 @@ func (k Keeper) WithdrawDelegationReward(ctx sdk.Context, delegatorAddr sdk.AccA // TODO: Reconcile with duplicate code in getDelegatorRewardsAll. height := ctx.BlockHeight() lastTotalPower := sdk.NewDecFromInt(k.stakeKeeper.GetLastTotalPower(ctx)) - lastValPower := k.stakeKeeper.GetLastValidatorPower(ctx, valAddr) + lastValPower := sdk.NewDecFromInt(k.stakeKeeper.GetLastValidatorPower(ctx, valAddr)) feePool := k.GetFeePool(ctx) delInfo := k.GetDelegationDistInfo(ctx, delegatorAddr, valAddr) valInfo := k.GetValidatorDistInfo(ctx, valAddr) @@ -133,7 +133,7 @@ func (k Keeper) getDelegatorRewardsAll(ctx sdk.Context, delAddr sdk.AccAddress, operationAtDelegation := func(_ int64, del sdk.Delegation) (stop bool) { feePool := k.GetFeePool(ctx) valAddr := del.GetValidatorAddr() - lastValPower := k.stakeKeeper.GetLastValidatorPower(ctx, valAddr) + lastValPower := sdk.NewDecFromInt(k.stakeKeeper.GetLastValidatorPower(ctx, valAddr)) delInfo := k.GetDelegationDistInfo(ctx, delAddr, valAddr) valInfo := k.GetValidatorDistInfo(ctx, valAddr) validator := k.stakeKeeper.Validator(ctx, valAddr) diff --git a/x/distribution/keeper/delegation_test.go b/x/distribution/keeper/delegation_test.go index 6d1f46df91..455ad14e8e 100644 --- a/x/distribution/keeper/delegation_test.go +++ b/x/distribution/keeper/delegation_test.go @@ -35,7 +35,7 @@ func TestWithdrawDelegationRewardBasic(t *testing.T) { // withdraw delegation ctx = ctx.WithBlockHeight(1) sk.SetLastTotalPower(ctx, sdk.NewInt(10)) - sk.SetLastValidatorPower(ctx, valOpAddr1, sdk.NewDec(10)) + sk.SetLastValidatorPower(ctx, valOpAddr1, sdk.NewInt(10)) keeper.WithdrawDelegationReward(ctx, delAddr1, valOpAddr1) amt = accMapper.GetAccount(ctx, delAddr1).GetCoins().AmountOf(denom) diff --git a/x/distribution/keeper/validator.go b/x/distribution/keeper/validator.go index a71249d6b4..8ed9c574d0 100644 --- a/x/distribution/keeper/validator.go +++ b/x/distribution/keeper/validator.go @@ -50,7 +50,7 @@ func (k Keeper) WithdrawValidatorRewardsAll(ctx sdk.Context, operatorAddr sdk.Va // withdraw self-delegation height := ctx.BlockHeight() validator := k.stakeKeeper.Validator(ctx, operatorAddr) - lastValPower := k.stakeKeeper.GetLastValidatorPower(ctx, operatorAddr) + lastValPower := sdk.NewDecFromInt(k.stakeKeeper.GetLastValidatorPower(ctx, operatorAddr)) accAddr := sdk.AccAddress(operatorAddr.Bytes()) withdraw := k.getDelegatorRewardsAll(ctx, accAddr, height) diff --git a/x/distribution/types/keepers.go b/x/distribution/types/keepers.go index 818d3dd5a6..2578ea4113 100644 --- a/x/distribution/types/keepers.go +++ b/x/distribution/types/keepers.go @@ -11,7 +11,7 @@ type StakeKeeper interface { ValidatorByConsAddr(ctx sdk.Context, consAddr sdk.ConsAddress) sdk.Validator TotalPower(ctx sdk.Context) sdk.Dec GetLastTotalPower(ctx sdk.Context) sdk.Int - GetLastValidatorPower(ctx sdk.Context, valAddr sdk.ValAddress) sdk.Dec + GetLastValidatorPower(ctx sdk.Context, valAddr sdk.ValAddress) sdk.Int } // expected coin keeper diff --git a/x/stake/keeper/keeper.go b/x/stake/keeper/keeper.go index 50de8e325c..17ee31268c 100644 --- a/x/stake/keeper/keeper.go +++ b/x/stake/keeper/keeper.go @@ -95,21 +95,18 @@ func (k Keeper) SetLastTotalPower(ctx sdk.Context, power sdk.Int) { // Load the last validator power. // Returns zero if the operator was not a validator last block. -func (k Keeper) GetLastValidatorPower(ctx sdk.Context, operator sdk.ValAddress) (power sdk.Dec) { +func (k Keeper) GetLastValidatorPower(ctx sdk.Context, operator sdk.ValAddress) (power sdk.Int) { store := ctx.KVStore(k.storeKey) bz := store.Get(GetLastValidatorPowerKey(operator)) if bz == nil { - return sdk.ZeroDec() + return sdk.ZeroInt() } k.cdc.MustUnmarshalBinary(bz, &power) return } // Set the last validator power. -func (k Keeper) SetLastValidatorPower(ctx sdk.Context, operator sdk.ValAddress, power sdk.Dec) { - if !power.IsInteger() { - panic("input power must be whole integer") - } +func (k Keeper) SetLastValidatorPower(ctx sdk.Context, operator sdk.ValAddress, power sdk.Int) { store := ctx.KVStore(k.storeKey) bz := k.cdc.MustMarshalBinary(power) store.Set(GetLastValidatorPowerKey(operator), bz) diff --git a/x/stake/keeper/val_state_change.go b/x/stake/keeper/val_state_change.go index c62120758b..6cc2ff1b90 100644 --- a/x/stake/keeper/val_state_change.go +++ b/x/stake/keeper/val_state_change.go @@ -73,13 +73,13 @@ func (k Keeper) ApplyAndReturnValidatorSetUpdates(ctx sdk.Context) (updates []ab // calculate the new power bytes newPower := validator.BondedTokens().RoundInt64() - newPowerBytes := k.cdc.MustMarshalBinary(sdk.NewDec(newPower)) + newPowerBytes := k.cdc.MustMarshalBinary(sdk.NewInt(newPower)) // update the validator set if power has changed if !found || !bytes.Equal(oldPowerBytes, newPowerBytes) { updates = append(updates, validator.ABCIValidatorUpdate()) // set validator power on lookup index. - k.SetLastValidatorPower(ctx, operator, sdk.NewDec(newPower)) + k.SetLastValidatorPower(ctx, operator, sdk.NewInt(newPower)) } // validator still in the validator set, so delete from the copy