Token Trading
Trading Process
1. Get Quotes
Jupiter Quote
const quoteParams = {
inputMint: isBuy
? "So11111111111111111111111111111111111111112"
: tokenAddress,
outputMint: isBuy
? tokenAddress
: "So11111111111111111111111111111111111111112",
amount: amountInLamports,
slippageBps: 500, // 5% slippage
};
Meteora Quote
const client = new DynamicBondingCurveClient(connection);
const quote = await client.pool.swapQuote({
virtualPool: poolState,
config: configState,
swapBaseForQuote: !isBuy,
amountIn: new BN(amount),
slippageBps: 500,
});
2. Execute Trade
Buy Tokens
Parameters:
const swapParams = {
provider: walletProvider,
userPublicKey: "user_address",
tokenAddress: "token_address",
amount: 1.0, // SOL amount
isBuy: true,
slippage: 0.05, // 5% slippage
};
Sell Tokens
Parameters:
const swapParams = {
provider: walletProvider,
userPublicKey: "user_address",
tokenAddress: "token_address",
amount: 1000000, // token amount
isBuy: false,
slippage: 0.05,
};
Routing Logic
Internal Trading (Meteora DLMM)
Token not graduated (status !== "graduated")
Not migrated to Meteora (no migrateAmmId)
Uses Dynamic Bonding Curve
External Trading (Jupiter)
Token graduated (status === "graduated")
Migrated to Meteora (has migrateAmmId)
Aggregates optimal prices from multiple DEXs
Balance Queries
SOL Balance
Function: Query user SOL balance
const solBalance = await getSolBalance(userPublicKey);
Token Balance
Function: Query user specific token balance
const tokenBalance = await getTokenPreviousBalance(userPublicKey, tokenAddress);
Transaction Status
Transaction Confirmation
const confirmation = await connection.confirmTransaction(
signature,
"confirmed"
);
if (confirmation.value.err) {
throw new Error("Transaction failed");
}
Error Handling
Insufficient Balance: Check SOL and token balances
Excessive Slippage: Adjust slippage settings or get new quotes
Network Congestion: Increase priority fees
Pool Does Not Exist: Confirm token address is correct
Key Points
Automatically detects trading path (internal/external)
Supports custom slippage settings
Real-time balance queries
Transaction status monitoring
Error retry mechanism
Last updated