跳转到主要内容
Raptor 在 71 个 Solana DEX 上为兑换寻找最佳路由,并返回一笔由用户钱包签名的交易。有两种使用方式,目前都免费,无需 API 密钥,也无需注册:

托管 API

免费。 直接调用 raptor.solanatracker.io,无需安装或运行任何程序。可以从下面的快速开始入手。

自托管二进制文件

免费。 从 GitHub 下载 Raptor,在自己的服务器上运行同样的 API,没有任何限制。
有问题请到 Discord 咨询。

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。