Skip to main content
هذه الصفحة مُترجَمة آليًا بواسطة الذكاء الاصطناعي. النسخة الإنجليزية هي المرجع المعتمد.عرض النسخة الإنجليزية →
برامج منتجات Raydium هي أساسيات أكواد مستقلة، لكنها صُممت وفقًا لمجموعة مشتركة من الاتفاقيات. هذه الصفحة هي المرجع الموثوق لتلك الاتفاقيات. تصف فصول المنتجات الفردية كيفية تطبيق الاتفاقيات في حساباتها؛ هذه الصفحة تصف الاتفاقيات نفسها.

ما معنى “المشترك” هنا

ثلاث أنواع من المشاركة تعمل عبر قاعدة الأكواد:
  • مشاركة الاتفاقية. يستخدم كل برنامج نفس نمط اشتقاق PDA، وشكل تقسيم الرسوم نفسه، وفكرة حساب المراقبة نفسها — لكن كل منها ينفذها في برنامجه الخاص بذوره الخاصة.
  • مشاركة الحساب. عدد قليل من الحسابات هي حرفيًا نفس السجل عبر العديد من المجموعات (PDA السلطة العامة في CPMM، حسابات AmmConfig).
  • المشاركة خارج السلسلة. واجهة REST واحدة وحزمة TypeScript واحدة تخدم جميع البرامج الأربعة. يتفاعل المدمجون مع مضيف HTTP واحد وحزمة NPM واحدة بغض النظر عن البرنامج الذي ينتهي بهم الحال.
تغطي العناصر الخمسة الأساسية أدناه كل شيء يعبر حدود البرنامج.

1. PDAs السلطة

لكل برنامج Raydium PDA واحد بالضبط يمتلك خزائن الرموز الخاصة به. لا يحتفظ المستخدمون أبدًا بسلطة الخزينة مباشرة — PDA السلطة هو الموقّع الوحيد الذي يمكنه نقل الأموال للخارج، وهو يوقّع فقط عندما تخبره تعليمات برنامج صحيحة بذلك. النمط متطابق عبر المنتجات؛ البذور تختلف: بعض الأشياء تتبع من هذا:
  • بالنسبة إلى CPMM و CLMM، فإن PDA السلطة هو حساب عام — تستخدمه كل مجموعة من هذا النوع. إذا كنت تقوم بـ CPI في CPMM فأنت تحتاجه مرة واحدة، وليس لكل مجموعة.
  • بالنسبة إلى السلطات لكل مجموعة / لكل مزرعة، تشتق PDA من معرّف المجموعة/المزرعة. يقوم SDK بهذا في getPoolKeys / getFarmKeys؛ إذا كنت تدمج مباشرة، فأنت تشتق باستخدام findProgramAddressSync.
  • لا يمكن تغيير ملكية الخزينة. بمجرد إنشاء حساب رمز مع PDA السلطة كمالك، فقط هذا PDA — الذي يستدعيه البرنامج — يمكنه نقل الأموال للخارج. لا يوجد تجاوز إداري.
للحصول على البذور الدقيقة وتخطيطات ATA لكل برنامج، انظر products/cpmm/accounts، products/clmm/accounts، products/amm-v4/accounts، products/farm-staking/accounts، products/launchlab/accounts.

2. حسابات المسؤول والإعدادات

يشارك CPMM و CLMM نمط حساب الإعدادات يسمى AmmConfig: حساب عام صغير، مفهرس بـ u16، يحتفظ بمعدلات الرسوم والوجهات الإدارية التي تنطبق على طبقة رسوم كاملة. تربط المجموعات بإعداد عند الإنشاء ولا تعيد الربط أبدًا.
قواعد الطريق:
  • طبقات الرسوم عامة. عندما تقول مجموعة “هذه مجموعة 0.25%”، فهذا يعني أنها تربط بـ AmmConfig الذي كان trade_fee_rate فيه 0.25% عند وقت الإنشاء. لا يوجد تجاوز معدل لكل مجموعة.
  • يمكن تغيير الإعداد لكن المجموعات لا تتابع. إذا قام سلطة الإعداد بتحرير AmmConfig، فإن كل مجموعة موجودة مرتبطة بهذا الإعداد تلتقط المعدل الجديد على الفور. هذه ميزة وليست خطأ؛ هذه هي الطريقة التي تنتشر بها التغييرات الاقتصادية على مستوى البروتوكول دون هجرات لكل مجموعة.
  • disable_create_pool هو رافعة الإيقاف. عندما يتم إيقاف طبقة رسوم، تقوم multisig البروتوكول بتعيين هذا العلم — تستمر المجموعات الموجودة في العمل لكن لا يمكن لأي مجموعات جديدة اختيار الطبقة.
  • protocol_owner / fund_owner هم الموقّعون لاستدعاءات جمع الرسوم. تعيينهم إلى multisig هو ما يحد من سحب الرسوم. إنهم ليسوا عناوين الوجهة للرسوم نفسها؛ هذا هو protocol_fee_destination / fund_fee_destination على نفس الحساب.
