mcpField
R
raptor-dex

raptor-dex

github.com/agiprolabs其他456419 次安装8 周前更新
代码仓库

关于 raptor-dex

raptor-dex 是用于 Solana 的自托管 Rust 二进制程序,可聚合多个 DEX 的兑换报价并构建交易,面向需要自行运行兑换基础设施的开发者。它提供 HTTP 与可选的实时 WebSocket 报价,并支持本地签名交易。

主要功能

  1. 01聚合 25 多个 Solana DEX 报价
  2. 02多跳路由与 DEX 筛选
  3. 03构建兑换交易和指令
  4. 04WebSocket 实时报价流
  5. 05查询交易状态

适用场景

  1. 01比较不同 DEX 的代币兑换路线
  2. 02构建并本地签署 Solana 兑换交易
  3. 03按池状态变化订阅实时报价

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/agiprolabs/claude-trading-skills --skill raptor-dex

安装后在 Claude Code 中输入/raptor-dex确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
api_reference.md
deployment.md
scripts/
raptor_quote.py
raptor_swap.py

详细介绍

Raptor — 可自托管的 Solana DEX 聚合器

Raptor 是一个可自托管的 Rust 二进制程序,可聚合 25 多个 Solana DEX 的兑换报价。与 Jupiter 不同,Raptor 在你自己的基础设施上运行,没有速率限制、无需 API 密钥,且不依赖外部 API 的可用性。公开测试期间免费。

快速开始

# 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")
报价参数
参数类型必填描述
inputMintstring是输入代币的铸币地址
outputMintstring是输出代币的铸币地址
amountinteger是最小单位(lamports)表示的数量
slippageBpsstring否基点数或 "dynamic"(默认值:50)
dexesstring否以逗号分隔的 DEX 筛选条件
excludeDexesstring否要排除的 DEX
maxHopsinteger否1-4 跳(默认值:4)
directRouteOnlyboolean否仅使用单跳路由
poolsstring否以逗号分隔的池地址筛选条件
feeBpsinteger否平台手续费,0-1000 个基点
feeAccountstring否手续费接收方钱包

构建并签署兑换交易

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

特性RaptorJupiter
可自托管是否
速率限制无(取决于你的硬件)API 速率限制
DEX 覆盖范围25+30+
延迟网络本地远程 API
费用免费(测试版)免费(托管)
交易提交Yellowstone Jet TPU标准 RPC
链上程序RaptorD5o...JUP...
是否需要 API 密钥否否

部署

Docker、Fly.io 和裸机部署设置请参阅 references/deployment.md。

文件

参考资料
脚本
  • scripts/raptor_quote.py — 获取并比较兑换报价,支持 --demo 模式
  • scripts/raptor_swap.py — 完整兑换流程:报价 → 构建 → 签名 → 提交 → 确认(仅在 --demo 模式下模拟)

评论

支持 Markdown