mcpField
R
raptor-dex

raptor-dex

github.com/agiprolabsその他456419 回インストール8 週間前に更新
リポジトリ

raptor-dex について

raptor-dexは、Solanaの複数のDEXからスワップ見積もりを集約し、トランザクションを構築するセルフホスト型Rustバイナリです。自前のスワップ基盤を運用する開発者向けで、HTTP APIと任意のリアルタイムWebSocket配信を備え、署名はローカルで行います。

主な機能

  1. 0125以上のSolana DEXの見積もり集約
  2. 02マルチホップルーティングとDEX絞り込み
  3. 03スワップトランザクションと指示の構築
  4. 04リアルタイムWebSocket見積もり配信
  5. 05トランザクション状態の追跡

活用シーン

  1. 01DEX間のトークンスワップ経路の比較
  2. 02Solanaスワップトランザクションの構築とローカル署名
  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 は、25 以上の Solana DEX のスワップ見積もりを集約する、セルフホスト型の Rust バイナリです。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 エンドポイント(プールのインデックス作成用)。プールの状態は Yellowstone 経由でストリーミングされるため、通常の動作中に Raptor が使用する RPC 呼び出しはごくわずかです。

signature ファイル: signature ファイルは Raptor バイナリと同じディレクトリに配置する必要があります。このファイルはインスタンスの認証に使用され、リポジトリのクローンに含まれています。バイナリを移動する場合は、signature ファイルも一緒にコピーしてください。

実行フロー

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-swap1 回のリクエストで見積もりとトランザクションを取得します
POST/send-transactionYellowstone 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 bps
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 ストリーミング

プールの状態が変化したときに、スロットベースで更新されるリアルタイムの見積もりストリーミングです。

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 スロットごとに自動で再送信します。

対応 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いいえallDEX のカンマ区切りフィルター
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 を参照してください。

ファイル

リファレンス
  • 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 ではシミュレーションのみ)

コメント