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

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

أسماء الحقول في بنية Rust تطابق حقول PoolState الموصوفة في accounts؛ الوحدات أعلاه مفاهيمية.

منحنى constant-product مع احتياطيات افتراضية (curve_type = 0)

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

منحنى fixed-price (curve_type = 1)

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

منحنى linear-price (curve_type = 2)

يزداد السعر خطيًا مع base_sold:
التكلفة المتكاملة:
تربيعي في base_sold — يدفع المشترون الأوائل قريبًا من الصفر، والمشترون المتأخرون يدفعون أكثر بكثير، مع ارتفاع السعر الهامشي دائمًا بميل ثابت. التنفيذ على السلسلة يوجد في curve/linear_price.rs.

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

عتبة التخرج

يتم حساب quote_reserve_target عند Initialize كالاقتباس المطلوب لدفع base_sold من 0 إلى base_supply_graduation:
يتخرج الإطلاق بمجرد 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):
السعر عند التخرج (s = 800_000_000):
الاقتباس المطلوب للوصول إلى التخرج (التكلفة المتكاملة):
إذن ≈ 6.827 وحدة اقتباس أصلية (في أي نعناع اقتباس 6-عشري مكون، على سبيل المثال ~6,827 USDC إذا كان الاقتباس 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:
  • 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_initial_price هو price(base_sold) ميكانيكيًا (إنه السعر الهامشي للمنحنى في لحظة الانتقال). تفتح مجموعة CPMM بالضبط بهذا السعر، لذا فإن المراقب الذي ينتقل من واجهة المنحنى إلى واجهة CPMM لا يرى قفزة.

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

المصادر: