From d28e18e9433c9d2cc8aa5c47e571c0efc8b0a05f Mon Sep 17 00:00:00 2001 From: j75689 Date: Mon, 15 Jan 2024 10:44:24 +0800 Subject: [PATCH] fix: do not charge relayerFee for auto cross undelegate after SecondSunsetFork --- x/stake/keeper/delegation.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/x/stake/keeper/delegation.go b/x/stake/keeper/delegation.go index b4c1c66f2..8b2dbda0b 100644 --- a/x/stake/keeper/delegation.go +++ b/x/stake/keeper/delegation.go @@ -879,8 +879,14 @@ 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) + var bscTransferAmount *big.Int + if sdk.IsUpgrade(sdk.SecondSunsetFork) && k.IsAutoUnDelegate(ctx, delAddr, valAddr) { + bscTransferAmount = bsc.ConvertBCAmountToBSCAmount(amount) + } else { + bscTransferAmount = new(big.Int).Sub(bsc.ConvertBCAmountToBSCAmount(amount), bscRelayFee) + } delBscAddrAcc := types.GetStakeCAoB(delAddr.Bytes(), types.DelegateCAoBSalt) delBscAddr := hex.EncodeToString(delBscAddrAcc.Bytes())