الانتقال إلى المحتوى الرئيسي
هذه الصفحة مُترجَمة آليًا بواسطة الذكاء الاصطناعي. النسخة الإنجليزية هي المرجع المعتمد.عرض النسخة الإنجليزية →
لافتة الإصدار. جميع الأمثلة تستهدف @raydium-io/raydium-sdk-v2@0.2.42-alpha على Solana mainnet-beta، تم التحقق منها في 2026-04. يرسل SDK v3 / v5 / v6 داخليًا بناءً على مالك برنامج المزرعة؛ الأمثلة أدناه تفترض مزرعة v6. انظر reference/program-addresses للحصول على معرفات البرنامج الثلاثة.

الإعداد

تعكس الأمثلة هنا الملفات في raydium-sdk-V2-demo/src/farm. يتبع التمهيد config.ts.template من مستودع العرض التوضيحي:

جلب مزرعة حسب المعرّف

يسحب getFarmById FarmState خارج السلسلة، ويفك التشفير حسب إصدار البرنامج، ويوحد معدل الإصدار ذي النقطة الثابتة إلى Decimal عادي في الثانية.

حجز أرصدة LP

المصدر: src/farm/stake.ts
يتعامل SDK مع تسوية المكافآت المعلقة مسبقًا، لذا إذا كان لدى هذا المحفظة حصة بالفعل في هذه المزرعة، ستدفع التعليمات المكافآت المتراكمة إلى ATAs الخاصة بالمستخدم في نفس المعاملة.

المطالبة فقط (الحصاد)

المصدر: src/farm/harvest.ts
يقبل harvestAllRewards قائمة — لواجهات المستخدم التي تعرض عرض المحفظة، ركّز النداء. يتم المطالبة بكل مزرعة في تعليمة منفصلة ضمن معاملة واحدة (خاضعة لحد حجم 1232 بايت؛ لأكثر من ~6 مزارع، قسّمها إلى معاملات متعددة). للمزرعة الواحدة على v6، يمكنك أيضًا استخدام مسار Harvest الصريح:
على v3 و v5، يتطلب idiom amount: 0؛ يرسل SDK بشكل صحيح.

إلغاء الحجز

المصدر: src/farm/unstake.ts

إنشاء مزرعة v6

المصدر: src/farm/createAmmFarm.ts و editAmmFarm.ts
نقاط رئيسية:
  • perSecond هو معدل الإصدار الصحيح في الثانية. يقوم SDK بحزمه في Q64.64 قبل الإرسال. للمعدل الكسري، قم بالقياس وضبط المدة.
  • يجب أن تكون الميزانية الكاملة (perSecond × duration) موجودة في ATA المكافآت الخاصة بك — create ينقلها إلى خزان المكافآت بشكل ذري.
  • يمكنك تحديد ما يصل إلى 5 مكافآت في استدعاء create واحد. تنمو قائمة الحساب بـ (reward_mint, reward_vault, sender_ata, token_program) لكل تدفق إضافي؛ ابق على دراية بحد حجم المعاملة 1232 بايت. لـ 4+ مكافآت، أنشئ بـ 1–2 واستخدم AddReward في المعاملات اللاحقة.

زيادة تدفق مكافآت موجود

تمدد setRewards end_time وتحويل ميزانية الدلتا. لا يمكن للتعليمة تقصير تدفق، أو خفض per_second على تدفق مباشر، أو تغيير عملة المكافآت. لمبادلة العملات، انتظر end_time واستخدم AddReward على فتحة محررة (إن وجدت)، أو أنشئ مزرعة جديدة.

إعادة تشغيل تدفق منتهي

صالح فقط عندما يكون reward_state == 2 (انتهى) للفتحة المستهدفة. يجب أن يكون المتصل هو reward_sender للفتحة (v6) أو مالك المزرعة (v5).

Rust CPI

بخلاف AMM v4، يأتي برنامج المزرعة v6 مع صندوق Anchor (raydium_farm_v6) منشور جنبًا إلى جنب مع مصادر الواجهة الأمامية و SDK. رسم تخطيطي دقيق لـ Deposit:
يجب أن تطابق شريحة remaining_accounts فتحات المكافآت النشطة للمزرعة 1-إلى-1 (أزواج من reward_vault_i، user_reward_ata_i بترتيب الفهرس). قد يؤدي حذف أو سوء ترتيب هذه إلى محاسبة صامتة خاطئة — سيحول البرنامج المبلغ الخاطئ.

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

  • نسيان المطالبة قبل سحب الأموال. غير مؤذ — Withdraw يسوي المكافآت المعلقة أولاً. لكن إذا عرضت واجهة المستخدم “المطالبة” بشكل منفصل عن “السحب”، قد يعتقد المستخدم أن هناك شيئًا آخر للمطالبة به بعد Withdraw. لا يوجد؛ تم دفع كل شيء تراكم حتى هذه النقطة.
  • total_staked = 0 أثناء الانبعاثات. يتم مصادرة الانبعاثات المتراكمة أثناء عدم حجز أي شيء (تقوم صيغة تحديث reward_per_share بالقسمة على 0 والبرنامج يتخطى التحديث). بالنسبة للبرامج ذات open_time المجدول، شغّل “حصة بذرة” في open_time لتجنب هذا.
  • رسوم نقل Token-2022. على مزارع v6 مع عملات مكافآت Token-2022، تنطبق رسوم النقل عند الإصدار (الخزان → المستخدم). عامل هذا في عروض APR.
  • per_second صغير على v5. معدل v5’s u64 يعني أن أي per_second < 1 وحدة رمز في الثانية (على عملات بـ ≥9 علامات عشرية هذا غالبًا هو المعدل المطلوب) لا يمكن التعبير عنه — معدل التدفق يقرب إلى 0 والمزرعة لا تصدر شيئًا. استخدم v6.

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

المصادر: