الانتقال إلى المحتوى الرئيسي

Documentation Index

Fetch the complete documentation index at: https://docs.raydium.io/llms.txt

Use this file to discover all available pages before exploring further.

هذه الصفحة مُترجَمة آليًا بواسطة الذكاء الاصطناعي. النسخة الإنجليزية هي المرجع المعتمد.عرض النسخة الإنجليزية →
Trade API هي مجموعة بسيطة من نقاط النهاية على transaction-v1.raydium.io (وبعض المسارات المعكوسة على api-v3.raydium.io) تقتبس مبادلة وتبني معاملة Solana موقّعة وجاهزة وترجعها في رحلة واحدة. إنها نفس الواجهة التي تستخدمها واجهة Raydium. استخدمها عندما تريد توجيه Raydium بدون تجميع TS SDK — الأنظمة الخلفية، معالجات Blinks، بوتات Telegram، تطبيقات الجهات الخارجية.

متى تستخدم Trade API مقابل SDK

تريد أن…استخدم
دمج المبادلات في نظام خلفي لا يمكنه تجميع حزم npm (مثل بوت Python أو خدمة Go أو خدمة Rust)Trade API
عرض Blink مبادلة في منشور وسائط اجتماعيةTrade API
بناء تطبيق متصفح حيث يهم توفير الكيلوبايتاتTrade API
دمج منطق التوجيه داخل برنامج Solana آخر (CPI)لا شيء — استخدم sdk-api/rust-cpi
بناء عميل DEX كامل مع معاينة مسار مخصصة وتراكبات الرسوم البيانية وهيورستيك رسوم الأولويةTS SDK
تحتاج إلى اقتباس غير متصل حتمي بدون رحلة شبكةTS SDK (مع حالة المجمع المحلي)
SDK أكثر ثراءً؛ Trade API أبسط. كلاهما يلف برامج CPMM/CLMM/AMM v4 الأساسية نفسها، لذا فإن المبادلة على السلسلة الناتجة متطابقة.

نقاط النهاية الثلاث

1. GET /compute/swap-base-in

بناءً على مبلغ الإدخال، اختر مسارًا وأرجع اقتباسًا.
GET https://transaction-v1.raydium.io/compute/swap-base-in
  ?inputMint=So11111111111111111111111111111111111111112
  &outputMint=EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
  &amount=1000000000
  &slippageBps=50
  &txVersion=V0
الاستجابة:
{
  "id": "b2e4...",
  "success": true,
  "version": "V1",
  "data": {
    "swapType": "BaseIn",
    "inputMint":  "So11111111111111111111111111111111111111112",
    "inputAmount":  "1000000000",
    "outputMint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
    "outputAmount": "165234567",
    "otherAmountThreshold": "164408394",
    "slippageBps": 50,
    "priceImpactPct": 0.0012,
    "referrerAmount": "0",
    "routePlan": [
      { "poolId": "58oQ...", "inputMint": "So11...", "outputMint": "USDC...", "feeAmount": "2500000", "feeMint": "So11..." }
    ]
  }
}
حقل id هو معالج اقتباس معتم يتم تمريره إلى نقطة النهاية التالية. الاقتباس مستقر لمدة ~30 ثانية؛ بعد ذلك، أعد الاقتباس.

2. GET /compute/swap-base-out

شكل معكوس: “أريد استقبال بالضبط N من الإخراج؛ اقتبس لي الإدخال المطلوب.”
GET /compute/swap-base-out
  ?inputMint=<MINT_IN>
  &outputMint=<MINT_OUT>
  &amount=<DESIRED_OUTPUT_AMOUNT>
  &slippageBps=50
  &txVersion=V0
شكل الاستجابة متماثل لـ swap-base-in؛ يتم قلب دلالات حقل amount.

3. POST /transaction/swap-base-in و /transaction/swap-base-out

يأخذ الاقتباس من الخطوة 1 ويرجع معاملة موقّعة وجاهزة:
POST https://transaction-v1.raydium.io/transaction/swap-base-in
Content-Type: application/json

{
  "computeUnitPriceMicroLamports": "50000",
  "swapResponse": { ... paste the data object from swap-base-in ... },
  "txVersion": "V0",
  "wallet": "<user_pubkey>",
  "wrapSol": true,
  "unwrapSol": false,
  "inputAccount": "<optional_token_account>",
  "outputAccount": "<optional_token_account>"
}
الاستجابة:
{
  "id": "9f1c...",
  "success": true,
  "version": "V1",
  "data": [
    { "transaction": "<base64-encoded-versioned-transaction>" }
  ]
}
قد يتم إرجاع معاملات متعددة إذا كانت المبادلة تتطلب إعدادًا (مثل إنشاء ATAs، التفاف SOL). وقّع وأرسل بالترتيب.

مثال من البداية إلى النهاية الأدنى (Python)

import base64, requests
from solders.transaction import VersionedTransaction
from solders.keypair import Keypair
from solana.rpc.api import Client

rpc = Client("https://api.mainnet-beta.solana.com")
kp = Keypair.from_bytes(bytes([...]))    # your signer

SOL  = "So11111111111111111111111111111111111111112"
USDC = "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"

quote = requests.get(
    "https://transaction-v1.raydium.io/compute/swap-base-in",
    params={
        "inputMint": SOL, "outputMint": USDC,
        "amount": 1_000_000_000, "slippageBps": 50, "txVersion": "V0",
    },
).json()

built = requests.post(
    "https://transaction-v1.raydium.io/transaction/swap-base-in",
    json={
        "computeUnitPriceMicroLamports": "50000",
        "swapResponse": quote,
        "txVersion": "V0",
        "wallet": str(kp.pubkey()),
        "wrapSol": True,
        "unwrapSol": False,
    },
).json()

for entry in built["data"]:
    raw = base64.b64decode(entry["transaction"])
    tx = VersionedTransaction.from_bytes(raw)
    tx.sign([kp])
    sig = rpc.send_raw_transaction(bytes(tx)).value
    print(f"Sent: {sig}")
هذا حوالي 20 سطرًا. ما يعادله مع TS SDK هو حوالي 30 لكنه يعطيك تحكمًا أغنى (معاينة المسار المخصص، ميزانية وحدة الحساب لكل مجمع، بيانات وصفية الخطأ التفصيلية).

التوجيه واختيار المجمع

يوجه Trade API عبر جميع برامج Raydium (CPMM، CLMM، AMM v4) ويختار أفضل تنفيذ للحجم المقتبس. الخصائص:
  • دعم القفز المتعدد. يمكن لمبادلة SOL→USDC أن توجه عبر wSOL→JUP→USDC إذا كان أرخص.
  • تقسيم المجمع متعدد البرامج في نفس البرنامج غير مدعوم. يمر الاقتباس الواحد بمسار واحد بالضبط؛ إذا كنت تريد تقسيم الحجم عبر المجمعات، افعله من جانب العميل (اقتباسان، معاملتان).
  • مستقر مقابل مركز. يفضل الموجه استخدام CLMM عندما تكون السيولة في النطاق كافية، والعودة إلى CPMM للأزواج ذات الذيل الطويل.
  • إدراج AMM v4. يتم تضمين مجمعات AMM v4 في التوجيه لكنها تختار فقط عندما توفر تسعيرًا أفضل من بدائل CPMM/CLMM.
لفرض التوجيه عبر مجمع معين، استخدم SDK بدلاً من ذلك — Trade API لا يكشف معامل تثبيت المجمع.

معامل الراجع

