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.
هذه الصفحة مُترجَمة آليًا بواسطة الذكاء الاصطناعي. النسخة الإنجليزية هي المرجع المعتمد.عرض النسخة الإنجليزية →
تعليمات المزرعة خاصة بالإصدار. تعليمة
Deposit على v6 غير قابلة للاستدعاء على مزرعة v5 والعكس صحيح. يقوم SDK بالتوزيع من خلال قراءة مالك برنامج المزرعة؛ بالنسبة إلى CPI على السلسلة، يجب عليك اختيار معرّف البرنامج الصحيح مقدمًا.فهرس التعليمات
| الغرض | v3 | v5 | v6 |
|---|---|---|---|
| إنشاء مزرعة | CreateFarm | CreateFarm | CreateFarm |
| إضافة دفتر أستاذ المستخدم (قد يكون ضمنيًا) | CreateUserLedger | CreateAssociatedLedger | ضمني في Deposit |
| Staking | Deposit | Deposit | Deposit |
| Unstaking | Withdraw | Withdraw | Withdraw |
| المطالبة بالمكافآت فقط | غير متاح (استخدم Deposit 0) | غير متاح (استخدم Deposit 0) | Harvest |
| إضافة تدفق مكافأة بعد الإنشاء | غير متاح | AddReward | AddReward |
| تعديل تدفق مكافأة موجود | غير متاح | SetRewards | SetRewards |
| إعادة تشغيل مكافأة بعد end_time | غير متاح | RestartRewards | RestartRewards |
| سحب ميزانية المكافآت غير المطالب بها (المسؤول) | غير متاح | WithdrawReward | WithdrawReward |
Deposit مع amount = 0. يتعامل البرنامج مع هذا كتسوية بحتة. أدخل v6 Harvest صريح لتوضيح الأمور.
يجرّد SDK كل هذا خلف raydium.farm.deposit({ ... }) وما إلى ذلك. تتناول الأقسام أدناه قوائم الحسابات الأساسية للمدمجين الذين يحتاجون إلى بناء التعليمات يدويًا (المجمعات وأدوات المراقبة وملحقات SDK).
CreateFarm (v6)
إنشاء مزرعة v6 جديدة.
الوسائط
reward_info_count = 1)
| # | الاسم | W | S | ملاحظات |
|---|---|---|---|---|
| 1 | creator | W | S | يدفع الإيجار، يمتلك المزرعة. |
| 2 | farm_state | W | حساب FarmState جديد. | |
| 3 | farm_authority | PDA [farm_id]. | ||
| 4 | staking_mint | |||
| 5 | staking_vault | W | تم إنشاؤه كـ ATA للسلطة أو منجم PDA. | |
| 6 | staking_token_program | |||
| 7 | reward_mint | |||
| 8 | reward_vault | W | سيستقبل الميزانية الأولية. | |
| 9 | reward_token_program | |||
| 10 | reward_sender_ata | W | ATA المُنشئ على نعناع المكافأة؛ يتم استنزافه بواسطة هذه التعليمة. | |
| 11 | system_program | |||
| 12 | token_program | |||
| 13 | associated_token_program | |||
| 14 | rent |
open_time > now،end_time > open_time.- ATAs المنشئ تحتفظ بما لا يقل عن
emission_per_second_x64 × (end_time − open_time) / 2^64من نعناع المكافأة. - لا يحتوي
staking_mintعلى سلطة تجميد، أو يتم تعطيل سلطة التجميد.
- تم تهيئة
FarmState،total_staked = 0. - تم تمويل منجم (منجم) المكافآت بميزانية التدفق الكاملة.
- تم استنزاف ATA المكافأة للمُنشئ بهذا المبلغ.
Deposit (v6)
Stake amount من نعناع الحصة.
الوسائط
| # | الاسم | W | S |
|---|---|---|---|
| 1 | user | W | S |
| 2 | user_ledger | W | |
| 3 | farm_state | W | |
| 4 | farm_authority | ||
| 5 | staking_vault | W | |
| 6 | user_staking_ata | W | |
| 7..(7+n) | reward_vault_{i} | W | |
| … | user_reward_ata_{i} | W | |
| last−2 | system_program | ||
| last−1 | token_program | ||
| last | associated_token_program |
user_ledger غير موجود، يضيف SDK بادئة CreateAccount-style ix؛ يمكن لبرنامج v6 أيضًا إنشاؤه بكسل مرة واحدة بالنظر إلى حساب البرنامج النظامي. نمط الحسابات المتبقية: لكل مكافأة نشطة، أضف (reward_vault, user_reward_ata) حتى تتمكن التسوية من الدفع.
التأثير
- تحديث
reward_per_share_x64[i]لكل تدفق مكافأة نشط باستخدام صيغة التحديث الكسول. - حساب
pending_i = user_ledger.deposited × reward_per_share_x64[i] / 2^64 − user_ledger.reward_debts[i]. - نقل
pending_iمنreward_vault_{i}إلىuser_reward_ata_{i}. - نقل
amountنعناع الحصة منuser_staking_ataإلىstaking_vault. - تحديث
user_ledger.deposited += amountوإعادة التقاطreward_debts[i]. - تحديث
farm_state.total_staked += amount.
amount > 0للحصة الحقيقية (v6 يمنعamount = 0— استخدمHarvestللمطالبة فقط).- يحتفظ
user_staking_ataبـamountعلى الأقل. - يحتفظ كل منجم مكافأة نشط بـ pending المستحق لهذا المستخدم على الأقل.
Withdraw (v6)
Unstake amount.
الوسائط
Deposit.
التأثير — نفس التسوية مثل Deposit، ثم نقل نعناع الحصة مرة أخرى للمستخدم: staking_vault → user_staking_ata. ينخفض كل من total_staked و user_ledger.deposited.
الشروط المسبقة
amount ≤ user_ledger.deposited.- المزرعة لم تتوقف عن العمل.
Harvest (v6)
المطالبة بالمكافآت المعلقة دون تغيير الحصة.
الوسائط — لا توجد.
الحسابات — نفس Deposit، بدون حركة على جانب الحصة.
التأثير — تحديث reward_per_share_x64[i]، دفع pending_i، إعادة التقاط reward_debts[i]. بدون تغيير في total_staked أو deposited.
AddReward (v5/v6)
إضافة تدفق مكافأة جديد إلى مزرعة موجودة بها فتحة غير مستخدمة.
الوسائط
- توجد فتحة حرة (
reward_info_count < 5على v6،< 2على v5). open_time ≥ now(قد يكون في المستقبل) أو يُسمح بـopen_time < nowفقط إذا سمح برنامج الإصدار — v6 يفعل، v5 لا.
- تم تهيئة التدفق الجديد في الفهرس
reward_info_count،reward_info_count++. - يتم جمع منجم المكافأة بميزانية التدفق الكاملة من ATA المستدعي.
RewardAlreadyExists إذا تضارب النعناع مع فتحة موجودة.
SetRewards (v5/v6)
توسيع أو زيادة تدفق مكافأة موجود. لا يمكن تغيير النعناع؛ لا يمكن تقصير end_time؛ لا يمكن خفض emission_per_second_x64 بمجرد تشغيله.
الوسائط
- التدفق لا يزال قيد التشغيل (
reward_state == 1). new_end_time ≥ current end_time.- الميزانية الإضافية المطلوبة
(new_emission × new_duration − already_emissioned)موجودة في ATA المُرسل ويتم نقلها إلى منجم المكافأة بواسطة التعليمة.
SetRewards مع مجموعة وسائط أصغر (بدون تغييرات في الثانية على التدفقات النشطة).
RestartRewards (v5/v6)
إعادة تشغيل تدفق بعد مرور end_time. من الناحية المفاهيمية، نفس AddReward لنعناع يحتوي بالفعل على فتحة.
الوسائط — شكل متطابق لـ AddReward في هذا الفهرس.
الشروط المسبقة
reward_state == 2(انتهى).- المستدعي هو
reward_senderللفتحة (v6) أو مالك المزرعة (v5).
WithdrawReward (v5/v6)
تنظيف إداري لرصيد منجم المكافآت غير المطالب به بعد انتهاء التدفق وحصول جميع المراهنين على فرصة للحصاد.
الوسائط
- التدفق انتهى (
reward_state == 2). reward_total_emissioned == reward_claimed + vault_balance(لا شيء مستحق حاليًا).
reward_sender_ata. لا يمنع البرنامج السحب بينما لا يزال لدى المراهنين مطالبات معلقة؛ يُتوقع من المسؤول حصاد نيابة عن المراهنين المتأخرين أولاً (أو السماح لهم بالحصاد). إذا قمت بالمسح مبكرًا، يفقد المستخدمون الوصول إلى مكافآتهم غير المطالب بها. لا تستدعِ هذا مبكرًا.
تباينات v5
DepositوWithdrawلهما نفس الشكل مثل v6 لكنهما يستخدمان ما يصل إلى 2 فتحة مكافآت وreward_per_shareهوu128(نقطة ثابتة بأساس مختلف).CreateAssociatedLedgerمكالمة منفصلة مطلوبة قبل أولDeposit؛ دمج v6 هذا.AddRewardمتاح،Harvestليس كذلك (استخدمDeposit 0).
تباينات v3
- تدفق مكافأة واحد. لا
AddReward، لا فتحة ثانية. Deposit 0هو الطريقة الوحيدة للمطالبة.- يجب استدعاء
CreateUserLedgerقبل أولDeposit.
مصفوفة تغيير الحالة
| التعليمة | total_staked | user.deposited | reward_per_share | مناجم المكافآت |
|---|---|---|---|---|
CreateFarm | 0 | — | 0 | ممول من قبل المنشئ |
Deposit(n) | +n | +n | تحديث | −pending (مدفوع) |
Withdraw(n) | −n | −n | تحديث | −pending |
Harvest | — | — | تحديث | −pending |
AddReward | — | — | — | +ميزانية جديدة |
SetRewards | — | — | — | +ميزانية دلتا |
RestartRewards | — | — | — | +ميزانية |
WithdrawReward | — | — | — | −باقي |
الخطوات التالية
products/farm-staking/code-demos— أمثلة TypeScript.products/farm-staking/accounts— تخطيطاتFarmStateوUserLedgerوUserStake.reference/error-codes— تعداد خطأ المزرعة.
- وحدة Raydium SDK v2
Farm - مصدر برنامج مزرعة Raydium (v3 / v5 / v6)


