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%)
- 可选路由控制,如
dexes、pools 和 maxHops
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
- 来自
/quote 的 quoteResponse
- 可选交易调优,如
priorityFee、txVersion、computeUnitLimit、tipLamports 以及平台费字段
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}`);
交易控制
| 字段 | 用途 |
|---|
txVersion | legacy 或 v0 |
priorityFee | 优先级,例如 medium、high、veryHigh,或精确的微 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/transactions 的 POST /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}`);
有效状态为 pending、confirmed、failed 和 expired。
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 没有更新后会重发最新交易,以帮助避免交易过期。
端到端流程
- 用
inputMint、outputMint、amount 和可选路由控制调用 /quote。
- 将返回的
quoteResponse 与 userPublicKey 一起传入 /swap。
- 在钱包中签名返回的
swapTransaction。
- 将已签名的 base64 交易提交到
/send-transaction。
- 轮询
/transaction/{signature} 获取状态。
如果希望减少往返次数,请使用 /quote-and-swap 代替分开的 /quote 和 /swap 调用。
Raptor 概览
完整端点参考、支持的 DEX、路由控制和 WebSocket 细节。
Raptor 交易
通过 Raptor 发送已签名的交易并追踪确认状态。