From 80c11fe33a4b839426cb76ced3596bb193391ab4 Mon Sep 17 00:00:00 2001 From: dylanhuang Date: Mon, 15 Jan 2024 11:10:36 +0800 Subject: [PATCH] fix: do not charge relayerFee for auto cross undelegate after SecondSunsetFork (#379) * fix: do not charge relayerFee for auto cross undelegate after SecondSunsetFork * fix: FeeCalculator --- x/stake/keeper/delegation.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/x/stake/keeper/delegation.go b/x/stake/keeper/delegation.go index b4c1c66f2..96bd91863 100644 --- a/x/stake/keeper/delegation.go +++ b/x/stake/keeper/delegation.go @@ -871,7 +871,13 @@ func (k Keeper) ValidateUnbondAmount( func (k Keeper) crossDistributeUndelegated(ctx sdk.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress) (sdk.Events, sdk.Error) { denom := k.BondDenom(ctx) amount := k.BankKeeper.GetCoins(ctx, delAddr).AmountOf(denom) - relayFeeCalc := fees.GetCalculator(types.CrossDistributeUndelegatedRelayFee) + + var relayFeeCalc fees.FeeCalculator + if sdk.IsUpgrade(sdk.SecondSunsetFork) && k.IsAutoUnDelegate(ctx, delAddr, valAddr) { + relayFeeCalc = fees.FreeFeeCalculator() + } else { + relayFeeCalc = fees.GetCalculator(types.CrossDistributeUndelegatedRelayFee) + } if relayFeeCalc == nil { return sdk.Events{}, ErrNoFeeCalculator } @@ -879,6 +885,7 @@ func (k Keeper) crossDistributeUndelegated(ctx sdk.Context, delAddr sdk.AccAddre if relayFee.Tokens.AmountOf(denom) >= amount { return sdk.Events{}, ErrNotEnoughRelayerFeeForCrossPkg } + bscRelayFee := bsc.ConvertBCAmountToBSCAmount(relayFee.Tokens.AmountOf(denom)) bscTransferAmount := new(big.Int).Sub(bsc.ConvertBCAmountToBSCAmount(amount), bscRelayFee)