Ana içeriğe atla

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.

Bu sayfa yapay zekâ tarafından otomatik olarak çevrilmiştir. İngilizce sürüm esas alınır.İngilizce sürümü görüntüle →
GlobalConfig, protokol düzeyinde yapılandırma hesabıdır. Çok sayıda olabilir — (curve_type, index) anahtarına göre dizinlenmiş — ve her lansmanı Initialize sırasında tam olarak bir tane seçer. Seçilen GlobalConfig üzerindeki değerler, o lansmanın parametreleri için sabit sınırlar haline gelir. Platform düzeyinde özelleştirme için (platform başına işlem ücreti, izin verilen eğri şekilleri, mezuniyet sırasında NFT bölünmesi), bkz. products/launchlab/platform-config.

Nedir?

GlobalConfig, (curve_type, index) başına singleton olan bir PDA’dır ve her lansmanın uyması gereken protokol tarafı kurallarını düzenler:
  • İzin verilen bağlama eğrisinin türü (curve_type).
  • Eğri tarafından her alım ve satışta alınan ticari işlem ücreti oranı.
  • Mezuniyet sırasında alınan geçiş ücreti.
  • Tedarik, kilitleme oranı, satış oranı ve geçiş oranı tabanları.
  • Teklif mint’i (tipik olarak wrapped SOL veya USDC) — kullanıcıların satın aldığı varlık.
  • Üç protokol tarafı cüzdanı: protokol ücreti sahibi, geçiş ücreti sahibi ve AMM v4 / CPMM’ye mezuniyet onayını veren iki geçiş kontrol cüzdanı.
  • İsteğe bağlı bir bayrak (requires_platform_auth) bu yapılandırmanın hangi platformlar tarafından kullanılabileceğini kontrol eder.
GlobalConfig hesapları, LaunchLab program yöneticisi tarafından oluşturulur ve güncellenir (Anchor tabanlı Raydium programları arasında paylaşılan sabit kodlanmış yönetici pubkey’i — bkz. reference/program-addresses).

Layout

// 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 türetimi:
const [globalConfig] = PublicKey.findProgramAddressSync(
  [
    Buffer.from("global_config"),
    Buffer.from(quoteMint.toBytes()),
    Buffer.from([curveType]),
    u16ToBytes(index),
  ],
  LAUNCHLAB_PROGRAM_ID,
);
(İmza atılmadan önce, tam seed sırasını zincir üstü hesaptan doğrulayın — program’ın create_config komutu kaynak kaynağıdır.)

Alan semantiği

curve_type ve index

Bunlar birlikte bir GlobalConfig’i benzersiz şekilde belirler. Her (curve_type, index) çifti için bir GlobalConfig vardır:
  • curve_type = 0 — Sabit ürün sanal yedek eğrisi. Varsayılan ve en çok kullanılan.
  • curve_type = 1 — Sabit fiyat eğrisi.
  • curve_type = 2 — Doğrusal fiyat eğrisi.
index, eğri türü başına birden fazla yapılandırma yayınlamak için yöneticiye izin veren bir u16’dır (örneğin, daha sıkı bir ücret oranı ile bir tane, daha yüksek minimum teklif yükseltme ile bir tane). Initialize sırasında lansmanı bir (curve_type, index) çifti sağlayın ve program eşleşen GlobalConfig’i yükleyecektir.

Ücretler

  • trade_fee_rate — ticari işlem hacminin 1/1_000_000’de ifade edilir. Eğri üzerinde her alım ve satışa uygulanır. protocol_fee_owner, CollectFee aracılığıyla payını talep eder.
  • migrate_fee — mezuniyet sırasında bir kere alınan lamport’ta sabit bir ücret (veya yapılandırmaya bağlı olarak teklif birlikleri). migrate_fee_owner tarafından CollectMigrateFee aracılığıyla talep edilir.
  • max_share_fee_rate10_000 (100 bps) olarak başlatılır. Platform’ın bağlayıcı PlatformConfig öğesinden hisse ücreti oranını sınırlandırır (bkz. platform-config). Program trade_fee_rate + max_share_fee_rate < RATE_DENOMINATOR_VALUE olmasını zorunlu kılar.

Tedarik ve oran tabanları

Bu tabanlar, lansmanın Initialize’da seçebileceği eğri şekil parametrelerini sınırlandırır. Yaratıcının CurveParams bunlardan herhangi birini ihlal ederse, Initialize InvalidInput ile başarısız olur.
  • min_base_supply — eğri tarafından beyan edilebilecek minimum supply (ondalık yok). Varsayılan 10_000_000.
  • max_lock_rate1/1_000_000 cinsinden ifade edilir; varsayılan 300_000 (% 30). Vesting’i total_locked_amount <= supply * max_lock_rate / 1_000_000 aracılığıyla sınırlandırır.
  • min_base_sell_rate1/1_000_000 cinsinden ifade edilir; varsayılan 200_000 (% 20). base_supply_graduation / supply öğesini aşağıdan sınırlandırır.
  • min_base_migrate_rate1/1_000_000 cinsinden ifade edilir; varsayılan 200_000 (% 20). Mezuniyet sonrası havuzu tohum olarak bırakan token sayısını sınırlandırır.
  • min_quote_fund_raising — lansmanın beyan edebileceği minimum quote_reserve_target (ondalık ile). Varsayılan, teklif mint’inin 30_000_000_000 birimidir.

Teklif mint’i ve protokol cüzdanları

  • quote_mint — kullanıcıların satın aldığı varlık. Çoğu lansmanı wrapped SOL (So111…112) veya USDC (EPjF…Dt1v) kullanır. Bir GlobalConfig bir teklif mint’ine bağlıdır; farklı bir teklif hedefi gereken lansmanlar farklı bir (curve_type, index) hedefi alır.
  • protocol_fee_ownerCollectFee imzalayan ve bu yapılandırmaya bağlı her lansmanın birikmiş protokol ücretlerini talep eden pubkey. Zincir üzerinde depolanır; yönetici UpdateConfig aracılığıyla döndürebilir.
  • migrate_fee_ownerCollectMigrateFee imzalayan pubkey.

Geçiş cüzdanları

İki mezuniyet yolu farklı imzacılar gerektirir:
  • migrate_to_amm_walletMigrateToAmm imzalamalıdır. migrate_type = 0 olan lansmanlar için kullanılır (AMM v4 + OpenBook’a mezuniyet).
  • migrate_to_cpswap_walletMigrateToCpswap imzalamalıdır. migrate_type = 1 (CPMM’ye mezuniyet) için kullanılır. Token-2022 lansmanları her zaman bu yolu alır.
Bunlar tipik olarak Raydium tarafından işletilen mezuniyet crank tarafından tutulur, böylece eğri eşiğe ulaştıktan kısa süre sonra mezuniyet gerçekleşir ve yaratıcının bunu çağırmasını beklemez.

requires_platform_auth

Bir u8 bayrak (0 = herkes bu yapılandırmayı kullanabilir; sıfır olmayan = yalnızca geçerli PlatformGlobalAccess PDA’sı olan platformlar buna karşı lansmanı başlatabilir). Ayarlandığında, bu GlobalConfig karşısında her Initialize, platformun CreatePlatformGlobalAccess (yalnızca yönetici komutu) aracılığıyla önceden yetkilendirilmiş olduğunu kanıtlayan eşleşen bir PlatformGlobalAccess hesabı içermelidir. Platform tarafı mekanikler için bkz. platform-config.

Başlatmada varsayılanlar

CreateConfig çağrıldığında, program birçok alanı sabit kodlanmış varsayılanlarla hazırlar:
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;
Yönetici, oluşturma sırasında curve_type, index, migrate_fee, trade_fee_rate, quote_mint ve dört cüzdan pubkey’ini açıkça ayarlar; sonraki değerler UpdateConfig aracılığıyla ayarlanabilir.

Lansmanın GlobalConfig’i nasıl seçtiği

Initialize’da, yaratıcı şunları geçer:
  • Hangi GlobalConfig PDA’sını yükleyeceğini seçmek için (curve_type, index).
  • Eğri şeklini açıklayan CurveParams (supply, total_base_sell, total_quote_fund_raising, migrate_type).
  • Kilitli tedariki açıklayan VestingParams.
  • Taban mint için MintParams.
Program aşağıdakileri zorunlu kılar:
  • curve_type global_config.curve_type ile eşleşir.
  • 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 — yani, mezuniyet sonrası havuzu tohum olarak bırakacak kadar token.
  • total_quote_fund_raising >= min_quote_fund_raising.
  • requires_platform_auth != 0 ise, geçerli bir PlatformGlobalAccess PDA’sı dahil edilir.
Initialize sonrasında, lansmanın PoolState doğrudan global_config pubkey’ini depolayarak bağlanma kalıcı hale gelir.

Güncelleme yolu

UpdateConfig yalnızca yöneticiye özeldir ve bir (param: u8, value: u64) çiftini alır. Her param değeri, hangi alanın mutasyona uğrayacağını seçer:
paramDeğişen alan
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
Cüzdan döndürmeleri (protocol_fee_owner, migrate_fee_owner, migrate_to_amm_wallet, migrate_to_cpswap_wallet) ayrı bir Pubkey argümanı şekli alır; yönetici işlemi oluşturmadan önce tam işlem tablosu için update_config kaynağını kontrol edin. requires_platform_auth, set_requires_platform_auth(bool) aracılığıyla açılıp kapatılır.

İstemciden GlobalConfig okuma

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);
Mevcut tüm yapılandırmaları listeleyen bir kullanıcı arayüzü için SDK’nın getAllGlobalConfigs yardımcısında yürüyün veya bunları aynı şekilde yansıtan LaunchLab API uç noktasını sorgulayın; zincir üstü hesap sayısı azdır (pratikte tek rakamlar).

İşaretçiler

Kaynaklar:
  • raydium-launch/programs/launchpad/src/states/config.rsGlobalConfig yapısı ve initialize.
  • raydium-launch/programs/launchpad/src/lib.rscreate_config, update_config.