From b3196d2b3fca62b72b2ba451237379b0747f7b1c Mon Sep 17 00:00:00 2001 From: shellvish <104537253+shellvish@users.noreply.github.com> Date: Thu, 9 Mar 2023 17:26:59 -0500 Subject: [PATCH] Validator Rebalancing Update (#652) --- x/stakeibc/keeper/msg_server_rebalance_validators.go | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/x/stakeibc/keeper/msg_server_rebalance_validators.go b/x/stakeibc/keeper/msg_server_rebalance_validators.go index 9c94a2c1c..7b64d2cb5 100644 --- a/x/stakeibc/keeper/msg_server_rebalance_validators.go +++ b/x/stakeibc/keeper/msg_server_rebalance_validators.go @@ -87,21 +87,23 @@ func (k msgServer) RebalanceValidators(goCtx context.Context, msg *types.MsgReba // if overWeightElem is positive, we're done rebalancing break } + // underweight Elem is positive, overweight Elem is negative + overWeightElemAbs := overWeightElem.deltaAmt.Abs() var redelegateMsg *stakingTypes.MsgBeginRedelegate - if underWeightElem.deltaAmt.Abs().GT(overWeightElem.deltaAmt) { + if underWeightElem.deltaAmt.GT(overWeightElemAbs) { // if the underweight element is more off than the overweight element // we transfer stake from the underweight element to the overweight element - underWeightElem.deltaAmt = underWeightElem.deltaAmt.Sub(overWeightElem.deltaAmt.Abs()) + underWeightElem.deltaAmt = underWeightElem.deltaAmt.Sub(overWeightElemAbs) overWeightIndex += 1 // issue an ICA call to the host zone to rebalance the validator redelegateMsg = &stakingTypes.MsgBeginRedelegate{ DelegatorAddress: delegatorAddress, ValidatorSrcAddress: overWeightElem.valAddr, ValidatorDstAddress: underWeightElem.valAddr, - Amount: sdk.NewCoin(hostZone.HostDenom, overWeightElem.deltaAmt.Abs())} + Amount: sdk.NewCoin(hostZone.HostDenom, overWeightElemAbs)} msgs = append(msgs, redelegateMsg) overWeightElem.deltaAmt = sdkmath.ZeroInt() - } else if underWeightElem.deltaAmt.Abs().LT(overWeightElem.deltaAmt) { + } else if underWeightElem.deltaAmt.LT(overWeightElemAbs) { // if the overweight element is more overweight than the underweight element overWeightElem.deltaAmt = overWeightElem.deltaAmt.Add(underWeightElem.deltaAmt) underWeightIndex -= 1