أضف &referrer=<wallet_pubkey> إلى نقطة نهاية الحساب لأخذ حد قطع إحالة 1% على المبادلة. انظر user-flows/referrals-and-blinks للدلالات. عند الحضور:
  • referrerAmount في استجابة الاقتباس هو المبلغ المطلق (في نقابة الإدخال) الذي سيتم توجيهه إلى الراجع.
  • تحتوي المعاملة النهائية على تحويل رمز SPL إضافي إلى ATA الراجع.

رسوم الأولوية

computeUnitPriceMicroLamports في طلب البناء يعيّن رسم الأولوية للمعاملة المعادة. قاعدة الإبهام:
  • 50_000 (0.00005 lamports/CU × 200k CU ≈ 0.00001 SOL): بحد أدنى، جيد للحظات غير المزدحمة.
  • 200_000: احتقان معتدل.
  • 1_000_000: احتقان ثقيل.
للضبط التكيفي، اتصل أولاً بـ getRecentPrioritizationFees على RPC الخاص بك وأرسل الوسيط. انظر integration-guides/priority-fee-tuning.

إصدارات المعاملة

  • "V0" يرجع معاملة مصدرة (MessageV0) مع جدول بحث للحسابات الشائعة. أصغر، أسرع. موصى به.
  • "LEGACY" يرجع معاملة وراثية. أكبر؛ استخدمه فقط إذا كانت محفظتك/البنية الأساسية لا تتعامل مع V0.

أشكال الأخطاء

تعيد API HTTP 200 مع success: false للأخطاء المنطقية، HTTP 4xx/5xx لأخطاء النقل/البنية الأساسية. الأخطاء المنطقية الشائعة:
  • "No route found" — لا مسار بين النقابتين بهذا الحجم. قلل amount أو أعد التفكير في الزوج.
  • "Insufficient liquidity" — يوجد مسار لكنه سينفجر بـ slippageBps. وسّع الانزلاق.
  • "Quote expired"swapResponse أقدم من 30 ثانية. أعد الاقتباس.
  • "Unsupported mint" — النقابة ليست في عالم Raydium (غير مدرجة، أو في برنامج مستقدم).

حدود المعدل

  • نقاط نهاية الاقتباس: 120 طلب/دقيقة لكل IP.
  • نقاط نهاية البناء: 60 طلب/دقيقة لكل IP (تكلفة أعلى على الخادم).
  • تجاوز الحدود يعيد HTTP 429 مع رأس Retry-After.
للحصول على إنتاجية أعلى، اتصل بعلاقات مطوري Raydium؛ مفاتيح طبقة المجمّع متاحة.

النمط المعماري لمدمجي التكامل

┌─────────────┐   quote   ┌───────────────┐   build   ┌───────────────┐   sign/send   ┌──────────┐
│ Your front  │──────────►│ Trade API     │──────────►│ Trade API     │──────────────►│ Solana   │
│   end       │◄──────────│ /compute/...  │◄──────────│ /transaction/ │               │   RPC    │
└─────────────┘           └───────────────┘           └───────────────┘               └──────────┘
                              (stateless)                 (stateless)
كل شيء بدون حالة — الشيء الوحيد الذي تحتاج إلى تمريره بين استدعاء الاقتباس واستدعاء البناء هو جسم استجابة الاقتباس نفسه.

أين تذهب بعد ذلك

  • sdk-api/typescript-sdk — واجهة برمجية أكثر ثراءً مع نفس البرامج الأساسية.
  • sdk-api/rest-api — نقاط نهاية الجانب القراءة (معلومات المجمع، معلومات النقابة) لتتمم جانب الكتابة في Trade API.
  • user-flows/swap — تدفق مبادلة واجهة المستخدم من البداية إلى النهاية.
  • integration-guides/aggregator — نمط للمجمّعات التي توجه عبر العديد من DEXes.
المصادر:
  • نقاط نهاية transaction-v1.raydium.io المباشرة.
  • فحص علامة التبويب الشبكة في واجهة Raydium (نفس السطح المستهلك).