لا يحتوي AMM v4 على AmmConfig — معاملات الرسوم الخاصة به لكل مجموعة، مشفرة بشكل ثابت عند الإنشاء. تحتوي Farm و LaunchLab على معادلاتهما الخاصة (FarmConfig، LaunchConfig) المغطاة في فصولهما الخاصة. جدول كامل لمن يمكنه تغيير ماذا موجود في security/admin-and-multisig. تقسيمات الرسوم الحالية التي تواجه المستخدم موجودة في ray/protocol-fees.

3. تقسيم رسوم البروتوكول / الصندوق / المنشئ

يتم تقسيم كل رسم مبادلة CPMM و CLMM عبر ما يصل إلى أربع وجهات في الطريق:
ميكانيكيًا:
  1. رسم التجارة يتراكم في المجموعة. يتم إزالة الرسم من جانب الإدخال للمبادلة والمبلغ بعد الرسم هو ما تراه رياضيات المنتج الثابت. هذا ما يعنيه “LP يكسب الرسم” — k يرتفع وكذلك قيمة الرمز المضمون لكل LP.
  2. يتم خصم أجزاء البروتوكول/الصندوق/المنشئ من هذا التراكم على جانب LP إلى حسابات عداد لكل مجموعة. تجلس على حالة المجموعة (protocol_fees_token{0,1}، fund_fees_token{0,1}، إلخ.) حتى يستدعي شخص ما تعليمات الجمع المقابلة. لا تغادر خزائن المجموعة حتى ذلك الحين؛ من منظور المبادلة، لا تزال “في المجموعة”.
  3. الجمع ينقلها للخارج. مسارات البروتوكول والصندوق تتطلب موقّع protocol_owner / fund_owner الخاص بهما من AmmConfig. تستخدم رسوم منشئ CPMM إما مسار CollectCreatorFee الموقّع من قبل المنشئ أو CollectCreatorFeePermissionless، والذي يمكن لأي دافع أن يشغله لكنه يصلح الوجهات إلى ATAs الكنسية للمنشئ.
بعض الملاحظات الحاملة للحمل:
  • نسب التقسيم تكون من رسم التجارة، وليس من التجارة. رسم تجارة 0.25% مع حصة بروتوكول 12% يعني أن البروتوكول يحصل على 0.25% × 12% = 0.03% من التجارة — وليس 12% من التجارة.
  • رسوم المنشئ موجودة فقط على مجموعات LaunchLab المتخرجة. مجموعات CPMM/CLMM القياسية لها تقسيم ثلاثي (LP / بروتوكول / صندوق). يضيف LaunchLab فتحة رابعة موجهة إلى من أطلق الرمز، مُعدّة عند Initialize وغير قابلة للتغيير.
  • AMM v4 ينقسم بطريقتين فقط، مشفرة بشكل ثابت لكل مجموعة: LP والبروتوكول. لا توجد فتحة صندوق، لا توجد فتحة منشئ.
  • الصندوق مقابل البروتوكول — كلاهما وجهات خزينة البروتوكول، لكن لديهما موقّعون مختلفون واستخدامات مقصودة مختلفة. يمول protocol تاريخيًا العمليات؛ fund هي الخزينة الأطول أجلاً. التقسيم بين الاثنين هو نفسه قابل للتعديل.
معدلات محددة موجودة في reference/fee-comparison و ray/protocol-fees.

4. حسابات المراقبة (حلقة TWAP)

يحتفظ كل من CPMM و CLMM بـ حساب مراقبة لكل مجموعة — حلقة ذاكرة مؤقتة بحجم ثابت من عينات (timestamp, cumulative_price) التي يمكن للعقود الأخرى استخدامها لاشتقاق TWAP مقاوم للتلاعب.
كيف يعمل:
  • كل مبادلة تستدعي update_observation. يقرأ البرنامج السعر الحالي، ويضربه في الثواني المنقضية منذ المراقبة السابقة، ويضيفه إلى العداد التراكمي. يستبدل الإدخال الجديد الفتحة الأقدم (بأسلوب حلقة الذاكرة المؤقتة).
  • TWAP على نافذة = (cumul[end] − cumul[start]) / (timestamp[end] − timestamp[start]). يختار المستهلكون ملاحظتين تحيط بالنافذة المرغوبة ويقسمان.
  • Raydium نفسها لا تستخدم TWAP للتسعير. تقرأ رياضيات AMM الاحتياطيات الفورية مباشرة. المراقبات هي خارجية — تدفع Raydium تكلفة كتابتها حتى تتمكن العقود الأخرى من القراءة.
  • AMM v4 لا يحتوي على حساب مراقبة. إنه أقدم من تصميم ObservationState؛ المدمجون الذين يريدون TWAP v4 يجب أن يحسبوا واحدًا خارج السلسلة من سجل السجلات.
تفاصيل التخطيط وحسابات الفهرسة موجودة في products/cpmm/accounts و products/clmm/accounts.

5. REST API + SDK + IDL

السطح خارج السلسلة هو ثلاثية واحدة يستخدمها كل منتج:
  • REST APIhttps://api-v3.raydium.io. عرض مفهرس يقرأ في الغالب لجميع حالة السلسلة بالإضافة إلى محرك الاقتباس. مضيف واحد، مخطط واحد.
  • TypeScript SDK@raydium-io/raydium-sdk-v2 على NPM. ينشئ ويوقّع معاملات لكل برنامج. يتحدث إلى API للاقتباسات/البيانات الوصفية، ويتحدث إلى Solana RPC لتحديثات الحالة قبل التوقيع.
  • سجل IDL — توجد Anchor IDLs لكل برنامج منشور في مستودع raydium-idl (JSON واحد لكل برنامج: CPMM، CLMM، LaunchLab). يستهلك TypeScript SDK هذه IDLs داخليًا؛ يعيد إنشاء عملاء Rust / Python من نفس الملفات.
الحد بينهم حاد: الخطأ الشائع هو إطعام مخرجات REST API مباشرة في معاملة. لا تفعل — أعد جلب حالة المجموعة/الموضع ذات الصلة من Solana RPC في الفتحة التي توقّع ضدها. يقوم SDK بهذا تلقائيًا للتدفقات من الطرف الأول؛ إذا تجاوزت SDK فيجب عليك القيام بذلك بنفسك. المرجع الكامل موجود في sdk-api/، مع سطح IDL على وجه التحديد في sdk-api/anchor-idl.

6. المفهرسات وموجزات الأسعار

يتم تغذية REST API بواسطة مفهرس Raydium الخاص، الذي يشترك في سجلات البرنامج من أسطول Solana RPCs ويكتب السجلات المنزوعة من الطبيعة في متجر SQL. نتيجتان للمدمجين:
  • المفهرس هو الشيء الوحيد الذي “يعرف عن” حالة البرنامج المتقاطع. ربط مجموعة CPMM بنظيرتها CLMM، حساب رقم الحجم 24 ساعة عبر إصدارات البرنامج، التقاط مزرعة مرتبطة برمز LP — كل ذلك هو عمل المفهرس. البرامج نفسها لا تفعل ذلك.
  • وقت توقف المفهرس هو وقت توقف API. إذا أرجع API بيانات قديمة أو فارغة، فالمفهرس هو المريب. حالة السلسلة غير متأثرة؛ يمكن للمدمجين الذين لديهم RPC خاص بهم و SDK الاستمرار في المعاملات.
موجزات الأسعار مسألة منفصلة. ينشر API حقل priceUsd على معظم استجابات المجموعة؛ يتم حسابها خارج السلسلة من لقطة من عرض المفهرس لاحتياطيات المجموعة وسعر مرجعي مقتبس (مجموعات USDC كمحور مشترك). إنه جيد بما يكفي لواجهة المستخدم؛ إنه ليس آمنًا للاستخدام كنبي على السلسلة. استخدم TWAP المراقبة لذلك.

ما هو غير مشترك

يستحق القائمة بشكل صريح، لأن القراء الجدد غالبًا ما يفترضون مشاركة أكثر مما هو موجود:
  • البرامج لا تستدعي بعضها البعض. مبادلة CPMM لا تقوم أبدًا بـ CPI في CLMM أو AMM v4. البرنامج الوحيد الذي يؤلف عدة AMMs هو برنامج AMM Routing — وهذا الواحد نفسه رقيق، فقط ينبعث CPIs في كل AMM بالتسلسل.
  • لا توجد سلطة ترقية مشتركة عبر البرامج. لكل برنامج على السلسلة مفتاح ترقية برنامج خاص به (multisig 3/4 بالإضافة إلى timelock 24 ساعة). لم يتم ربطهم.
  • لا توجد حالة مشتركة بين المزارع و AMMs. لا تعرف المزرعة أي LP تراهن من مجموعة CPMM، أو NFT موضع CLMM-mint، أو رمز SPL غير ذي صلة. يعامل برنامج المزرعة رمز الرهن كمعتم.
  • لا توجد تبعية نبي. التسعير هو احتياطيات السلسلة. لا يوجد بديل Pyth/Switchboard؛ لا يتحقق AMM من نبي قبل المقاصة.

المؤشرات

المصادر:
  • Raydium SDK v2 — مصدر الحقيقة لبذور PDA وتخطيطات الحسابات وتعريفات IDL.
  • سجل Raydium IDL — Anchor IDLs.
  • صفحات حسابات المنتجات المذكورة أعلاه.