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

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.

هذه الصفحة مُترجَمة آليًا بواسطة الذكاء الاصطناعي. النسخة الإنجليزية هي المرجع المعتمد.عرض النسخة الإنجليزية →
يدعم LaunchLab ثلاثة أشكال منحنيات يتم اختيارها عند Initialize: constant-product (الشكل الأكثر شيوعًا، صيغة الاحتياطي الافتراضي للمنحنى x · y = k القياسي)، linear-price، وfixed-price. صيغة عتبة التخرج موحدة عبر جميع الأشكال الثلاثة. تتناول هذه الصفحة رياضيات منحنى constant-product بالتفصيل؛ يتم تلخيص الأشكال الخطية والثابتة في النهاية.

المعاملات المخزنة على LaunchState

الحقلالمعنى
curve_type0 = constant-product (الاحتياطيات الافتراضية)، 1 = fixed-price، 2 = linear-price.
base_supply_maxإجمالي رموز الأساس التي يمكن للمنحنى أن يُصدرها على الإطلاق.
base_supply_graduationرموز الأساس التي يجب بيعها للوصول إلى التخرج. عادةً 0.8 × base_supply_max؛ الـ 20% المتبقية تصبح LP الأولي لمجمع ما بعد التخرج.
quote_reserve_targetكمية الاقتباس التي تؤدي إلى التخرج. مشتقة عند Initialize من معاملات المنحنى + base_supply_graduation.
virtual_base / virtual_quoteبذور الاحتياطي الافتراضي لمنحنى constant-product.
migrate_typeيختار هدف التخرج: AMM v4 مقابل CPMM. انظر instructions.
fees.buy_numerator / buy_denominatorرسم الشراء، مثلاً 100 / 10_000 = 1.00%.
fees.sell_numerator / sell_denominatorرسم البيع. غالبًا ما يكون مماثلاً للشراء.
fees.protocol_share, fees.creator_share, fees.lp_shareتقسيم الرسوم أعلاه، بمجموع المقسوم عليه.
أسماء الحقول في بنية Rust تطابق حقول PoolState الموضحة في accounts؛ الوحدات أعلاه مفاهيمية.

منحنى ثابت المنتج مع الاحتياطيات الافتراضية (curve_type = 0)

المنحنى الافتراضي والأكثر استخدامًا. جميع عمليات الإطلاق على غرار Pump تستخدم هذا الشكل. يتظاهر المنحنى بأن هناك احتياطي اقتباس افتراضي V_q واحتياطي أساس افتراضي V_b من البداية (مخزن كـ virtual_quote و virtual_base على PoolState)، لذا المجمع الفعلي يبدو وكأنه CPMM بهذه الاحتياطيات. تتبع عمليات الشراء رياضيات x · y = k:
(V_q + real_quote_in_after_fee) × (V_b + real_base_remaining − base_out) = V_q × V_b
محلول بـ base_out:
base_out = (V_b + real_base_remaining) × quote_in_after_fee / (V_q + real_quote_in_after_fee)
السعر الفعلي عند base-sold s:
price(s) = (V_q + real_quote_in(s)) / (V_b + real_base_remaining(s))
نفس ثابت x · y = k الذي يطبقه LaunchLab قبل التخرج هو حرفيًا منحنى CPMM (أو AMM v4) بعد التخرج، لذا مرور التخرج سلس آليًا: السعر الهامشي عند base_sold = base_supply_graduation يساوي السعر الذي يفتح به مجمع ما بعد التخرج مع (quote_vault, base_vault_remaining) كاحتياطياته.

منحنى السعر الثابت (curve_type = 1)

منحنى بسعر ثابت. كل عملية شراء/بيع تحدث بسعر ثابت، قابل للتكوين عند Initialize:
price(s) = virtual_quote / virtual_base    (ثابت لجميع s)
مفيد لعمليات الإطلاق العادلة حيث يريد الفريق تسعيرًا موحدًا لجميع المشاركين بغض النظر عن وقت شرائهم. يُطلق التخرج عندما يتم بيع base_supply_graduation (علاقة التكلفة الخطية تجعل اشتقاق quote_reserve_target مباشرًا).

منحنى السعر الخطي (curve_type = 2)

السعر يزداد خطيًا مع base_sold:
price(s) = a · s     (a = slope، مشتق من virtual_base / virtual_quote)
التكلفة المتكاملة:
cost(s_0, s_1) = a · (s_1² − s_0²) / 2
تربيعي في base_sold — المشترون الأوائل يدفعون قريبًا من الصفر، المشترون المتأخرون يدفعون أكثر بكثير، مع ارتفاع السعر الهامشي دائمًا بميل ثابت. التطبيق على السلسلة يعيش في curve/linear_price.rs.

مقارنة أشكال المنحنى

price
  │   linear (steep tail)               linear (curve_type = 2)
  │       ╱
  │      ╱
  │     ╱            const-product (curve_type = 0)
  │    ╱            ╱
  │   ╱           ╱
  │  ╱         ╱
  │ ╱       ╱
  │╱_____╱_______________________  fixed-price (curve_type = 1)
  └──────────────────────────────── base_sold
  0                  S_grad         S_max

عتبة التخرج

يتم حساب quote_reserve_target عند Initialize كقيمة الاقتباس المطلوبة لنقل base_sold من 0 إلى base_supply_graduation:
quote_reserve_target = cost(0, base_supply_graduation) × (1 + buy_fee_rate)
                                                         ^^^^^^^^^^^^^^^^^
                                                         تقريبي؛ الشكل الدقيق
                                                         يطابق تقريب الرسوم
                                                         المستخدم على Buy.
يتخرج الإطلاق بمجرد quote_vault.balance ≥ quote_reserve_target. نظرًا لأن عمليات الشراء تأتي بأحجام منفصلة، قد يتجاوز الرصيد الفعلي عند التخرج الهدف قليلاً — يصبح الفائض سيولة إضافية على جانب الاقتباس في مجمع CPMM الناتج.

مثال عملي — إطلاق تربيعي

المعاملات:
  • base_supply_max = 1_000_000_000 (مليار رمز أساس، 6 منازل عشرية)
  • base_supply_graduation = 800_000_000 (بيع 80% يؤدي إلى التخرج)
  • k = 40 (مقياس السعر)
  • الرسوم: 1% شراء، 1% بيع، تقسيم lp:creator:protocol = 60:20:20.
السعر الأولي (s = 0): 0 (المربع البحت يبدأ من صفر). السعر عند بيع 50% (s = 500_000_000):
price = 40 × (500e6 / 1e9)² = 40 × 0.25 = 10  (اقتباس لكل أساس، 6 منازل عشرية)
السعر عند التخرج (s = 800_000_000):
price = 40 × (800e6 / 1e9)² = 40 × 0.64 = 25.6
قيمة الاقتباس المطلوبة للوصول إلى التخرج (التكلفة المتكاملة):
cost(0, 800_000_000) = (40 / (3 × 1e18)) × ((800e6)³ − 0)
                     = (40 / 3e18) × 5.12e26
                     ≈ 6.827e9
إذاً ≈ 6.827 وحدة اقتباس أصلية (في أي عملة اقتباس 6 منازل عشرية محددة، مثلاً ~6,827 USDC إذا كان الاقتباس USDC). الرسم المطبق على الأعلى:
quote_reserve_target ≈ 6.827e9 × 1.01 ≈ 6.895e9  (6,895 USDC)
أول عملية شراء بـ 10 USDC:
  • الحالة الافتراضية: s = 0، quote_vault = 0.
  • اطرح الرسم: quote_after_fee = 10 × 0.99 = 9.9.
  • حل (40 / (3e18)) × s³ = 9.9s ≈ 6.22e6 رموز أساس مشتراة.
  • تقسيم رسم 1% (0.1 USDC): lp 0.06، creator 0.02، protocol 0.02. يبقى حصة lp في quote_vault؛ الحصتان الأخريان توجهان إلى عدادات الاستحقاق الخاصة بهما.
الشراء عند بيع 75% (الاقتراب من التخرج): نفس 10 USDC تشتري أساس أقل بكثير الآن لأن المنحنى حاد. يعطي حل Newton عند s₀ = 750e6 مع quote_in_after_fee = 9.9 تقريبًا ∆s ≈ 0.4e6 — تخفيض ~15× في الأساس لكل USDC مقارنة بأول عملية شراء.

ميكانيكا الرسوم خلال مرحلة المنحنى

على كل Buy:
gross_fee      = ceil(quote_in_gross × buy_numerator / buy_denominator)
lp_share       = gross_fee × fees.lp_share / fees.total_share
protocol_share = gross_fee × fees.protocol_share / fees.total_share
creator_share  = gross_fee × fees.creator_share / fees.total_share
  • يُترك lp_share في quote_vault. هذا ما يجعل المنحنى الفعلي أكثر إحكامًا (احتياطي اقتباس أكثر ضد نفس إمداد الأساس).
  • تزيد protocol_share قيمة LaunchState.state_data.protocol_fees_quote.
  • تزيد creator_share قيمة LaunchState.state_data.creator_fees_quote.
على Sell ينطبق نفس التقسيم لكن الرسم يُؤخذ من quote_out الخارج. يتم مسح كلا العدادين عبر CollectFees (مسؤول أو منشئ، كل واحد إلى عدّاده الخاص).

الدقة

  • كميات جانب الأساس: u64.
  • كميات جانب الاقتباس: u64.
  • المكعبات / المنتجات الوسيطة: u128.
  • حلول Newton لـ “شراء اقتباس دقيق” و “بيع اقتباس دقيق” تكرر في u128 بنقطة ثابتة مع عدد تكرار أقصى قابل للتكوين (افتراضي 10). وضع الفشل هو NotConverged — نادر خارج حالات الحافة بالقرب من التخرج.

التسليم إلى CPMM

عند حدوث Graduate:
cpmm_quote_reserve = quote_vault − swept_protocol_fees − swept_creator_fees
cpmm_base_reserve  = base_vault                       // أي base_supply_max − base_sold
cpmm_initial_price = cpmm_quote_reserve / cpmm_base_reserve
للمنحنى التربيعي، cpmm_initial_price هو price(base_sold) آليًا (إنه السعر الهامشي للمنحنى في لحظة التسليم). يفتح مجمع CPMM بدقة بهذا السعر، لذا المراقب الذي يتحول من واجهة المنحنى إلى واجهة CPMM لا يرى قفزة.

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

المصادر: