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

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.

هذه الصفحة مُترجَمة آليًا بواسطة الذكاء الاصطناعي. النسخة الإنجليزية هي المرجع المعتمد.عرض النسخة الإنجليزية →

ما هي المزرعة

المزرعة هي برنامج منفصل على السلسلة يوزع واحد أو أكثر من رموز المكافآت على الحسابات التي تقوم برهن رمز الرهن. رمز الرهن هو دائماً تقريباً رمز LP صادر عن CPMM أو AMM v4 أو حمام زوج قديم، لكن المزارع ذات الأصول الفردية (رهن SOL أو RAY أو رمز مشروع مباشرة) مدعومة وتُستخدم في عدد صغير من البرامج طويلة المدى. الخصائص الرئيسية:
  • قائم على الإصدار، وليس على الرسوم. على عكس تدفقات المكافآت المدمجة في CLMM، فإن مكافآت المزرعة لا تُرتبط بحجم المبادلات أو نشاط الحمام. يودع منشئ المزرعة الميزانية مقدماً وتُصدرها بمعدل ثابت في الثانية حتى تنتهي.
  • مستقلة عن الحمام. الحمام لا يعرف أن المزرعة موجودة. نقل LP بين المحافظ لا يخطر المزرعة؛ يجب على المستخدم أن يقوم بسحب نشط من المزرعة أولاً. وبالمثل، السحب من الحمام لا يسحب من المزرعة.
  • دفتر أحوال لكل مستخدم، لكل مكافأة. كل مراهن لديه حساب UserStake (أو “دفتر أحوال”) لكل مزرعة يتتبع مبلغ رهنهم واللقطة الخاصة بهم لعداد المكافأة لكل حصة لكل من تدفقات مكافآت المزرعة.
  • مكافآت متعددة. المزرعة v5 تدعم ما يصل إلى مكافأتين؛ v6 تدعم ما يصل إلى 5. كل مكافأة لها خزانة خاصة بها ومعدل لكل ثانية ووقت بدء ووقت نهاية.

الإصدارات الثلاثة النشطة

أطلقت Raydium ثلاثة إصدارات من برنامج المزرعة. جميعها نشطة، وكل واحدة لها نظام PDA وقائمة تعليمات خاصة بها. يجب على المدمجين معاملتها كثلاثة برامج منفصلة تشترك في نموذج مفاهيمي.
الإصدارموقع معرّف البرنامجالحد الأقصى للمكافآتالاختلافات البارزة
v3راجع reference/program-addresses1أقدم مخطط. المزارع الأقدم (RAY-USDC، SOL-USDC) لا تزال تعمل من خلاله.
v5راجع reference/program-addresses2أضافت فتحة المكافأة الثانية وعمليات إعادة الملء على غرار AddReward.
v6راجع reference/program-addresses5الإصدار الحالي. فتحات موسّعة، إدارة أنظف، يدعم farming لمواقع CLMM عبر محول خاص بـ v6 (نادر في الممارسة العملية).
يعرض SDK raydium.farm كواجهة موحدة — يتم استنتاج الإصدار من مالك حساب المزرعة. عند بناء تكاملات على السلسلة يجب عليك الإرسال يدويًا.

محاسبة المكافأة لكل حصة

يستخدم برنامج المزرعة نمط “master-chef” القياسي المرئي في جميع عقود العائد في DeFi:
reward_per_share := total_rewards_distributed_by_stream / total_staked
pending(user)    := user.staked × (reward_per_share − user.reward_debt)
  • reward_per_share يتم تخزينها في حساب المزرعة كعداد نقطة ثابتة (Q64.64 في v5+، Q56.8 في v3). تنمو فقط.
  • user.reward_debt هي لقطة من reward_per_share في آخر تفاعل للمستخدم. إنها ليست ديناً يدين به المستخدم؛ إنها إزاحة تُستخدم لحساب التراكمات المستقبلية.
  • في Deposit و Withdraw، تقوم المزرعة أولاً بتسوية المكافآت المعلقة (حيث تحتسب user.pending_reward أو ترسلها مباشرة إلى ATA للمستخدم، حسب الإصدار)، ثم تحدث user.reward_debt للعداد الحالي.
  • في Harvest، تدفع المزرعة pending_reward وتلتقط reward_debt مرة أخرى.
يدخل معدل الإصدار في الثانية المحاسبة عبر تحديث كسول:
elapsed        := min(now, reward.end_time) − reward.last_update_time
new_emissions  := reward.per_second × elapsed
if total_staked > 0:
    reward_per_share += new_emissions / total_staked
