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:

Sell Tokens

Parameters:

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

Token Balance

Function: Query user specific token balance

Transaction Status

Transaction Confirmation

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