跳转到主要内容

Documentation Index

Fetch the complete documentation index at: https://docs.solanatracker.io/llms.txt

Use this file to discover all available pages before exploring further.

Raptor 是 Solana Tracker 的 DEX 聚合器和兑换 API。DEX 聚合器会检查多个去中心化交易所并为您的兑换找到路径。流程是:请求报价、根据该报价构建兑换交易、在客户端签名,然后将已签名交易提交到 Raptor 的发送器。
HTTP 基础 URL: https://raptor-beta.solanatracker.io
WebSocket 基础 URL: wss://raptor-beta.solanatracker.io
Raptor 当前处于公开测试阶段。

支持的路由

Raptor 支持跨多个场所和池类型路由,包括 Raydium、Meteora、Orca Whirlpool、Pump.fun、Pumpswap、MoonIt、Boopfun、FluxBeam、PancakeSwap V3 等。 如需将路由限制在受支持场所的子集,请使用 dexes

1. 获取报价

使用获取兑换报价获取最佳路径。Raptor 期望:
  • inputMint
  • outputMint
  • amount(最小单位,即无小数的区块链整数金额)
  • 可选 slippageBps(基点,50 表示 0.5%)
  • 可选路由控制,如 dexespoolsmaxHops
curl "https://raptor-beta.solanatracker.io/quote?inputMint=So11111111111111111111111111111111111111112&outputMint=EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v&amount=100000000&slippageBps=50"

限制路径

curl "https://raptor-beta.solanatracker.io/quote?inputMint=So11111111111111111111111111111111111111112&outputMint=EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v&amount=100000000&slippageBps=dynamic&dexes=raydium,meteora,pumpfun&maxHops=2"

2. 构建兑换交易

使用构建兑换交易创建序列化交易。 请求体包含:
  • userPublicKey
  • 来自 /quotequoteResponse
  • 可选交易调优,如 priorityFeetxVersioncomputeUnitLimittipLamports 以及平台费字段
const quote = await fetch(
  "https://raptor-beta.solanatracker.io/quote?inputMint=So11111111111111111111111111111111111111112&outputMint=EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v&amount=100000000&slippageBps=50"
).then(r => r.json());

const swap = await fetch("https://raptor-beta.solanatracker.io/swap", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    userPublicKey: "YOUR_WALLET_ADDRESS",
    wrapUnwrapSol: true,
    txVersion: "v0",
    priorityFee: "medium",
    maxPriorityFee: 1000000,
    quoteResponse: quote
  })
}).then(r => r.json());

console.log(`Swap tx: ${swap.swapTransaction}`);
console.log(`Last valid block height: ${swap.lastValidBlockHeight}`);
console.log(`Priority fee: ${swap.prioritizationFeeLamports}`);

交易控制

字段用途
txVersionlegacyv0
priorityFee优先级,例如 mediumhighveryHigh,或精确的微 lamports
maxPriorityFee限制动态优先费
computeUnitPriceMicroLamports优先费:直接覆盖计算单元价格
computeUnitLimit覆盖 CU 限制
tipAccount / tipLamports添加可选 SOL 小费
feeAccount / feeBps / feeFromInput / chargeBps平台费控制

3. 一次请求完成报价和构建

如果您希望使用单一请求而不是分开的 /quote/swap 调用,请使用一次请求中的报价与兑换
const result = await fetch("https://raptor-beta.solanatracker.io/quote-and-swap", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    userPublicKey: "YOUR_WALLET_ADDRESS",
    inputMint: "So11111111111111111111111111111111111111112",
    outputMint: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
    amount: 100000000,
    slippageBps: "dynamic",
    txVersion: "v0",
    priorityFee: "high",
    maxHops: 2,
    dexes: "raydium,meteora,whirlpool"
  })
}).then(r => r.json());

console.log(result.quote.amountOut);
console.log(result.swapTransaction);

4. 客户端签名

Raptor 以 base64 返回 swapTransaction。在钱包中签名,然后发送已签名的 base64 交易。
import { VersionedTransaction } from "@solana/web3.js";

const txBytes = Uint8Array.from(atob(swap.swapTransaction), c => c.charCodeAt(0));
const tx = VersionedTransaction.deserialize(txBytes);

