الانتقال إلى المحتوى الرئيسي
هذه الصفحة مُترجَمة آليًا بواسطة الذكاء الاصطناعي. النسخة الإنجليزية هي المرجع المعتمد.عرض النسخة الإنجليزية →
لا تنشر Raydium حزمة Python رسمية. الأنماط المعروضة هنا تجمع بين ثلاث مكتبات مجتمعية مدعومة بشكل جيد: solders (برامج Solana الأساسية المربوطة بـ Rust)، solana-py (عميل RPC)، و anchorpy (منشئو التعليمات بأسلوب Anchor من IDLs). المزيج يغطي كل شيء تفعله حزمة TypeScript، لكنه أقل تلميعًا.

البيئة

الإصدارات التي تعمل معًا حتى وقت كتابة هذا:
anchorpy يتخلف دوريًا عن إصدار anchor-lang؛ بالنسبة لبرنامج Raydium المنشور مؤخرًا، تحقق من أن IDL يُترجَم تحت إصدار anchorpy الثابت لديك قبل الالتزام.

الاتصال والمفتاح الخاص

AsyncClient هو المتغير غير المتزامن؛ Client المتزامن متاح للبرامج السريعة لكن الأسلوب غير المتزامن مفضل لأي شيء يُرسل عدة طلبات.

قراءة حالة المجمع

تقرأ معظم الاستخدامات الإنتاجية حالة المجمع المفسرة من واجهة REST API الخاصة بـ Raydium (انظر sdk-api/rest-api) بدلاً من فك تشفير البيانات على السلسلة يدويًا — إنه أبسط والكمون مقبول لمعظم حالات الاستخدام.
للروبوتات التي تحتاج إلى أقل كمون ممكن، قم بفك تشفير البايتات على السلسلة مباشرة:
التخطيط الكامل موجود في src/raydium/cpmm/layout.ts (مصدر TS)؛ قم بنقله إلى construct حسب الحاجة. يمكن لـ anchorpy أن يفعل هذا تلقائيًا مع IDL — انظر أدناه.

بناء وإرسال مبادلة

للبساطة، استخدم نقطة نهاية server-built-transaction الخاصة بـ Raydium. يعيد الخادم معاملة موقعة وجاهزة؛ تحتاج فقط إلى إضافة توقيعك:
هذا هو أسرع مسار إلى روبوت عامل. ينتهي السعر المُعطى بسرعة (≈30 ثانية)؛ لا تخزنه مؤقتًا.

بناء مبادلة من جانب العميل (عبر anchorpy)

للحصول على كمون أقل أو عندما لا تتمكن من الوصول إلى API الخاصة بـ Raydium (مناطق معاقة، إعدادات معزولة):
اشتقاقات PDA (حالة الملاحظة، سلطة المجمع) تتبع نفس الصيغ الموجودة في فصل CPMM. لا يقوم anchorpy باشتقاقها تلقائيًا.

عمارة الروبوت النموذجية

بنية روبوت Python الشائعة لـ Raydium:
القرارات الرئيسية للإنتاج:
  • مزود RPC. تقيد RPCs الرسمية على mainnet بقوة. استخدم مزودًا مخصصًا (Helius أو QuickNode أو Triton) للحركة المستدامة.
  • WebSocket لحالة المجمع. client.account_subscribe(pool_id) يدفع التحديثات في كل تغيير حالة. أقل بكثير من المراجعة المتكررة.
  • مزود رسوم الأولوية. Helius لديها نقطة نهاية getPriorityFeeEstimate؛ Triton لديها الخاصة بهم. حجم الرسوم بناءً على النسبة المئوية 75 من الرسوم الأخيرة على برنامج الهدف.
  • الحزم للتداولات الحساسة للـ MEV. امرر عبر محرك الكتلة الخاص بـ Jito إذا كنت لا تتحمل خطر الثلاثية. مكتبات Python: jito-sdk-python (جهة خارجية، تختلف الجودة).

قراءة حالة المزرعة

يعطي .account["X"].decode(bytes) الخاص بـ anchorpy كائن Python أصلي يطابق هيكل IDL.

الأخطاء الشائعة

1. معالجة الكسور العشرية

قيم float الأصلية في Python هي IEEE-754 مزدوجة؛ الكميات في مسكوكات 9 عشري (1 SOL = 1e9 وحدة) تبقى دقيقة لكن النسب والمنتجات تفقد الدقة. استخدم int (يعيد solders int لجميع حقول الكمية) وقم بالتوجيه عبر decimal.Decimal لأي حسابات أسعار.

2. التفكير بناءً على الفتحة مقابل التفكير بناءً على الطابع الزمني

تستخدم بعض إصدارات المزرعة عدادات الفتحات؛ LaunchLab يستخدم الطوابع الزمنية. يعيد solana-py slot في استجابات RPC، لكن تحويل الفتحة → الطابع الزمني غير دقيق (يختلف حسب جدول الزعيم). إذا كنت تحتاج إلى الوقت الفعلي، اتصل بـ get_block_time(slot) بشكل صريح.

3. استنزاف مجمع الاتصالات

AsyncClient يفتح اتصال HTTP واحد لكل طلب بشكل افتراضي. تحت حمل كبير، أعد استخدام جلسات httpx.AsyncClient وعيّن limits=httpx.Limits(max_connections=100) مناسبة.

4. حدود حجم المعاملة

المعاملات المُنشأة بـ Python ليست أصغر من تلك المُنشأة بـ TS — يطبق حد 1232 بايت بالتساوي. استخدم معاملات V0 (جداول البحث للعناوين) لأي شيء يمر عبر أكثر من ~2 مجمع.

مؤشرات

المصادر: