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

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.

هذه الصفحة مُترجَمة آليًا بواسطة الذكاء الاصطناعي. النسخة الإنجليزية هي المرجع المعتمد.عرض النسخة الإنجليزية →
حساب GlobalConfig هو حساب الإعدادات على مستوى البروتوكول. يمكن أن يكون هناك عدة منها — مفهرسة حسب (curve_type, index) — وكل إطلاق يختار واحدًا بالضبط في وقت Initialize. تصبح القيم الموجودة على GlobalConfig المختار بعد ذلك حدودًا صارمة لمعاملات الإطلاق. للتخصيص على مستوى المنصة (معدل الرسوم لكل منصة، أشكال المنحنيات المسموحة، تقسيمات NFT عند التخرج)، انظر products/launchlab/platform-config.

ما هو

GlobalConfig هو حساب PDA فريد لكل (curve_type, index) يحدد قواعد جانب البروتوكول التي يجب على كل إطلاق الامتثال لها:
  • نوع منحنى الربط المسموح به (curve_type).
  • معدل رسوم التداول الذي يفرضه المنحنى على كل عملية شراء وبيع.
  • رسوم الهجرة المفروضة عند التخرج.
  • حدود دنيا على العرض ومعدل القفل ومعدل البيع ومعدل الهجرة.
  • عملة الاقتباس (عادة SOL المرقومة أو USDC) — الأصل الذي يشتري به المستخدمون.
  • ثلاث محافظ على جانب البروتوكول: مالك رسوم البروتوكول، مالك رسوم الهجرة، ومحفظتا التحكم في الهجرة اللتان تصرحان بالتخرج إلى AMM v4 / CPMM.
  • علم اختياري (requires_platform_auth) يتحكم في المنصات التي يمكنها استخدام هذا الإعداد.
يتم إنشاء حسابات GlobalConfig وتحديثها بواسطة مسؤول برنامج LaunchLab (مفتاح المسؤول المشفر الذي يُستخدم عبر برامج Raydium المستندة إلى Anchor — انظر reference/program-addresses).

التخطيط

// states/config.rs
pub const GLOBAL_CONFIG_SEED: &str = "global_config";

#[account]
pub struct GlobalConfig {
    pub epoch:                   u64,         // recent_epoch tracker
    pub curve_type:              u8,          // 0 = ConstantProduct, 1 = FixedPrice, 2 = LinearPrice
    pub index:                   u16,         // discriminator within a curve_type
    pub migrate_fee:             u64,         // SOL paid on graduation
    pub trade_fee_rate:          u64,         // 1/1_000_000 of volume
    pub max_share_fee_rate:      u64,         // 100 bps cap on platform share fee
    pub min_base_supply:         u64,         // floor on Initialize supply (no decimals)
    pub max_lock_rate:           u64,         // ceiling on vesting locked / supply
    pub min_base_sell_rate:      u64,         // floor on base_supply_graduation / supply
    pub min_base_migrate_rate:   u64,         // floor on tokens that seed the post-graduation pool
    pub min_quote_fund_raising:  u64,         // floor on quote_reserve_target (with decimals)
    pub quote_mint:              Pubkey,
    pub protocol_fee_owner:      Pubkey,      // claims protocol fees via CollectFee
    pub migrate_fee_owner:       Pubkey,      // claims migration fees via CollectMigrateFee
    pub migrate_to_amm_wallet:   Pubkey,      // can sign MigrateToAmm
    pub migrate_to_cpswap_wallet:Pubkey,      // can sign MigrateToCpswap
    pub requires_platform_auth:  u8,          // 0/1 flag
    pub padding_alignment:       [u8; 7],
    pub padding:                 [u64; 15],
}
اشتقاق PDA:
const [globalConfig] = PublicKey.findProgramAddressSync(
  [
    Buffer.from("global_config"),
    Buffer.from(quoteMint.toBytes()),
    Buffer.from([curveType]),
    u16ToBytes(index),
  ],
  LAUNCHLAB_PROGRAM_ID,
);
(تحقق من ترتيب البذور الدقيق من حساب on-chain قبل التوقيع — تعليمات create_config للبرنامج هي مصدر الحقيقة.)

دلالات المجالات

curve_type و index

معًا يقومان بتحديد GlobalConfig بشكل فريد. يوجد واحد GlobalConfig لكل زوج (curve_type, index):
  • curve_type = 0 — منحنى الاحتياطي الافتراضي ذي المنتج الثابت. الخيار الافتراضي والأكثر استخدامًا.
  • curve_type = 1 — منحنى السعر الثابت.
  • curve_type = 2 — منحنى السعر الخطي.
index هو u16 يسمح للمسؤول بنشر عدة تكوينات لكل نوع منحنى (على سبيل المثال، واحدة برسوم أضيق، وواحدة برفع اقتباس أعلى). في Initialize، يوفر الإطلاق زوج (curve_type, index) والبرنامج يحمل GlobalConfig المطابق.

الرسوم

  • trade_fee_rate — يُقاس بـ 1/1_000_000 من حجم التداول. يُطبق على كل عملية شراء وبيع على المنحنى. يقوم protocol_fee_owner بالمطالبة بحصته عبر CollectFee.
  • migrate_fee — رسم ثابت بوحدات lamports (أو وحدات الاقتباس، حسب الإعداد) يُفرض مرة واحدة عند التخرج. يُطالب بها migrate_fee_owner عبر CollectMigrateFee.
  • max_share_fee_rate — يُهيأ إلى 10_000 (100 bps). يحد من معدل رسوم حصة المنصة من PlatformConfig المُلزم (انظر platform-config). يفرض البرنامج trade_fee_rate + max_share_fee_rate < RATE_DENOMINATOR_VALUE.

حدود العرض والمعدل

تحد هذه الحدود من معاملات شكل المنحنى التي يمكن لإطلاق اختيارها في Initialize. إذا انتهكت CurveParams الخاصة بالمُنشئ أيًا منها، ستعود Initialize مع InvalidInput.
  • min_base_supply — الحد الأدنى supply (بدون عشريات) الذي يمكن للمنحنى أن يعلنه. الافتراضي هو 10_000_000.
  • max_lock_rate — يُقاس بـ 1/1_000_000؛ الافتراضي 300_000 (30%). يحد من الاستحقاق عبر total_locked_amount <= supply * max_lock_rate / 1_000_000.
  • min_base_sell_rate — يُقاس بـ 1/1_000_000؛ الافتراضي 200_000 (20%). يحد من base_supply_graduation / supply من الأسفل.
  • min_base_migrate_rate — يُقاس بـ 1/1_000_000؛ الافتراضي 200_000 (20%). يحد من عدد الرموز المتبقية لتجهيز المجموعة بعد التخرج.
  • min_quote_fund_raising — الحد الأدنى quote_reserve_target الذي قد يعلنه إطلاق (مع عشريات). الافتراضي هو 30_000_000_000 وحدة من عملة الاقتباس.

عملة الاقتباس ومحافظ البروتوكول

  • quote_mint — الأصل الذي يشتري به المستخدمون. تستخدم معظم الإطلاقات SOL المرقومة (So111…112) أو USDC (EPjF…Dt1v). يُرتبط GlobalConfig الواحد بعملة اقتباس واحدة؛ الإطلاقات التي تحتاج إلى هدف اقتباس مختلف تستهدف (curve_type, index) مختلفًا.
  • protocol_fee_owner — مفتاح عام يوقع CollectFee ويطالب برسوم البروتوكول المتراكمة على كل إطلاق مرتبط بهذا الإعداد. مخزنة على السلسلة؛ يمكن للمسؤول تدويرها عبر UpdateConfig.
  • migrate_fee_owner — مفتاح عام يوقع CollectMigrateFee.

محافظ الهجرة

يتطلب مساران التخرج موقعين مختلفين:
  • migrate_to_amm_wallet — يجب أن يوقع MigrateToAmm. يُستخدم للإطلاقات ذات migrate_type = 0 (التخرج إلى AMM v4 + OpenBook).
  • migrate_to_cpswap_wallet — يجب أن يوقع MigrateToCpswap. يُستخدم لـ migrate_type = 1 (التخرج إلى CPMM). تأخذ إطلاقات Token-2022 هذا المسار دائمًا.
عادة ما تُحتفظ بها بواسطة crank التخرج الذي تديره Raydium، لذا ينهي التخرج بعد وقت قصير من وصول المنحنى إلى العتبة بدلاً من الانتظار لاستدعاء المُنشئ.

requires_platform_auth

علم u8 (0 = يمكن لأي شخص استخدام هذا الإعداد؛ غير صفري = فقط المنصات التي لديها PDA PlatformGlobalAccess صحيح قد تطلق ضده). عند التعيين، يجب على كل Initialize ضد هذا GlobalConfig أن يتضمن حساب PlatformGlobalAccess مطابق يثبت أن المنصة تم تفويضها مسبقًا عبر CreatePlatformGlobalAccess (تعليمات حصرية للمسؤول). انظر platform-config لميكانيكا جانب المنصة.

الافتراضيات عند التهيئة

عندما يتم استدعاء CreateConfig، يقوم البرنامج بزراعة العديد من الحقول مع القيم الافتراضية المشفرة:
self.max_share_fee_rate     = 10_000;                  // 100 bps
self.min_base_supply        = 10_000_000;              // no decimals
self.max_lock_rate          = 300_000;                 // 30%
self.min_base_migrate_rate  = 200_000;                 // 20%
self.min_base_sell_rate     = 200_000;                 // 20%
self.min_quote_fund_raising = 30_000_000_000;
self.requires_platform_auth = 0;
يعين المسؤول curve_type و index و migrate_fee و trade_fee_rate و quote_mint والمفاتيح العامة الأربعة للمحفظة بشكل صريح في وقت الإنشاء؛ يمكن ضبط القيم اللاحقة عبر UpdateConfig.

كيف يختار إطلاق GlobalConfig

في Initialize، يمرر المُنشئ:
  • (curve_type, index) لاختيار PDA GlobalConfig الذي سيتم تحميله.
  • CurveParams الذي يصف شكل المنحنى (supply، total_base_sell، total_quote_fund_raising، migrate_type).
  • VestingParams يصف العرض المقفول.
  • MintParams للعملة الأساسية.
يفرض البرنامج:
  • curve_type يطابق global_config.curve_type.
  • supply >= global_config.min_base_supply.
  • total_locked_amount <= supply * max_lock_rate / 1_000_000.
  • total_base_sell >= supply * min_base_sell_rate / 1_000_000.
  • (supply − total_base_sell − total_locked_amount) >= supply * min_base_migrate_rate / 1_000_000 — أي، توجد رموز كافية متبقية لتجهيز المجموعة بعد التخرج.
  • total_quote_fund_raising >= min_quote_fund_raising.
  • إذا كان requires_platform_auth != 0، يتم تضمين PDA PlatformGlobalAccess صحيح.
بعد Initialize، يقوم PoolState الخاص بالإطلاق بتخزين مفتاح global_config العام مباشرة، لذا يكون الربط دائمًا.

مسار التحديث

UpdateConfig حصري للمسؤول ويأخذ زوج (param: u8, value: u64). تختار كل قيمة param الحقل الذي سيتم تغييره:
paramالحقل المتغير
0migrate_fee
1trade_fee_rate
2max_share_fee_rate
3min_base_supply
4max_lock_rate
5min_base_sell_rate
6min_base_migrate_rate
7min_quote_fund_raising
تدويرات المحفظة (protocol_fee_owner، migrate_fee_owner، migrate_to_amm_wallet، migrate_to_cpswap_wallet) تأخذ شكل حجة Pubkey منفصلة؛ تحقق من مصدر update_config لجدول التوزيع الدقيق قبل تكوين معاملة مسؤول. يتم تبديل requires_platform_auth عبر set_requires_platform_auth(bool).

قراءة GlobalConfig من عميل

import { Raydium } from "@raydium-io/raydium-sdk-v2";

// Fetch by PDA derivation:
const [configPda] = PublicKey.findProgramAddressSync(
  [
    Buffer.from("global_config"),
    quoteMint.toBytes(),
    Buffer.from([curveType]),
    u16ToBytes(index),
  ],
  LAUNCHLAB_PROGRAM_ID,
);

const config = await raydium.launchpad.getGlobalConfig(configPda);
console.log(config.tradeFeeRate, config.minQuoteFundRaising);
بالنسبة لواجهة مستخدم تسرد جميع الإعدادات المتاحة، تابع مساعد getAllGlobalConfigs للـ SDK أو استعلم عن نقطة نهاية LaunchLab API التي تعكسها؛ عدد الحسابات on-chain صغير (بضع وحدات عمليًا).

مؤشرات

المصادر:
  • raydium-launch/programs/launchpad/src/states/config.rs — هيكل GlobalConfig و initialize.
  • raydium-launch/programs/launchpad/src/lib.rscreate_config، update_config.