托管 API
免费。 直接调用
raptor.solanatracker.io,无需安装或运行任何程序。可以从下面的快速开始入手。自托管二进制文件
免费。 从 GitHub 下载 Raptor,在自己的服务器上运行同样的 API,没有任何限制。
JIT 路由
普通路由在报价时就选定交易池。使用即时(JIT,just-in-time)路由时,交易会携带多个候选池,并在执行时根据实时价格选出最优的池。这对较大的订单和价格变动快的池帮助最大。
使用 JIT 的报价会包含
"jitRouting": true。注意事项:
minAmountOut仍然生效。 如果实时价格达不到该值,交易会失败,而不是以更差的价格成交。- JIT 支持
V0和V1交易。LEGACY交易没有地址查找表,且上限为 1,232 字节,JIT 路由很少能放得下;需要LEGACY时,请使用jitRouting=false报价。 - JIT 兑换不能由其他程序调用。 除非你传入
jitRouting: true,否则/swap-instructions返回普通兑换。当它返回topLevelOnly: true时,请把swapInstruction放在交易的最后并直接调用,不要通过 CPI 调用,否则会因InvalidJitPlan(6026)失败。 - 除 Heaven、SolFi V1、BisonFi 和 Quantum 外,所有支持的 DEX 都可使用 JIT。
快速开始
每次兑换都是同样的五个步骤。路由由 Raptor 完成,用户钱包只负责签名。1
获取报价
查询把 0.1 SOL(
100000000 lamports)兑换成 USDC 的价格。这一步不需要钱包。amountOut 是预期得到的 USDC(6 位小数)。minAmountOut 是这次兑换可接受的最低数量。2
构建交易
把报价原样连同用户的钱包地址发回。请立即执行,因为报价几秒后就会过期。响应中的
swapTransaction 是一笔未签名的 base64 交易。3
签名并发送
用钱包签名
swapTransaction,然后以 base64 格式提交已签名的交易。Raptor 会持续重发,直到交易上链或过期。4
检查结果
轮询,直到
status 变为 confirmed、failed 或 expired。完整示例
这个脚本使用本地密钥对把 0.1 SOL 兑换成 USDC。在浏览器应用中,把签名步骤换成钱包适配器的signTransaction 即可。
端点
在自托管实例上,流式传输、
/send-transaction、/transaction/{signature} 和 /quote-and-swap 默认关闭,需要先手动开启。
常用参数
数量
数量是以代币最小单位表示的整数:amount = tokens × 10^decimals。SOL 有 9 位小数,所以 1000000000 表示 1 SOL。USDC 有 6 位小数,所以 1000000 表示 1 USDC。SOL 使用 mint So11111111111111111111111111111111111111112,Raptor 会替你包装和解包。
滑点
slippageBps 设置价格向不利方向变动的上限,单位是基点:50 表示 0.5%。传入 dynamic 可让 Raptor 根据代币和路由选择数值。如果价格变动超过上限,交易会失败,而不是以更差的价格成交,这种情况下只消耗网络费。
优先费
在/swap 上把 priorityFee 设为一个等级(min、low、medium、auto、high、veryHigh、turbo、unsafeMax),或设为字符串形式的总费用(单位 lamports),例如 "50000"。默认值是 auto。maxPriorityFee 限制计算单元价格的上限,单位是 micro-lamports。响应字段 prioritizationFeeLamports 显示交易中实际包含的费用。
平台费
在/quote 上添加 feeAccount(普通钱包地址)和 feeBps(最高 1000,即 10%),就可以对兑换收取你自己的费用。这笔费用会带到 /swap。费用从输出代币中扣取,除非你设置 feeFromInput=true。minAmountOut 已计入你的费用。chargeBps 只在用户实际得到的数量超过报价时才额外抽成。
小费
在/swap 上使用 tipAccount 和 tipLamports,可以给交易添加 SOL 小费,例如发送到 Jito 小费账户。
限定路由
在/quote 上,dexes 把路由限制在列出的 DEX 内(逗号分隔,不区分大小写)。raydium 匹配所有 Raydium 池类型,raydium-clmm 只匹配其中一种。pools 把路由限制在指定的池地址内,maxHops 限制路由长度(1 到 4),onlyDirectRoutes=true 只允许单跳路由。
/quote 上。/swap 按报价中已有的路由构建交易。
搜索深度
在/quote 上使用 searchMode=deep,会在返回结果前搜索更多交易池和路由。它耗时更长,但返回的输出数量绝不会少于默认的 fast 搜索。当最优价格比速度更重要时使用,例如大额订单。
交易选项
这些字段用于/swap、/swap-instructions 和 /quote-and-swap。
/quote 不需要钱包,也不检查余额。你可以传入 userPublicKey,为将要兑换的钱包报价,但 /swap 仍然需要它。
套利
用相同的 mint 作为输入和输出报价(例如 SOL 换 SOL),Raptor 会寻找一条经过多个池、换回数量多于投入的循环。- 如果
routePlan不为空,说明 Raptor 找到了循环。amountOut减去amount就是预期利润(未扣除网络费和优先费)。像普通兑换一样构建并发送即可。 - 如果没有有利可图的循环,响应中的
routePlan为空,amountOut等于amount,无需构建。
--enable-arbitrage 启动二进制文件。
Token-2022 转账费
如果输入或输出代币收取 Token-2022 转账费,报价中会包含tokenTransfers。netOutput 是扣除平台费和转账费后实际到达钱包的数量。
WebSocket
无需轮询,直接流式接收实时报价。最佳路由变化时就会推送一次更新。/stream发送报价,用于展示价格。/stream/swap发送报价,并附带为userPublicKey新构建、可直接签名的交易。对最新的一笔签名,然后用POST /send-transaction发送。
{ "type": "unsubscribe", "id": "<id from subscribed>" } 停止订阅。一个连接最多支持 50 个订阅。所有消息和字段见侧边栏中的 WebSocket 参考。
错误
大多数错误是 JSON 格式:
{ "error": "...", "code": 400 }。解析请求时产生的错误(部分 400 和 422)是纯文本,因此请先把响应体按文本读取,再进行解析。
支持的 DEX
Raptor 在 71 个 DEX 上路由。托管还是自托管
两者使用相同的路由引擎,并为同一个程序构建交易。安装二进制文件请参阅自托管。
较早的 Solana Tracker Swap API(
swap-v2.solanatracker.io)是独立产品。它仍在运行,每笔兑换收取平台费。
下一步
兑换指南
浏览器钱包、仅构建指令和流式兑换。
发送交易
提交已签名交易并读取兑换结果。
自托管
从 GitHub 下载二进制文件,在自己的服务器上运行 Raptor。