reward.last_update_time := now
كسول: لا توجد تعليمات “كل ثانية.” يتم تحديث العداد في كل مرة يلمس أحد ما المزرعة (Deposit، Withdraw، Harvest، تحديث إداري). المزارع التي لا تملك نشاطاً تراكم فجوة متزايدة يتم إغلاقها في التفاعل التالي.

رمز الرهن مقابل رمز المكافأة

رمز الرهن يُحتفظ به في ضمان، وليس محروق. عندما يرهن مستخدم 100 LP، تنقل المزرعة 100 LP من ATA المستخدم إلى خزان رهن المزرعة. في Withdraw، تنقل المزرعة 100 LP مرة أخرى. المزرعة لا تستدعي أبداً الحمام. يتم دفع رموز المكافآت من الخزانات الممولة مسبقاً من قبل المنشئ. عندما ينشئ المنشئ مزرعة، يودع الميزانية الكاملة للمكافآت (على سبيل المثال، 1000000 RAY + 500000 USDC) في خزاني المكافآت. برنامج المزرعة لا يسك رموز جديدة؛ فهو ببساطة يوزع ما هو في الخزان على مدى مدة التدفق. إذا تم استنزاف الخزان قبل end_time، تتوقف الانبعاثات.

جداول الانبعاث

لكل تدفق مكافآت ثلاث معاملات زمنية:
  • start_time — الطابع الزمني UNIX الذي تبدأ الانبعاثات. قبل هذا، لا تراكم.
  • end_time — الطابع الزمني الذي تتوقف الانبعاثات. بعد هذا، reward_per_share لم تعد تنمو من هذا التدفق.
  • per_second — معدل الانبعاث بينما start_time ≤ now < end_time.
يمكن توسيع المكافأة (دفع end_time للأمام، إعادة ملء الخزان) عبر AddReward / SetRewards على v5 / v6. يمكن إعادة تشغيلها بعد end_time عبر RestartRewards. لا يمكن تقصيرها بدون تعاون إداري.

ما لا تكونه المزارع

  • ليست موزع رسوم. CPMM و CLMM يجمعان رسوم التداول مباشرة في حالة الحمام. المزارع لا تلمس رسوم الحمام. المسار الوحيد من رسوم الحمام إلى حامل الرمز هو استرجاع LP أو CollectFee في CLMM.
  • ليست تلقائية. يجب رهن LP بشكل صريح لكسب مكافآت المزرعة. حاملو LP الذين يتركون الرموز في محفظتهم لا يكسبون شيئاً من المزرعة.
  • ليست قابلة للاستبدال. كل حساب UserStake مرتبط بزوج واحد من (farm, user). لا يمكنك نقل رهنك إلى محفظة أخرى دون إلغاء الرهن أولاً.
  • لا تتوافق مع مواقع CLMM مباشرة. قدمت المزرعة v6 محول CLMM، لكن في الممارسة العملية تستخدم حمامات CLMM تدفقات المكافآت المدمجة الخاصة بها (راجع products/clmm/fees) بدلاً من انبعاثات المزرعة.

عندما تكون المزارع الأداة الصحيحة

استخدم مزرعة عندما تريد:
  • تحفيز LP لأحد حمامات CPMM أو AMM v4 في مشروعك برمز خارجي (رمز مشروعك، رمز شريك، إلخ).
  • تشغيل برنامج رهن على رمز أصل فردي (الكلاسيكية “رهن RAY، كسب RAY”) دون نشر عقدك الخاص.
  • إضافة مكافآت إضافية فوق حمام موجود دون الحاجة إلى وصول إداري لهذا الحمام.
استخدم تدفقات المكافآت المدمجة في CLMM بدلاً من ذلك عندما يكون حمامك CLMM. لديهم اقتصاديات متطابقة لكنهم يشاركون في محاسبة نمو الرسوم داخل المركز (المراكز داخل النطاق تكسب موزونة، المراكز خارج النطاق لا تكسب) ولا تتطلب من المستخدمين نقل NFT موقعهم.

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

  • accounts — تخطيط حالة على السلسلة الكامل لكل إصدار.
  • instructions — كل تعليمة مزرعة مع قائمة حسابها والشروط المسبقة واللاحقة.
  • code-demos — أمثلة TypeScript للرهن والحصاد وإنشاء مزرعة جديدة.

الخطوات التالية

المصادر: