Skip to main content
هذه الصفحة مُترجَمة آليًا بواسطة الذكاء الاصطناعي. النسخة الإنجليزية هي المرجع المعتمد.عرض النسخة الإنجليزية →
لافتة الإصدار.ثبّت إصدار SDK في package.json الخاص بك. واجهة منحنى الربط تطورت بين الإصدارات الثانوية.

الإعداد

العروض التوضيحية هنا تعكس الملفات في raydium-sdk-V2-demo/src/launchpad. يتبع التمهيد config.ts.template من مستودع العرض التوضيحي:

إنشاء إطلاق

المصدر: src/launchpad/createMint.ts (وcreateBonkMintApi.ts لمتغير Bonk المدفوع بواسطة API) معظم الاقتصاديات الخاصة بالإطلاق ليست معاملات — فهي تأتي من GlobalConfig التي تربطها عبر configId، والـ SDK يملأ الباقي من معاملات API الافتراضية. تمرر هوية الـ mint، والإعدادات المراد الربط بها، و(اختياريًا) عملية شراء أولى:
ملاحظات:
  • لا يوجد معامل curveType، graduationFractionBps، initialK، quoteMint، openTime، fees أو postGraduationLpPolicy. شكل المنحنى و quote mint هما خصائص GlobalConfig التي تربطها؛ معدلات الرسوم تعيش على GlobalConfig و PlatformConfig؛ التخلص من LP عند التخرج هو إعداد PlatformConfig. انظر products/launchlab/instructions لمعرفة بالضبط ما يقبله InitializeV2.
  • symbol أطول من 10 أحرف و uri فارغ يتم رفضهما من جانب العميل قبل أي RPC.
  • تمرير transferFeeExtensionParams يحول المنشئ إلى InitializeWithToken2022 ويفرض migrateType على "cpmm".
  • يعيد المنشئ مصفوفة transactions؛ createOnly: false يضيف معاملة الشراء الأولى. استخدم دائمًا execute({ sequentially: true }) — يجب أن يكون الـ mint موجودًا قبل وصول الشراء.

جلب حالة الإطلاق

المصدر: src/launchpad/poolInfo.ts لا يوجد getLaunchById. معرّف المجموعة هو PDA من (programId, mintA, mintB)، و getRpcPoolInfo يعيد PoolState المفكك مع configInfo المرتبط به:
getRpcPoolsInfo({ poolIdList }) هي الشكل المجمع وتعيد poolInfoMap مفهرسة حسب معرّف المجموعة — استخدمها لعروض المحفظة بدلاً من الحلقات. إذا كنت تريد فك تشفير الحسابات الخام بنفسك، فإن LaunchpadPool.decode و LaunchpadConfig.decode يتم تصديرهما.

الشراء — إدخال quote دقيق

المصدر: src/launchpad/buy.ts مساعد الاقتباس خارج السلسلة هو Curve.buyExactIn، وهي طريقة ثابتة على فئة Curve المُصدَّرة — وليست طريقة على raydium.launchpad. منشئ المعاملة هو buyToken. كلاهما يحتاج إلى معدلات الرسوم الخاصة بالمنصة، التي تعيش على حساب PlatformConfig منفصل:
يمكنك تمرير minMintAAmount بشكل صريح بدلاً من slippage؛ حذف كليهما والـ SDK يحسب الحد من بيانات RPC المباشرة. shareFeeRate يجب ألا يتجاوز poolInfo.configInfo.maxShareFeeRate، وينطبق فقط عندما تمرر أيضًا shareFeeReceiver.

الشراء — إخراج base دقيق

المنشئ هو buyTokenExactOut، ومعاملات المبلغ هي outAmount (base التي تريدها) و maxBuyAmount (quote التي ستنفقها على الأكثر). Curve.buyExactOut({ poolInfo, amountA, ... }) هي معاينة خارج السلسلة المطابقة.
مفيد لواجهات المستخدم “اشتر بالضبط X tokens”. يرفض المنشئ outAmount من الصفر من جانب العميل، والبرنامج يعود إذا تحرك المنحنى بما يكفي بحيث يتجاوز متطلب الاقتباس maxBuyAmount.

البيع

المصدر: src/launchpad/sell.ts المنشئ هو sellToken (sellTokenExactOut لمتغير الإخراج الدقيق للاقتباس)، مع sellAmount و minAmountB اختياري. Curve.sellExactIn({ poolInfo, amountA, ... }) يعاينه.
مسار البيع على المنحنى متماثل مع مسار الشراء: تقليل real_a بمقدار sellAmount يعيد quote_out مساويًا للمنطقة المتكاملة تحت المنحنى بين real_a − sellAmount و real_a، مطروحًا منها رسم البيع. sellAmount يجب أن يكون أكبر من الصفر — يرفض المنشئ الصفر قبل أي RPC.

التخرج

التخرج ليس شيئًا يمكن لمدمج أن يشغله. لا يوجد raydium.launchpad.graduate، لا علم autoGraduate على منشئي الشراء، ولا حقل willGraduate على قيمة الإرجاع الخاصة بهم. على السلسلة، التخرج هو MigrateToCpswap (أو MigrateToAmm القديم)، وكلا التعليمات تقيد الموقّع الخاص بهما بمحفظة مسجلة على GlobalConfig الربط — migrate_to_cpswap_wallet و migrate_to_amm_wallet على التوالي. استدعاء من أي موقّع آخر يفشل مع InvalidOwner. إنه ليس بدون إذن، ولا يمكن لأي روبوت MEV أن يتسابق معه.
يتم تشغيل تلك المحافظ بواسطة crank التخرج الخاص بـ Raydium، لذا في الممارسة العملية تهبط الهجرة في ثوانٍ بعد تجاوز الحد الأدنى بغض النظر عمن قام بالشراء النهائي. من جانب المدمج، الشيء الوحيد الذي يجب فعله هو معاملة انتقال الحالة كحدث سريع: استطلع getRpcPoolInfo (أو اشترك عبر gRPC، أدناه) وبدّل واجهة المستخدم الخاصة بك من المنحنى إلى مجموعة CPMM الناتجة عندما يتغير status. انظر products/launchlab/instructions لقوائم الحسابات، ورسم الهجرة، وكيفية تقسيم LP عند التخرج.

جمع رسوم المنشئ

المصدر: src/launchpad/claimCreatorFee.ts (mint واحد) و collectAllCreatorFees.ts (مجمع) الطريقة هي claimCreatorFee (و claimMultipleCreatorFee للشكل المجمع). يتم تفتيشها بواسطة quote mint، وليس بواسطة إطلاق — استدعاء واحد يكتسح رسوم المنشئ المتراكمة للموقّع في هذا الـ mint عبر عمليات الإطلاق الخاصة به:
ينقل عداد رسم المنشئ المتراكم إلى ATA الخاص بالمنشئ على quote mint. يمكن استدعاؤه قبل أو بعد التخرج؛ استخدمه بشكل دوري بدلاً من انتظار رصيد ضخم يتراكم. لدى مشغلي المنصة منشئو claimPlatformFee / claimAllPlatformFee / claimVaultPlatformFee المتوازيون.

تتبع إطلاق عبر دورة حياته

بجمع كل شيء معًا، قد تبدو نصيحة المراقبة كالتالي:
استطلاع getRpcPoolInfo على مؤقت 10 ثوانٍ جيد لإطلاق واحد. بالنسبة لمفهرس، استخدم اشتراك gRPC أدناه بدلاً من ذلك — getRpcPoolsInfo({ poolIdList }) يجمع، لكن استطلاع مئات المجموعات لا يزال يحرق أرصدة RPC بدون فائدة.

مراقبة الإعدادات والمجموعات عبر gRPC

المصدر: src/grpc/launchpadPoolInfo.ts يشترك في برنامج LaunchLab عبر Yellowstone gRPC ويسجل كل تحديث GlobalConfig و PoolState مع برنامج الرمز الخاص بكل mint. مرشحا datasize على اشتراك accounts واحد يفصلان بين نوعي الحساب، لذا يغطي تيار واحد كليهما. العرض التوضيحي هو أقصر مرجع صحيح لتصنيف mints الإطلاق، والذي يجعل إصدار quote-mint Token-2022 ضروريًا:
  • يتم تصنيف المجموعات مباشرة من PoolState.token_program_flag، وفك تشفير bit0 للـ mint الأساسي و bit1 لـ quote mint بدون جلب mint على الإطلاق. اختبار البايت بالكامل مقابل 0 — والذي كان كافيًا بينما كانت quote mints قديمة فقط — يسيء قراءة mint أساسي قديم كـ Token-2022 كلما كان quote mint هو Token-2022.
  • لا يمكن تصنيف الإعدادات بهذه الطريقة: GlobalConfig يخزن عنوان quote mint الخاص به وعدم وجود علم برنامج، لذا يقرأ العرض التوضيحي مالك حساب الـ mint مرة واحدة ويخزنه مؤقتًا لكل mint.
كما أنه يتحقق من الاثنين ضد بعضهما البعض، وهو تأكيد مفيد للاحتفاظ به في مفهرسك الخاص. لاحظ أن create مقابل update يتم استنتاجه من ذاكرات التخزين المؤقت الخاصة بالعرض التوضيحي، والتي تم بذرها عند بدء التشغيل من getProgramAccounts؛ مع تعطيل هذا البذر، اقرأ “create” كـ “أول ظهور على هذا التيار”. وصول gRPC ليس جزءًا من سطح RPC العام — انظر src/grpc/README.md من مستودع العرض التوضيحي.

Rust CPI

استدعاء LaunchLab من برنامج Anchor الخاص بك نادر (معظم تكاملات الإطلاق هي TS-side فقط). إذا فعلت:
  • الصندوق هو raydium-launchpad (اسم lib raydium_launchpad)، الإصدار 0.2.0، وهو يعرض ميزة cpi. لا يوجد raydium_launchlab.
  • إنه غير منشور على crates.io — اعتمد عليه بمراجعة git، بنفس الطريقة التي تعتمد بها صناديق برنامج Raydium الأخرى.
  • نقاط دخول CPI سميت على اسم التعليمات على السلسلة، وليس على اسم طرق TypeScript الخاصة بـ SDK: buy_exact_in، buy_exact_out، sell_exact_in، sell_exact_out، claim_creator_fee، create_vesting_account، claim_vested_token. migrate_to_amm / migrate_to_cpswap يتم حراستهما بواسطة الموقّع لمحافظ هجرة GlobalConfig وليسا قابلين للاستدعاء من برنامج مدمج.
انظر sdk-api/rust-cpi لقواعد تثبيت الصندوق — على وجه الخصوص انقسام إصدار Anchor، الذي يقرر ما إذا كان يمكن لصندوق واحد أن يدخل CPI في كل من LaunchLab و CLMM.

الأخطاء الشائعة

  • الخلط بين أسماء التعليمات على السلسلة وأسماء طرق SDK. البرنامج لديه buy_exact_in / sell_exact_in؛ SDK لديه buyToken / sellToken. buyExactIn و sellExactIn موجودة فقط كـ طرق ثابتة على Curve، وتحسب اقتباسًا — فهي لا تبني معاملة.
  • نسيان extraSigners. createLaunchpad ينشئ mint الأساسي من keypair تنشئه، لذا يجب أن يوقع هذا keypair. حذف extraSigners: [pair] والمعاملة تفشل التحقق من التوقيع.
  • عدم اختيار quote mint. أنت لا تمرر واحدة. quote mint هو خاصية GlobalConfig التي تربطها عبر configId — getPdaLaunchpadConfigId(programId, quoteMint, curveType, index). لإطلاق ضد quote mint مختلف، ربط إعدادات مختلفة؛ raydium.api.fetchLaunchConfigs() يسرد الإعدادات المتاحة مع معاملات افتراضياتها.
  • حجم البيانات الوصفية. سلاسل uri الطويلة تدفع Metaplex CPI فوق الميزانية. احتفظ بـ uri تحت ~200 حرف — معظم بيانات JSON المستضافة على CDN تناسب بسهولة. symbol مقيد بـ 10 أحرف.
  • معاملة التخرج كسباق يمكنك الدخول فيه. إنه ليس كذلك — انظر التحذير أعلاه. واجهة المستخدم الخاصة بك يجب أن تعامل انتقالات status كأحداث سريعة، لأن crank Raydium تهبط الهجرة في ثوانٍ من تجاوز الحد الأدنى.

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

المصادر: