Skip to main content
هذه الصفحة مُترجَمة آليًا بواسطة الذكاء الاصطناعي. النسخة الإنجليزية هي المرجع المعتمد.عرض النسخة الإنجليزية →
يغطي هذا الإدراج تحديثًا قادمًا لبرنامج LaunchLab. تم التحقق منه مقابل فرع الإصدار المحلي قبل النشر. تأكد من البرنامج المنشور قبل الاعتماد على الحسابات أو التعليمات الجديدة.
كانت المنصة قادرة بالفعل على تقييد أشكال الإطلاق التي قد يختارها منشئوها، من خلال PlatformConfig.curve_params. اختبرت تلك الآلية المساواة الدقيقة فقط: إما أن يثبت الإدخال حقلاً على قيمة واحدة أو يستخدم بطاقة برية مع قيمة حارسة. كما أنها احتفظت بـ 10 إدخالات على الأكثر عبر كل GlobalConfig تدعمه المنصة، وكانت موجودة على حساب PlatformConfig نفسه، مما زاد حجمه بـ 491 بايت لكل إدخال. تصادمت هذه الخصائص الثلاث مع إضافة البروتوكول للإعدادات. التعبير عن “هدف جمع أموال بين 50 و 200 SOL” احتاج إلى إدخال واحد لكل قيمة مسموحة وبالتالي كان مستحيلاً. تم فتح حدود GlobalConfig الخاصة بها على مصراعيها في الوقت نفسه — معدلات 1 bps، حدود الإمداد 99999 — بالضبط حتى تناسب كل منصة تحتها، مما ترك المنصات بدون طريقة لتضييقها. يستبدل هذا الإصدار قائمة البيضاء بـ قواعد المنحنى: حساب PlatformCurveRule واحد لكل زوج (منصة، إعدادات)، يحتوي على ما يصل إلى 10 مجموعات فحص، كل منها يحتوي على ما يصل إلى 25 قيد (field, op, value) على 19 معامل إطلاق، مع Eq، Gte، Lte، و Neq. يتم ربط القيود داخل المجموعة بـ AND، والمجموعات بـ OR. النطاق هو Gte بالإضافة إلى Lte على نفس الحقل. النموذج الكامل وتسعة كتيبات عملية موجودة على الصفحة الجديدة: products/launchlab/curve-rules.

ملخص سريع للمدمجين

  • PlatformConfig يحتفظ بحجمه وكل إزاحة حقل موجودة. إنه 944 بايت ثابت. curve_params اختفى؛ restrict_curve_param (u8curve_rule_manager (Pubkey)، و 4 بايتات التي احتلتها بادئة طول vec تخرج من الحشو، الذي ينكمش من 107 إلى 78.
  • يجب على فك التشفير إسقاط vec الزائدة. فك تشفير يتوقع لا يزال Vec<PlatformCurveParam> بعد الحشو سيقرأ الحقلين الجديدين كبايتات vec. كل شيء قبل الحشو لم يتأثر، لذا فك تشفير يقرأ فقط محافظ الرسوم والمعدلات يستمر في العمل دون تغيير.
  • بناة الإطلاق يحتاجون إلى حساب إضافي عندما تكون العلامة قيد التشغيل. بينما restrict_curve_param هو 1، يتطلب InitializeV2 و InitializeWithToken2022 قاعدة PDA في remaining_accountsحتى عندما لا يكون الحساب موجودًا، بحيث لا يمكن حذفه لتخطي الفحص. الاشتقاق: [b"platform_curve_rule", platform_config, global_config].
  • لا توجد منصة مقيدة بشكل افتراضي. restrict_curve_param هو 0 على كل حساب موجود، و 0 يعني أن البرنامج لا يقرأ القواعد على الإطلاق.
  • تتم إزالة تعليمتين: UpdatePlatformCurveParam و RemovePlatformCurveParam. تمت إضافة أربع: CreatePlatformCurveRule، UpdatePlatformCurveRule، RemovePlatformCurveRule، ClosePlatformCurveRule.
  • UpdatePlatformConfig يكتسب متغيرين: RestrictCurveParam(u64) في فهرس الإرسال 13 و CurveRuleManager(Pubkey) في 14. الفهارس الموجودة 0–12 لم تتغير.
  • تمت إضافة سبعة رموز خطأ، 60246030. 6020 CurveParamIsNotExist محتفظ به كعنصر نائب على الرغم من أن آخر مستدعي له اختفى، لذا لا يتحول شيء بعده. انظر reference/error-codes.
  • يلزم تحديث IDL. نوع حساب جديد، أربع تعليمات جديدة، اثنتان محذوفتان، متغيرا إرسال جديدان، سبعة رموز خطأ جديدة.
  • تحقق من القواعد بدون اتصال قبل إرسال أي شيء. يكشف SDK عن checkLaunchAgainstCurveRule (يعكس فحص وقت الإطلاق، السلوك الفاشل المغلق مضمن) و checkCurveRuleGroupWritable (يعكس التحقق من وقت الكتابة). كلاهما دوال نقية. انظر تحقق قبل الإرسال.
  • تدرب على devnet قبل التفعيل على mainnet. تشغيل restrict_curve_param يغير ما يمكن لمنشئيك فعله على الفور. التسلسل الموصى به — بما في ذلك إطلاق رمز واحد يجب رفضه، لإثبات أن منشئك يمر حقًا عبر حساب القاعدة — موجود في اختبر على devnet أولاً.

ما يمكن للقاعدة التعبير عنه لم تستطع قائمة البيضاء

تتضمن الحقول الـ 19 المعدلات الأربعة المشتقة — SellRateA، LockRate، MigrateRateA، FundRaisingRateB — وهذا ما يجعل القاعدة محمولة عبر الإمدادات بدلاً من تثبيتها على واحدة.

الإدارة المفوضة

PlatformConfig.curve_rule_manager هي محفظة ساخنة قد تنشئ وتحدث وتزيل وتغلق حسابات القاعدة لهذه المنصة. تحرير القواعس روتيني وعادة ما يكون مفتاح مسؤول المنصة متعدد التوقيع؛ هذا هو الحقل الذي يبقي متعدد التوقيع خارج الحلقة. اضبطه مرة واحدة من خلال UpdatePlatformConfig::CurveRuleManager. يحتفظ مسؤول المنصة بنفس القوة بالتوازي — يقبل البرنامج بإعادة اشتقاق PlatformConfig PDA من الموقّع — لذا فإن مفتاح المدير المفقود قابل للاسترجاع بتدوير الحقل. Pubkey::default() يعني مسؤول فقط. مفتاح مدير مخترق يمكنه تخفيف أو حذف قيود المعاملات واسترجاع إيجار حساب القاعدة. لا يمكنه قلب restrict_curve_param، لمس أي محفظة رسوم، حقل استحقاق، أو إعدادات CPMM، أو كسر حد GlobalConfig.

الإيجار والحجم

يتم إنشاء حساب القاعدة بدون مجموعة وتغيير حجمه عند كل تغيير، لذا تدفع المنصة مقابل القواعس التي كتبتها فعلاً، وإزالة مجموعة ترد الفرق إلى الموقّع. لأن الحجم ديناميكي، يجب على فك التشفير قراءة الطول الفعلي للحساب بدلاً من افتراض ثابت.

تكلفة الحساب عند الإطلاق

يعمل الفحص على كل إطلاق بينما يكون مفعلاً. تم قياسه من البداية إلى النهاية — اشتقاق PDA، مسح remaining_accounts، فك التسلسل، التقييم: يكلف القيد المشتق حوالي 223 CU مقابل حوالي 48 لقراءة حقل مباشر. حتى القاعدة المحملة بالكامل تبقى داخل ثلث ميزانية 200 000 CU الافتراضية لكل تعليمة. يتم تقييم المجموعات حتى تطابق واحدة، لذا فإن الطبقة الأكثر استخدامًا تنتمي أولاً.

الهجرة لمرة واحدة

تمت ترقية المنصات التي استخدمت قائمة البيضاء بواسطة البروتوكول في ممر واحد، قبل أن تكون العلامة متاحة للتشغيل. قامت سلطة مخصصة بتشغيل معاملة واحدة لكل منصة ترجمت كل إدخال قديم إلى مجموعات الفحص لحساب القاعدة للإعدادات التي سميتها، وحذفت الإدخالات من PlatformConfig، وقللت حجم هذا الحساب مرة أخرى إلى 944 بايت. حافظت الترجمة على الدلالات القديمة بالضبط: أصبح كل إدخال مجموعة واحدة، أصبح كل حقل غير حارس قيد Eq واحد، وأصبح إدخال كل الحراس — الذي طابق كل إطلاق — مجموعة بدون قيود، التي تطابق أيضًا كل إطلاق. كتبت الهجرة القواعس لكن لم تفعلها. بقيت المنصة المهاجرة غير مقيدة حتى ضبطت restrict_curve_param على 1 بنفسها. تمت إزالة تعليمات الهجرة من البرنامج الآن بعد اكتمال الممر، جنبًا إلى جنب مع الحقل القديم الذي قرأته.

ما لم يتغير

  • GlobalConfig. نفس التخطيط، نفس الحدود، نفس التعليمات. تضيق القواعس تلك الحدود ويتم فحصها جنبًا إلى جنب معها؛ لا يمكنهم أبدًا توسيع واحدة.
  • قوائم حسابات تعليمات الإطلاق والحجج. InitializeV2 و InitializeWithToken2022 تأخذ نفس الحسابات الثابتة والحجج نفسها. فقط remaining_accounts يكتسب إدخالاً، وفقط بينما تكون العلامة قيد التشغيل.
  • مسارات التجارة والتخرج والرسوم والاستحقاق. لم تتغير.
  • PlatformAllowConfig. لم تتغير وغير ذات صلة: تقرر أي إعدادات قد تستخدمها إطلاقات المنصة، بينما تقرر القاعدة أي معاملات داخل إعدادات. العلامتان مستقلتان.
  • رموز الخطأ 60006023. لم تتغير، 6020 مضمنة.
  • حجم PlatformConfig وإزاحات ما قبل الحشو. لم تتغير، لذا لا تحتاج الحسابات الموجودة إلى هجرة خاصة بها.

الصفحات المحدثة

  • products/launchlab/curve-rulesصفحة جديدة. النموذج ثلاثي المستويات، جداول الحقول الـ 19 والمشغل الـ 4، تسعة كتيبات، قيد نوع المنحنى، مساعدان فحص بدون اتصال، تسلسل البروفة devnet، الإدارة المفوضة، الإيجار، ترتيب الطرح، وتكلفة الحساب.
  • products/launchlab/platform-config — تم استبدال “قائمة معاملات المنحنى البيضاء” بـ “قواعد معاملات الإطلاق”؛ تم تحديث التخطيط لـ restrict_curve_param، curve_rule_manager، والحشو 78 بايت؛ تم إعادة كتابة جدول مسار التحديث، مقتطف مسار القراءة، والمخاطر.
  • products/launchlab/instructions — قسم “قواعد معاملات إطلاق المنصة” الجديد يغطي التعليمات الأربع وحساباتها وحججها وأخطاؤها؛ تم استبدال صف الجرد.
  • products/launchlab/accounts — تمت إضافة PlatformCurveRule إلى الجرد وحصلت على قسمها الخاص مع التخطيط الكامل وتحذير الحجم المتغير.
  • reference/error-codes — تم توثيق 60246030؛ تم شرح 6018 و 6020.