const signed = await wallet.signTransaction(tx);
const signedBase64 = btoa(String.fromCharCode(...signed.serialize()));

5. 发送已签名的交易

通过 raptor/transactionsPOST /send-transaction 发送已签名的交易。
const sendResult = await fetch("https://raptor-beta.solanatracker.io/send-transaction", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({ transaction: signedBase64 })
}).then(r => r.json());

console.log(`Signature: ${sendResult.signature}`);
console.log(`Accepted: ${sendResult.success}`);
Raptor 通过 Yellowstone Jet TPU 发送,并在后台重试,直到交易确认或过期。

追踪状态

const status = await fetch(
  `https://raptor-beta.solanatracker.io/transaction/${sendResult.signature}`
).then(r => r.json());

console.log(`Status: ${status.status}`);
console.log(`Latency: ${status.latency_ms}ms`);
console.log(`Slot: ${status.slot}`);
有效状态为 pendingconfirmedfailedexpired

6. 仅构建指令

如果您希望获取没有交易包装的指令,请使用构建兑换指令
const instructions = await fetch("https://raptor-beta.solanatracker.io/swap-instructions", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    userPublicKey: "YOUR_WALLET_ADDRESS",
    quoteResponse: quote,
    txVersion: "v0"
  })
}).then(r => r.json());

console.log(instructions.swapInstruction.programId);
console.log(instructions.addressLookupTableAddresses);

7. 流式实时报价

使用 Raptor WebSocket /stream 端点接收报价更新。
const ws = new WebSocket("wss://raptor-beta.solanatracker.io/stream");

ws.onopen = () => {
  ws.send(JSON.stringify({
    type: "subscribe",
    id: "sol-usdc-quote",
    inputMint: "So11111111111111111111111111111111111111112",
    outputMint: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
    amount: 100000000,
    slippageBps: "50",
    maxHops: 2,
    dexes: "raydium,meteora,whirlpool"
  }));
};

ws.onmessage = (event) => {
  const msg = JSON.parse(event.data);

  if (msg.type === "subscribed") {
    console.log(`Subscribed: ${msg.id}`);
  }

  if (msg.type === "quote") {
    console.log(`Quote update: ${msg.data.amountOut}`);
  }
};

8. 流式准备签名的兑换交易

如需实时报价更新加上预构建好的最新交易,请使用 /stream/swap 此流需要 userPublicKey,因为 Raptor 会为该钱包构建交易。
const ws = new WebSocket("wss://raptor-beta.solanatracker.io/stream/swap");

ws.onopen = () => {
  ws.send(JSON.stringify({
    type: "subscribe",
    id: "sol-usdc-swap",
    inputMint: "So11111111111111111111111111111111111111112",
    outputMint: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
    amount: 100000000,
    userPublicKey: "YOUR_WALLET_ADDRESS",
    slippageBps: "50",
    txVersion: "v0",
    priorityFee: "medium",
    wrapUnwrapSol: true,
    maxHops: 2
  }));
};

ws.onmessage = (event) => {
  const msg = JSON.parse(event.data);

  if (msg.type === "swap") {
    console.log(`Updated quote: ${msg.quote.amountOut}`);
    console.log(`Swap tx: ${msg.swapTransaction}`);
    console.log(`Last valid block height: ${msg.lastValidBlockHeight}`);
  }
};
/stream/swap 在 10 个 slot 没有更新后会重发最新交易,以帮助避免交易过期。

端到端流程

  1. inputMintoutputMintamount 和可选路由控制调用 /quote
  2. 将返回的 quoteResponseuserPublicKey 一起传入 /swap
  3. 在钱包中签名返回的 swapTransaction
  4. 将已签名的 base64 交易提交到 /send-transaction
  5. 轮询 /transaction/{signature} 获取状态。
如果希望减少往返次数,请使用 /quote-and-swap 代替分开的 /quote/swap 调用。

Raptor 概览

完整端点参考、支持的 DEX、路由控制和 WebSocket 细节。

Raptor 交易

通过 Raptor 发送已签名的交易并追踪确认状态。