feat_: added new error which will be returned in case bonder fee is higher than the amount being sent (#5637)
This commit is contained in:
parent
003058915e
commit
dca591f39a
|
@ -31,4 +31,5 @@ var (
|
|||
ErrNoBestRouteFound = &errors.ErrorResponse{Code: errors.ErrorCode("WR-023"), Details: "no best route found"}
|
||||
ErrCannotCheckBalance = &errors.ErrorResponse{Code: errors.ErrorCode("WR-024"), Details: "cannot check balance"}
|
||||
ErrCannotCheckLockedAmounts = &errors.ErrorResponse{Code: errors.ErrorCode("WR-025"), Details: "cannot check locked amounts"}
|
||||
ErrLowAmountInForHopBridge = &errors.ErrorResponse{Code: errors.ErrorCode("WR-026"), Details: "bonder fee greater than estimated received, a higher amount is needed to cover fees"}
|
||||
)
|
||||
|
|
|
@ -1031,6 +1031,12 @@ func (r *Router) checkBalancesForTheBestRoute(ctx context.Context, bestRoute []*
|
|||
|
||||
// check the best route for the required balances
|
||||
for _, path := range bestRoute {
|
||||
if path.ProcessorName == pathprocessor.ProcessorBridgeHopName {
|
||||
if path.TxBonderFees.ToInt().Cmp(path.AmountOut.ToInt()) > 0 {
|
||||
return ErrLowAmountInForHopBridge
|
||||
}
|
||||
}
|
||||
|
||||
if path.requiredTokenBalance != nil && path.requiredTokenBalance.Cmp(pathprocessor.ZeroBigIntValue) > 0 {
|
||||
key := makeBalanceKey(path.FromChain.ChainID, path.FromToken.Symbol)
|
||||
if tokenBalance, ok := balanceMapCopy[key]; ok {
|
||||
|
|
|
@ -2585,6 +2585,46 @@ func getNormalTestParamsList() []normalTestParams {
|
|||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "Bridge - Specific Single FromChain - Specific Single ToChain - Sending Small Amount",
|
||||
input: &RouteInputParams{
|
||||
testnetMode: false,
|
||||
Uuid: uuid.NewString(),
|
||||
SendType: Bridge,
|
||||
AddrFrom: common.HexToAddress("0x1"),
|
||||
AddrTo: common.HexToAddress("0x2"),
|
||||
AmountIn: (*hexutil.Big)(big.NewInt(0.01 * testAmount1USDC)),
|
||||
TokenID: pathprocessor.UsdcSymbol,
|
||||
DisabledFromChainIDs: []uint64{walletCommon.EthereumMainnet, walletCommon.OptimismMainnet},
|
||||
DisabledToChainIDs: []uint64{walletCommon.OptimismMainnet, walletCommon.ArbitrumMainnet},
|
||||
|
||||
testsMode: true,
|
||||
testParams: &routerTestParams{
|
||||
tokenFrom: &token.Token{
|
||||
ChainID: 1,
|
||||
Symbol: pathprocessor.UsdcSymbol,
|
||||
Decimals: 6,
|
||||
},
|
||||
tokenPrices: testTokenPrices,
|
||||
baseFee: big.NewInt(testBaseFee),
|
||||
suggestedFees: testSuggestedFees,
|
||||
balanceMap: testBalanceMapPerChain,
|
||||
estimationMap: testEstimationMap,
|
||||
bonderFeeMap: testBbonderFeeMap,
|
||||
approvalGasEstimation: testApprovalGasEstimation,
|
||||
approvalL1Fee: testApprovalL1Fee,
|
||||
},
|
||||
},
|
||||
expectedError: ErrLowAmountInForHopBridge,
|
||||
expectedCandidates: []*PathV2{
|
||||
{
|
||||
ProcessorName: pathprocessor.ProcessorBridgeHopName,
|
||||
FromChain: &arbitrum,
|
||||
ToChain: &mainnet,
|
||||
ApprovalRequired: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue