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.9e6 — أي 9.9 USDC بالوحدات الأصلية ذات الستة أرقام العشرية، وهي الوحدات نفسها التي بها 6.827e9 أعلاه ⇒ s ≈ 9.06e7 رموز أساس مشتراة.
  • رسوم 1% (0.1 USDC) مقسمة: lp 0.06، creator 0.02، protocol 0.02. يبقى حصة lp في quote_vault؛ يتم توجيه الاثنين الآخرين إلى عدادات الاستحقاق الخاصة بهم.
الشراء عند بيع 75% (الاقتراب من التخرج): نفس 10 USDC يشتري أساسًا أقل بكثير الآن لأن المنحنى حاد. والحل عند s₀ = 750e6 مع quote_in_after_fee = 9.9e6 يعطي ∆s ≈ 4.4e5 — تقليل ~200× في الأساس لكل 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 في البرنامج، ولا حد للتكرارات، ولا خطأ NotConverged.

الانتقال إلى CPMM

عندما يتم تشغيل Graduate:
بالنسبة لمنحنى المنتج الثابت — وهو افتراضي LaunchLab والنوع الحيّ الوحيد — يكون cpmm_initial_price مساويًا بالضبط لـ price(base_sold)، أي السعر الهامشي للمنحنى في لحظة الانتقال، لذا فإن المراقب الذي ينتقل من واجهة المنحنى إلى واجهة CPMM لا يرى قفزة. أما بالنسبة لمنحنى السعر التربيعي فالأمر ليس كذلك: فالمتوسط المتكامل يقع أعلى من السعر الهامشي (بعامل 4/3 في المثال أعلاه)، لذا يُتوقع وجود قفزة عند الانتقال.

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

المصادر: