Understanding the Solana Curve Calculator Error: destinationAmountSwapped is zero
The infamous destinationAmountSwapped
error! This is a common problem when working with the Solana Curve Calculator, and troubleshooting it can be frustrating. In this article, we will learn what this error means, how to recognize it, and most importantly, how to fix it.
What is destinationAmountSwapped
?
The destinationAmountSwapped
error occurs when a swap request has a swapped destination amount (i.e. the amount being sent to the reserve is now the one being received). This can happen in several scenarios:
- Incorrect bid reserve: If the bid reserve of an input amount is set to 0 and you try to send it to a different reserve, Solana will swap it back to the original destination.
- Failed swap due to
baseIn
orquoteReserve
swap: If
baseIn
orquoteReserve
is swapped during a failed swap attempt, an error may occur.
Example of the problem
Let’s consider an example of using Raydium V2 SDK:
const swapResult = CurveCalculator.swap(
inputAmount,
baseIn ? baseReserve : quoteReserve,
// some additional parameters...
);
Assuming baseReserve
and quoteReserve
are set to non-zero values, the error would occur because destinationAmountSwapped
is set to 0:
{
"status": {
"error": [
{
"code": 1,
"reason": "destination amount swapped"
}
]
},
"data": {}
}
Troubleshooting Steps
To resolve this issue, you can try the following:
- Check the quote reserve
: Make sure
quoteReserve
is not set to 0.
- Check the failed swap logs: Look for any error messages related to failed swaps in your console or Raydium UI (if available).
- Check inputs and outputs: Double check that
inputAmount
is used correctly and that the swap parameters are set correctly.
Sample solution
To fix the problem, you can add a simple check before performing the swap:
const inputAmount = CurveCalculator.getBalance("input", "from");
if (inputAmount === 0) {
throw new Error("Bid reserve is not zero.");
}
const baseIn = baseReserve;
const quoteReserve = quoteReserve;
CurveCalculator.swap(
inputAmount,
baseIn ? baseReserve : quoteReserve,
// some extra parameters...
);
Adding this check will ensure that destinationAmountSwapped
is not set to zero before attempting the swap.
I hope this explanation and example will help you solve the „error: destinationAmountSwapped is zero“ problem when using Raydium V2 SDK with Solana Curve calculator!