Langsung ke konten utama

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.

Halaman ini diterjemahkan secara otomatis oleh AI. Versi bahasa Inggris adalah acuan resmi.Lihat versi bahasa Inggris →
GlobalConfig adalah akun konfigurasi tingkat protokol. Dapat ada banyak akun — dikunci dengan (curve_type, index) — dan setiap peluncuran memilih tepat satu pada waktu Initialize. Nilai pada GlobalConfig yang dipilih kemudian menjadi batas keras untuk parameter peluncuran tersebut. Untuk kustomisasi tingkat platform (tingkat biaya per-platform, bentuk kurva yang diizinkan, pembagian NFT saat kelulusan), lihat products/launchlab/platform-config.

Apa itu

GlobalConfig adalah PDA singleton per (curve_type, index) yang menetapkan aturan tingkat protokol yang harus dipatuhi setiap peluncuran:
  • Jenis kurva obligasi yang diizinkan (curve_type).
  • Tingkat biaya perdagangan yang dikenakan kurva pada setiap pembelian dan penjualan.
  • Biaya migrasi yang dikenakan saat kelulusan.
  • Lantai pada pasokan, tingkat kunci, tingkat jual, dan tingkat migrasi.
  • Mint kutipan (biasanya SOL atau USDC terbungkus) — aset yang dibeli pengguna.
  • Tiga dompet tingkat protokol: pemilik biaya protokol, pemilik biaya migrasi, dan dua dompet kontrol migrasi yang mengotorisasi kelulusan ke AMM v4 / CPMM.
  • Bendera opsional (requires_platform_auth) yang membatasi platform mana yang dapat menggunakan konfigurasi ini.
Akun GlobalConfig dibuat dan diperbarui oleh admin program LaunchLab (pubkey admin yang dikodekan keras yang dibagikan di seluruh program Raydium berbasis Anchor — lihat reference/program-addresses).

Tata letak

// 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],
}
Derivasi PDA:
const [globalConfig] = PublicKey.findProgramAddressSync(
  [
    Buffer.from("global_config"),
    Buffer.from(quoteMint.toBytes()),
    Buffer.from([curveType]),
    u16ToBytes(index),
  ],
  LAUNCHLAB_PROGRAM_ID,
);
(Verifikasi urutan seed yang tepat dari akun on-chain sebelum menandatangani — instruksi create_config program adalah sumber kebenaran.)

Semantik bidang

curve_type dan index

Bersama-sama ini mengunci GlobalConfig secara unik. Ada satu GlobalConfig per pasangan (curve_type, index):
  • curve_type = 0 — Kurva cadangan virtual dengan produk konstan. Default dan paling banyak digunakan.
  • curve_type = 1 — Kurva harga tetap.
  • curve_type = 2 — Kurva harga linier.
index adalah u16 yang memungkinkan admin menerbitkan beberapa konfigurasi per jenis kurva (misalnya, satu dengan biaya lebih ketat, satu dengan kenaikan kutipan minimum lebih tinggi). Pada Initialize peluncuran memasok pasangan (curve_type, index) dan program memuat GlobalConfig yang cocok.

Biaya

  • trade_fee_rate — disebut dalam 1/1_000_000 dari volume perdagangan. Diterapkan pada setiap pembelian dan penjualan di kurva. protocol_fee_owner mengklaim bagiannya melalui CollectFee.
  • migrate_fee — biaya datar dalam lamports (atau satuan kutipan, tergantung konfigurasi) yang dikenakan sekali saat kelulusan. Diklaim oleh migrate_fee_owner melalui CollectMigrateFee.
  • max_share_fee_rate — diinisialisasi menjadi 10_000 (100 bps). Membatasi tingkat biaya berbagi platform dari PlatformConfig mengikat (lihat platform-config). Program menegakkan trade_fee_rate + max_share_fee_rate < RATE_DENOMINATOR_VALUE.

Lantai pasokan dan laju

Lantai ini membatasi parameter bentuk kurva apa yang dapat dipilih peluncuran pada Initialize. Jika CurveParams kreator melanggar salah satunya, Initialize dikembalikan dengan InvalidInput.
  • min_base_supply — minimum supply (tanpa desimal) yang dapat dinyatakan kurva. Default ke 10_000_000.
  • max_lock_rate — disebut dalam 1/1_000_000; default 300_000 (30%). Membatasi vesting melalui total_locked_amount <= supply * max_lock_rate / 1_000_000.
  • min_base_sell_rate — disebut dalam 1/1_000_000; default 200_000 (20%). Membatasi base_supply_graduation / supply dari bawah.
  • min_base_migrate_rate — disebut dalam 1/1_000_000; default 200_000 (20%). Membatasi jumlah token yang tersisa untuk menabur pool pasca-kelulusan.
  • min_quote_fund_raising — minimum quote_reserve_target yang dapat dinyatakan peluncuran (dengan desimal). Default ke satuan 30_000_000_000 dari mint kutipan.

