关于 raptor-dex
raptor-dex 是用于 Solana 的自托管 Rust 二进制程序,可聚合多个 DEX 的兑换报价并构建交易,面向需要自行运行兑换基础设施的开发者。它提供 HTTP 与可选的实时 WebSocket 报价,并支持本地签名交易。
主要功能
- 01聚合 25 多个 Solana DEX 报价
- 02多跳路由与 DEX 筛选
- 03构建兑换交易和指令
- 04WebSocket 实时报价流
- 05查询交易状态
适用场景
- 01比较不同 DEX 的代币兑换路线
- 02构建并本地签署 Solana 兑换交易
- 03按池状态变化订阅实时报价
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ agiprolabs/ claude-trading-skills --skill raptor-dex安装后在 Claude Code 中输入/raptor-dex确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/api_reference.mddeployment.mdscripts/raptor_quote.pyraptor_swap.py详细介绍
Raptor — 可自托管的 Solana DEX 聚合器
Raptor 是一个可自托管的 Rust 二进制程序,可聚合 25 多个 Solana DEX 的兑换报价。与 Jupiter 不同,Raptor 在你自己的基础设施上运行,没有速率限制、无需 API 密钥,且不依赖外部 API 的可用性。公开测试期间免费。
- 程序 ID(主网):
RaptorD5ojtsqDDtJeRsunPLg6GvLYNnwKJWxYE4m87 - GitHub:solanatracker/raptor-binary
- 文档:docs.solanatracker.io/raptor/overview
快速开始
# Clone the binary repo (includes required signature file)
git clone https://github.com/solanatracker/raptor-binary
cd raptor-binary
# Run with required environment variables
export RPC_URL="https://your-solana-rpc.com"
export YELLOWSTONE_ENDPOINT="https://your-yellowstone-grpc.com"
export YELLOWSTONE_TOKEN="your-token" # if required by provider
./raptor
# Listens on 0.0.0.0:8080 by default
要求:Solana RPC 端点 + Yellowstone gRPC 端点(用于池索引)。正常运行时,Raptor 使用的 RPC 调用很少,因为池状态通过 Yellowstone 流式传输。
签名文件:signature 文件必须与 Raptor 二进制程序位于同一目录中。该文件用于验证你的实例,且包含在仓库克隆中。如果移动二进制程序,请将签名文件一并复制。
执行流程
1. GET /quote → Best route across 25+ DEXes
2. POST /swap → Unsigned versioned transaction
3. Sign locally → Your private key never leaves your machine
4. POST /send-transaction → Submit via Yellowstone Jet TPU
5. GET /transaction/{sig} → Confirm status (pending/confirmed/failed/expired)
API 端点
| 方法 | 端点 | 描述 |
|---|---|---|
GET | /quote | 获取支持多跳路由的兑换报价 |
POST | /swap | 根据报价构建兑换交易 |
POST | /swap-instructions | 仅获取兑换指令(不含交易封装) |
POST | /quote-and-swap | 在一次请求中获取报价并构建交易 |
POST | /send-transaction | 通过 Yellowstone Jet TPU 提交并自动重试 |
GET | /transaction/:signature | 跟踪交易状态并查看解析后的事件 |
GET | /health | 健康检查(池、缓存、Yellowstone 连接) |
获取报价
import httpx
RAPTOR = "http://localhost:8080"
resp = httpx.get(f"{RAPTOR}/quote", params={
"inputMint": "So11111111111111111111111111111111111111112", # SOL
"outputMint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", # USDC
"amount": 1_000_000_000, # 1 SOL in lamports
"slippageBps": 50,
})
quote = resp.json()
print(f"Output: {quote['amountOut']} lamports")
print(f"Price impact: {quote['priceImpact']}%")
print(f"Route: {len(quote['routePlan'])} hops")
报价参数
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
inputMint | string | 是 | 输入代币的铸币地址 |
outputMint | string | 是 | 输出代币的铸币地址 |
amount | integer | 是 | 最小单位(lamports)表示的数量 |
slippageBps | string | 否 | 基点数或 "dynamic"(默认值:50) |
dexes | string | 否 | 以逗号分隔的 DEX 筛选条件 |
excludeDexes | string | 否 | 要排除的 DEX |
maxHops | integer | 否 | 1-4 跳(默认值:4) |
directRouteOnly | boolean | 否 | 仅使用单跳路由 |
pools | string | 否 | 以逗号分隔的池地址筛选条件 |
feeBps | integer | 否 | 平台手续费,0-1000 个基点 |
feeAccount | string | 否 | 手续费接收方钱包 |
构建并签署兑换交易
import base64
import os
# Step 2: Build transaction from quote
resp = httpx.post(f"{RAPTOR}/swap", json={
"quoteResponse": quote,
"userPublicKey": "YOUR_WALLET_PUBKEY",
"wrapUnwrapSol": True,
"txVersion": "v0",
"priorityFee": "auto", # min|low|auto|medium|high|veryHigh|turbo|unsafeMax
"maxPriorityFee": 100_000, # cap in lamports
})
swap = resp.json()
# swap["swapTransaction"] is base64-encoded unsigned transaction
# Step 3: Sign locally (private key never sent to Raptor)
from solders.transaction import VersionedTransaction
from solders.keypair import Keypair
tx_bytes = base64.b64decode(swap["swapTransaction"])
tx = VersionedTransaction.from_bytes(tx_bytes)
keypair = Keypair.from_base58_string(os.getenv("PRIVATE_KEY"))
signed_tx = VersionedTransaction(tx.message, [keypair])
signed_b64 = base64.b64encode(bytes(signed_tx)).decode()
# Step 4: Submit via Yellowstone Jet TPU
resp = httpx.post(f"{RAPTOR}/send-transaction", json={
"transaction": signed_b64,
})
result = resp.json()
print(f"Signature: {result['signature']}")
# Step 5: Track status
resp = httpx.get(f"{RAPTOR}/transaction/{result['signature']}")
status = resp.json()
# status: pending | confirmed | failed | expired
print(f"Status: {status['status']}, Latency: {status.get('latency_ms')}ms")
WebSocket 流式传输
当池状态发生变化时,基于 slot 更新实时流式传输报价:
import asyncio, websockets, json
async def stream_quotes():
async with websockets.connect("ws://localhost:8080/stream") as ws:
await ws.send(json.dumps({
"type": "subscribe",
"inputMint": "So11111111111111111111111111111111111111112",
"outputMint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"amount": 1_000_000_000,
"slippageBps": "50",
}))
async for msg in ws:
data = json.loads(msg)
if data.get("type") == "quote":
print(f"Out: {data['data']['amountOut']} (slot {data['data']['contextSlot']})")
/stream/swap 变体会预先构建可供签名的交易,并每隔 10 个 slot 自动重新发送,以防交易过期。
支持的 DEX(25+)
Raydium:AMM、CLMM、CPMM、LaunchLab | Meteora:DLMM、Dynamic AMM、DAMM V2、Curve、DBC | Orca:Whirlpool v1/v2 | 联合曲线:Pump.fun、Pumpswap、Heaven、MoonIt、Boopfun | PropAMM:Humidifi、Tessera、Solfi V1/V2、AlphaQ、ZeroFi、BisonFi、GoonFi V2 | 其他:FluxBeam、PancakeSwap V3
配置
环境变量
| 变量 | 必需 | 默认值 | 描述 |
|---|---|---|---|
RPC_URL | 是 | — | Solana RPC 端点 |
YELLOWSTONE_ENDPOINT | 是 | — | Yellowstone gRPC 端点 |
YELLOWSTONE_TOKEN | 否 | — | 身份验证令牌(若提供方要求) |
BIND_ADDR | 否 | 0.0.0.0:8080 | 监听地址 |
INCLUDE_DEXES | 否 | all | 以逗号分隔的 DEX 筛选条件 |
EXCLUDE_DEXES | 否 | none | 要排除的 DEX |
WORKER_THREADS | 否 | CPU cores | 工作线程数 |
ENABLE_WEBSOCKET | 否 | false | 启用 /stream 端点 |
ENABLE_YELLOWSTONE_JET | 否 | false | 为 /send-transaction 启用 Jet TPU |
ENABLE_ARBITRAGE | 否 | false | 启用循环套利路由 |
CLI 标志
./raptor --include-dexes raydium,orca,meteora \
--enable-websocket \
--enable-yellowstone-jet \
--workers 4
DEX 筛选示例
# Only bonding curve DEXes (for PumpFun sniping)
INCLUDE_DEXES="pumpfun,pumpswap,heaven,moonit,boopfun" ./raptor
# Only major AMMs
INCLUDE_DEXES="raydium,orca,meteora" ./raptor
优先费等级
| 等级 | 使用场景 |
|---|---|
min / low | 节省成本,不紧急 |
auto / medium | 推荐的默认选项 |
high / veryHigh | 更快确认 |
turbo / unsafeMax | 速度最快,适用于竞争激烈的场景 |
Raptor 与 Jupiter
| 特性 | Raptor | Jupiter |
|---|---|---|
| 可自托管 | 是 | 否 |
| 速率限制 | 无(取决于你的硬件) | API 速率限制 |
| DEX 覆盖范围 | 25+ | 30+ |
| 延迟 | 网络本地 | 远程 API |
| 费用 | 免费(测试版) | 免费(托管) |
| 交易提交 | Yellowstone Jet TPU | 标准 RPC |
| 链上程序 | RaptorD5o... | JUP... |
| 是否需要 API 密钥 | 否 | 否 |
部署
Docker、Fly.io 和裸机部署设置请参阅 references/deployment.md。
文件
参考资料
references/api_reference.md— 完整的 HTTP 和 WebSocket API,以及请求/响应架构references/deployment.md— Docker、Fly.io 和裸机部署,以及签名文件处理- docs.solanatracker.io/raptor/overview — Raptor 官方文档
- github.com/solanatracker/raptor-binary — 二进制版本和 README
脚本
scripts/raptor_quote.py— 获取并比较兑换报价,支持 --demo 模式scripts/raptor_swap.py— 完整兑换流程:报价 → 构建 → 签名 → 提交 → 确认(仅在 --demo 模式下模拟)