跳转到主要内容
Raptor 也是一个可以在自己服务器上运行的单一二进制文件。它和 raptor.solanatracker.io 托管服务使用相同的路由引擎,以及相同的 HTTP 和 WebSocket API。
  • 目前免费。 二进制文件不收费,也不需要 API 密钥或许可证密钥,下载后直接运行。
  • 没有限制。 想运行多少实例都可以,能处理多少请求只取决于你的硬件。
  • 可以转售。 在前面加上你自己的 API,收取访问费用,或添加你自己的平台费。

从 GitHub 下载

适用于 Linux 和 macOS 的最新版本,附校验和与发布说明。

报告问题

Bug 和功能请求提交到 GitHub 仓库,使用问题请到 Discord 咨询。
使用 Raptor 不一定要自托管。托管 API 目前同样免费,无需任何配置。想要独立的容量、自己的基础设施,或不依赖共享服务时,再选择自托管。

二进制文件的功能

开箱即用时,二进制文件提供报价和兑换交易构建。另外四项功能默认关闭,需要手动开启。 请求已关闭的端点会返回 404。 Raptor 通过 Yellowstone gRPC 流式接收账户更新来保持池状态最新,因此启动后只使用很少的 RPC。

系统要求

  • 一台 Linux 或 macOS 服务器。
    • Linux:x86-64,glibc 2.30 或更新版本,例如 Ubuntu 20.04+、Debian 11+ 或 RHEL 9+。
    • macOS:Apple Silicon 或 Intel。
  • 一个 Solana RPC 端点,通过 RPC_URL 设置。
  • 一个 Yellowstone gRPC 端点,通过 YELLOWSTONE_ENDPOINT 设置;如果服务商要求,还需设置 YELLOWSTONE_TOKEN。没有它 Raptor 无法启动。
  • 一个可写的池缓存目录。 默认是二进制文件旁边的 .r_cache。设置 RAPTOR_POOL_DATA_DIR 可使用其他目录。
  • 出站 HTTPS。 启动时,Raptor 会从 Solana Tracker 下载当前的池索引,之后通过 Yellowstone 保持更新。

安装

1

选择适合服务器的文件

每个发布版本都为每个平台提供一个 zip 文件,命名为 raptor-<version>-<platform>.zip。
2

下载并校验

以下命令会下载最新版本,并用发布的 checksums.txt 校验。
校验通过时输出 raptor-<version>-<platform>.zip: OK。如果输出其他内容,请删除 zip 文件并重新下载。把 raptor.sig 和 raptor 放在同一目录。二进制文件用它来确认自身未被修改。
3

确认可以运行

如果 macOS 阻止运行从浏览器下载的二进制文件,用 xattr -d com.apple.quarantine raptor 清除隔离标记。

运行

设置端点并启动服务器。
Raptor 监听 0.0.0.0:8080。设置 BIND_ADDR 可以修改,例如 BIND_ADDR=127.0.0.1:9000。 开启除套利外的所有可选功能:

等待服务就绪

Raptor 要先索引池才能路由。索引完成前,/quote 返回 503 和 Server warming up。/ready 在 Raptor 可以提供报价后返回 200,在此之前返回 503:
/health 在服务器启动后立即返回 OK,即使仍在索引。把负载均衡器的健康检查指向 /ready,这样实例只有在可以报价时才会接收流量。

发起第一次报价

把 https://raptor.solanatracker.io 替换为你的服务器地址后,概览中的所有示例都可以用于你的实例。

可选功能

每个标志都有对应的环境变量。开关类变量设为 1、true、yes 或 on 都会开启功能。

WebSocket 流式传输

客户端连接 ws://your-server:8080/stream 获取实时报价,或连接 /stream/swap 获取附带待签名交易的报价。最佳路由变化时 Raptor 会推送更新,客户端无需轮询。消息格式见 WebSocket。

发送和追踪交易

这会开启 POST /send-transaction 和 GET /transaction/{signature}。Raptor 通过 QUIC 使用 Yellowstone Jet 把已签名交易直接发送给即将出块的 leader,并持续重发,直到交易上链或过期。请求和响应格式见发送和追踪交易。 服务器需要能通过出站 UDP 访问 Solana 验证者,以使用 QUIC。

一次调用完成报价和兑换