Mint kutipan dan dompet protokol

  • quote_mint — aset yang dibeli pengguna. Sebagian besar peluncuran menggunakan SOL terbungkus (So111…112) atau USDC (EPjF…Dt1v). Satu GlobalConfig terikat pada satu mint kutipan; peluncuran yang membutuhkan target kutipan berbeda menargetkan (curve_type, index) berbeda.
  • protocol_fee_owner — pubkey yang menandatangani CollectFee dan mengklaim biaya protokol terkumpul pada setiap peluncuran yang terikat pada konfigurasi ini. Disimpan on-chain; admin dapat memutar melalui UpdateConfig.
  • migrate_fee_owner — pubkey yang menandatangani CollectMigrateFee.

Dompet migrasi

Dua jalur kelulusan memerlukan penandatangan berbeda:
  • migrate_to_amm_wallet — harus menandatangani MigrateToAmm. Digunakan untuk peluncuran yang migrate_type = 0 (kelulusan ke AMM v4 + OpenBook).
  • migrate_to_cpswap_wallet — harus menandatangani MigrateToCpswap. Digunakan untuk migrate_type = 1 (kelulusan ke CPMM). Peluncuran Token-2022 selalu mengambil jalur ini.
Ini biasanya dipegang oleh crank kelulusan yang dioperasikan Raydium, sehingga kelulusan terjadi segera setelah kurva mencapai ambang batas daripada menunggu kreator memanggilnya.

requires_platform_auth

Bendera u8 (0 = siapa pun dapat menggunakan konfigurasi ini; bukan nol = hanya platform dengan PDA PlatformGlobalAccess yang valid yang dapat diluncurkan terhadapnya). Ketika diatur, setiap Initialize terhadap GlobalConfig ini harus menyertakan akun PlatformGlobalAccess yang cocok membuktikan bahwa platform telah diotorisasi sebelumnya melalui CreatePlatformGlobalAccess (instruksi admin-only). Lihat platform-config untuk mekanik tingkat platform.

Default pada inisialisasi

Ketika CreateConfig dipanggil, program menabur banyak bidang dengan default yang dikodekan keras:
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;
Admin menetapkan curve_type, index, migrate_fee, trade_fee_rate, quote_mint, dan empat pubkey dompet secara eksplisit pada waktu pembuatan; nilai berikutnya dapat disetel melalui UpdateConfig.

Bagaimana peluncuran memilih GlobalConfig

Pada Initialize, kreator melewatkan:
  • (curve_type, index) untuk memilih PDA GlobalConfig mana yang akan dimuat.
  • CurveParams mendeskripsikan bentuk kurva (supply, total_base_sell, total_quote_fund_raising, migrate_type).
  • VestingParams mendeskripsikan pasokan terkunci.
  • MintParams untuk mint dasar.
Program menegakkan:
  • curve_type cocok dengan 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 — yaitu, cukup token tersisa untuk menabur pool pasca-kelulusan.
  • total_quote_fund_raising >= min_quote_fund_raising.
  • Jika requires_platform_auth != 0, PDA PlatformGlobalAccess yang valid disertakan.
Setelah Initialize, PoolState peluncuran menyimpan pubkey global_config secara langsung, sehingga pengikatan permanen.

Jalur pembaruan

UpdateConfig adalah admin-only dan mengambil pasangan (param: u8, value: u64). Setiap nilai param memilih bidang mana yang harus dimutasi:
paramBidang yang diubah
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
Rotasi dompet (protocol_fee_owner, migrate_fee_owner, migrate_to_amm_wallet, migrate_to_cpswap_wallet) mengambil bentuk argumen Pubkey terpisah; periksa sumber update_config untuk tabel dispatch yang tepat sebelum menyusun transaksi admin. requires_platform_auth diaktifkan melalui set_requires_platform_auth(bool).

Membaca GlobalConfig dari klien

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);
Untuk UI yang mencantumkan semua config yang tersedia, ikuti helper getAllGlobalConfigs SDK atau tanyakan endpoint API LaunchLab yang mencerminkannya; jumlah akun on-chain kecil (single digit dalam praktik).

Pointer

Sumber:
  • raydium-launch/programs/launchpad/src/states/config.rs — struct GlobalConfig dan initialize.
  • raydium-launch/programs/launchpad/src/lib.rscreate_config, update_config.