LastValidatorPower is also an Int
This commit is contained in:
parent
d666658ca9
commit
f756b40a01
|
@ -82,7 +82,7 @@ func (k Keeper) WithdrawDelegationReward(ctx sdk.Context, delegatorAddr sdk.AccA
|
||||||
// TODO: Reconcile with duplicate code in getDelegatorRewardsAll.
|
// TODO: Reconcile with duplicate code in getDelegatorRewardsAll.
|
||||||
height := ctx.BlockHeight()
|
height := ctx.BlockHeight()
|
||||||
lastTotalPower := sdk.NewDecFromInt(k.stakeKeeper.GetLastTotalPower(ctx))
|
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)
|
feePool := k.GetFeePool(ctx)
|
||||||
delInfo := k.GetDelegationDistInfo(ctx, delegatorAddr, valAddr)
|
delInfo := k.GetDelegationDistInfo(ctx, delegatorAddr, valAddr)
|
||||||
valInfo := k.GetValidatorDistInfo(ctx, 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) {
|
operationAtDelegation := func(_ int64, del sdk.Delegation) (stop bool) {
|
||||||
feePool := k.GetFeePool(ctx)
|
feePool := k.GetFeePool(ctx)
|
||||||
valAddr := del.GetValidatorAddr()
|
valAddr := del.GetValidatorAddr()
|
||||||
lastValPower := k.stakeKeeper.GetLastValidatorPower(ctx, valAddr)
|
lastValPower := sdk.NewDecFromInt(k.stakeKeeper.GetLastValidatorPower(ctx, valAddr))
|
||||||
delInfo := k.GetDelegationDistInfo(ctx, delAddr, valAddr)
|
delInfo := k.GetDelegationDistInfo(ctx, delAddr, valAddr)
|
||||||
valInfo := k.GetValidatorDistInfo(ctx, valAddr)
|
valInfo := k.GetValidatorDistInfo(ctx, valAddr)
|
||||||
validator := k.stakeKeeper.Validator(ctx, valAddr)
|
validator := k.stakeKeeper.Validator(ctx, valAddr)
|
||||||
|
|
|
@ -35,7 +35,7 @@ func TestWithdrawDelegationRewardBasic(t *testing.T) {
|
||||||
// withdraw delegation
|
// withdraw delegation
|
||||||
ctx = ctx.WithBlockHeight(1)
|
ctx = ctx.WithBlockHeight(1)
|
||||||
sk.SetLastTotalPower(ctx, sdk.NewInt(10))
|
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)
|
keeper.WithdrawDelegationReward(ctx, delAddr1, valOpAddr1)
|
||||||
amt = accMapper.GetAccount(ctx, delAddr1).GetCoins().AmountOf(denom)
|
amt = accMapper.GetAccount(ctx, delAddr1).GetCoins().AmountOf(denom)
|
||||||
|
|
||||||
|
|
|
@ -50,7 +50,7 @@ func (k Keeper) WithdrawValidatorRewardsAll(ctx sdk.Context, operatorAddr sdk.Va
|
||||||
// withdraw self-delegation
|
// withdraw self-delegation
|
||||||
height := ctx.BlockHeight()
|
height := ctx.BlockHeight()
|
||||||
validator := k.stakeKeeper.Validator(ctx, operatorAddr)
|
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())
|
accAddr := sdk.AccAddress(operatorAddr.Bytes())
|
||||||
withdraw := k.getDelegatorRewardsAll(ctx, accAddr, height)
|
withdraw := k.getDelegatorRewardsAll(ctx, accAddr, height)
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@ type StakeKeeper interface {
|
||||||
ValidatorByConsAddr(ctx sdk.Context, consAddr sdk.ConsAddress) sdk.Validator
|
ValidatorByConsAddr(ctx sdk.Context, consAddr sdk.ConsAddress) sdk.Validator
|
||||||
TotalPower(ctx sdk.Context) sdk.Dec
|
TotalPower(ctx sdk.Context) sdk.Dec
|
||||||
GetLastTotalPower(ctx sdk.Context) sdk.Int
|
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
|
// expected coin keeper
|
||||||
|
|
|
@ -95,21 +95,18 @@ func (k Keeper) SetLastTotalPower(ctx sdk.Context, power sdk.Int) {
|
||||||
|
|
||||||
// Load the last validator power.
|
// Load the last validator power.
|
||||||
// Returns zero if the operator was not a validator last block.
|
// 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)
|
store := ctx.KVStore(k.storeKey)
|
||||||
bz := store.Get(GetLastValidatorPowerKey(operator))
|
bz := store.Get(GetLastValidatorPowerKey(operator))
|
||||||
if bz == nil {
|
if bz == nil {
|
||||||
return sdk.ZeroDec()
|
return sdk.ZeroInt()
|
||||||
}
|
}
|
||||||
k.cdc.MustUnmarshalBinary(bz, &power)
|
k.cdc.MustUnmarshalBinary(bz, &power)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set the last validator power.
|
// Set the last validator power.
|
||||||
func (k Keeper) SetLastValidatorPower(ctx sdk.Context, operator sdk.ValAddress, power sdk.Dec) {
|
func (k Keeper) SetLastValidatorPower(ctx sdk.Context, operator sdk.ValAddress, power sdk.Int) {
|
||||||
if !power.IsInteger() {
|
|
||||||
panic("input power must be whole integer")
|
|
||||||
}
|
|
||||||
store := ctx.KVStore(k.storeKey)
|
store := ctx.KVStore(k.storeKey)
|
||||||
bz := k.cdc.MustMarshalBinary(power)
|
bz := k.cdc.MustMarshalBinary(power)
|
||||||
store.Set(GetLastValidatorPowerKey(operator), bz)
|
store.Set(GetLastValidatorPowerKey(operator), bz)
|
||||||
|
|
|
@ -73,13 +73,13 @@ func (k Keeper) ApplyAndReturnValidatorSetUpdates(ctx sdk.Context) (updates []ab
|
||||||
|
|
||||||
// calculate the new power bytes
|
// calculate the new power bytes
|
||||||
newPower := validator.BondedTokens().RoundInt64()
|
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
|
// update the validator set if power has changed
|
||||||
if !found || !bytes.Equal(oldPowerBytes, newPowerBytes) {
|
if !found || !bytes.Equal(oldPowerBytes, newPowerBytes) {
|
||||||
updates = append(updates, validator.ABCIValidatorUpdate())
|
updates = append(updates, validator.ABCIValidatorUpdate())
|
||||||
|
|
||||||
// set validator power on lookup index.
|
// 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
|
// validator still in the validator set, so delete from the copy
|
||||||
|
|
Loading…
Reference in New Issue