这会开启 POST /quote-and-swap,在一个请求中完成报价和交易构建。对不需要先展示报价的机器人和后端,可以省去一次往返。参见一次请求完成报价和兑换。

套利

这会让 /quote 接受相同的 mint 作为输入和输出,例如 SOL 换 SOL。Raptor 随后会寻找一条经过多个池、换回数量多于投入的循环,详见套利。 不开启此标志时,相同 mint 的报价返回 400 和 Circular arbitrage is disabled。

限制 Raptor 的路由范围

默认情况下,Raptor 会经过所有支持的 DEX 和池进行路由。下面这些过滤器在整个实例范围内缩小路由范围。DEX 过滤器还会减少 Raptor 从 Yellowstone 接收的数据流,从而节省内存和带宽。调用方还可以在每个请求上通过 dexes 和 pools 进一步收窄路由。 DEX 名称不区分大小写,并接受多种写法,因此 raydium-clmm、raydium_clmm 和 "Raydium CLMM" 都指同一个 DEX。raydium 和 meteora 匹配该 DEX 的所有池类型,orca 匹配 Whirlpool。包含列表和排除列表只需设置其中一个;两者都设置时,以包含列表为准。
白名单文件每行一个地址。Raptor 会忽略空行,# 表示注释开始。组合使用多个过滤器时,池必须全部通过。

运行多个实例

每个实例独立运行,使用自己的 Yellowstone 流,因此可以按需在负载均衡器后面放任意数量的实例。 每个报价都带有签名的 quoteId。默认情况下,/swap 只接受同一实例生成的报价。如果负载均衡器可能把客户端的 /quote 和 /swap 发往不同实例,请为所有实例设置相同的密钥:
共享该密钥的实例会互相接受对方的报价。用 openssl rand -hex 32 生成一个密钥,并妥善保管。

内存和性能

小型服务器请使用 --low-memory。Pump.fun 这类发射台有数百万个联合曲线池,低内存模式会把它们放在磁盘上。

启动选项

作为服务运行

把 raptor 和 raptor.sig 放到 /opt/raptor,然后创建 /etc/systemd/system/raptor.service:
把配置写入 /opt/raptor/raptor.env,每行一个 NAME=value:
启动并跟踪日志:

更新

用同样的方式下载新版本,替换 raptor 和 raptor.sig,然后重启。不同版本之间保留池缓存目录。发布说明见 GitHub 和最近更新。 要无停机更新多个实例,为它们设置相同的 RAPTOR_QUOTE_SECRET,然后逐个重启。每个实例在 /ready 返回 200 后重新加入负载均衡器。

配置参考

标志的值两种写法都可以:--workers 8 或 --workers=8。

故障排查

在运行 Raptor 的环境中设置 RPC_URL 和 YELLOWSTONE_ENDPOINT。使用 systemd 时,把它们写入 EnvironmentFile,因为 shell 中导出的变量不会传给服务。
Raptor 还在索引池。等 /ready 返回 200。如果一直不返回,检查日志中是否有 Yellowstone 连接错误,并确认服务器可以发起出站 HTTPS 请求。
该功能未开启。启动 Raptor 时加上 --enable-websocket、--enable-yellowstone-jet 或 --enable-quote-and-swap。
在所有实例上设置相同的 RAPTOR_QUOTE_SECRET,或把每个客户端的 /quote 和 /swap 发往同一个实例。
二进制文件需要 glibc 2.30 或更新版本。请使用 Ubuntu 20.04+、Debian 11+ 或更新的发行版,或运行上面的 Docker 镜像。
把 --rpc-rate-limit 设为低于套餐的每秒请求数。Raptor 的 RPC 调用大多发生在启动时,之后主要从 Yellowstone 读取数据。

常见问题

不需要。二进制文件目前免费:下载后直接运行。没有密钥,也没有请求限制。
可以。你可以在自己的 API 后面运行它,收取访问费用,并通过 feeAccount 和 feeBps 添加自己的平台费。
可以。Raptor 的角色相同:一个自托管的聚合器,负责报价和构建兑换交易。它不需要二进制密钥,实例数量也不限。
不公开。Raptor 是闭源软件,GitHub 仓库只用于托管发布版本。Bug 和功能请求可以在那里提交 issue。
是的。每个实例构建的交易都使用 Raptor 程序 RaptorD5ojtsqDDtJeRsunPLg6GvLYNnwKJWxYE4m87。