Skip to main content
Diese Seite wurde mit KI automatisch übersetzt. Maßgeblich ist stets die englische Version.Englische Version ansehen →
GlobalConfig ist das Konfigurationskonto auf Protokollebene. Es kann viele davon geben — indiziert nach (curve_type, index) — und jeder Start wählt genau eines zum Zeitpunkt von Initialize aus. Die Werte auf der gewählten GlobalConfig werden dann zu harten Grenzen für die Parameter dieses Starts. Für plattformspezifische Anpassungen (Pro-Plattform-Gebührensatz, zulässige Kurvenfunktionen, NFT-Aufteilungen beim Abschluss) siehe products/launchlab/platform-config.

Was es ist

Eine GlobalConfig ist eine Singleton-pro-(curve_type, index) PDA, die die Protokoll-Regeln festlegt, die jeder Start befolgen muss:
  • Die Art der zulässigen Bindungskurve (curve_type).
  • Der Handelgebührensatz, den die Kurve bei jedem Kauf und Verkauf erhebt.
  • Die beim Abschluss erhobene Migrationsgebühr.
  • Untergrenzen für Angebot, Sperrquote, Verkaufsquote und Migrationsquote.
  • Die Quote-Mint (typischerweise Wrapped SOL oder USDC) — das Asset, mit dem Benutzer kaufen.
  • Vier Protokoll-Wallets: der Protokollgebühren-Eigentümer, der Migrationsgebühren-Eigentümer und die zwei Migrations-Kontroll-Wallets, die für CPMM und Legacy-AMM-v4-Abschluss beibehalten werden.
GlobalConfig-Konten können vom LaunchLab-Programm-Admin oder der delegierten Create-Config-Autorität erstellt werden. Nur der Admin aktualisiert bestehende Konfigurationen. Siehe reference/program-addresses für die kanonischen Autoritäten.

Layout

PDA-Ableitung:
(Überprüfen Sie die genaue Seed-Reihenfolge vom On-Chain-Konto vor dem Signieren — die create_config-Anweisung des Programms ist die Quelle der Wahrheit.)

Feldsemanantik

curve_type und index

Zusammen identifizieren diese eine GlobalConfig eindeutig. Es gibt eine GlobalConfig pro (curve_type, index)-Paar:
  • curve_type = 0 — Konstant-Produkt-Virtual-Reserve-Kurve. Standard und am häufigsten verwendet.
  • curve_type = 1 — Festpreis-Kurve.
  • curve_type = 2 — Linear-Preis-Kurve.
index ist ein u16, das dem Admin ermöglicht, mehrere Konfigurationen pro Kurventyp zu veröffentlichen (z. B. eine mit einer strengeren Gebühr, eine mit einer höheren Mindestquote-Erhöhung). Bei Initialize liefert der Start ein (curve_type, index)-Paar und das Programm lädt die entsprechende GlobalConfig.

Gebühren

  • trade_fee_rate — ausgedrückt in 1/1_000_000 des Handelsvolumens. Wird auf jeden Kauf und Verkauf auf der Kurve angewendet. Der protocol_fee_owner fordert seinen Anteil über CollectFee an.
  • migrate_fee — eine Pauschalgebühr in Lamports (oder Quote-Einheiten, je nach Konfiguration), die einmalig beim Abschluss erhoben wird. Wird von migrate_fee_owner über CollectMigrateFee beansprucht.
  • max_share_fee_rate — initialisiert auf 10_000 (100 bps). Begrenzt das share_fee_rate-Argument, das BuyExactIn, BuyExactOut, SellExactIn und SellExactOut akzeptieren — die Referral-Gebühr, die direkt an den Share-Empfänger während des Handels gezahlt wird. Es begrenzt nicht PlatformConfig.fee_rate; dieser Satz hat seine eigenen Obergrenzen, beschrieben in platform-config. Sowohl CreateConfig als auch UpdateConfig erzwingen trade_fee_rate + max_share_fee_rate < RATE_DENOMINATOR_VALUE.

Angebots- und Quoten-Untergrenzen

Diese Untergrenzen begrenzen, welche Kurvenform-Parameter ein Start bei Initialize wählen kann. Wenn die CurveParams des Erstellers eine davon verletzen, wird Initialize mit InvalidInput rückgängig gemacht.
  • min_base_supply — das Minimum supply (ohne Dezimalstellen), das die Kurve deklarieren kann. Standard ist 10_000_000.
  • max_lock_rate — ausgedrückt in 1/1_000_000; Standard 300_000 (30%). Begrenzt Vesting über total_locked_amount <= supply * max_lock_rate / 1_000_000.
  • min_base_sell_rate — ausgedrückt in 1/1_000_000; Standard 200_000 (20%). Begrenzt base_supply_graduation / supply von unten.
  • min_base_migrate_rate — ausgedrückt in 1/1_000_000; Standard 200_000 (20%). Begrenzt die Anzahl der Token, die übrig bleiben, um den Post-Abschluss-Pool zu seeden.
  • min_quote_fund_raising — Minimum quote_reserve_target, das ein Start deklarieren darf (mit Dezimalstellen). Standard ist 30_000_000_000 Einheiten der Quote-Mint.

Quote-Mint und Protokoll-Wallets

  • quote_mint — das Asset, mit dem Benutzer kaufen. Die meisten Starts verwenden Wrapped SOL (So111…112) oder USDC (EPjF…Dt1v). Eine GlobalConfig ist an eine Quote-Mint gebunden; Starts, die eine andere Quote benötigen, zielen auf ein anderes (curve_type, index) ab. Die Mint kann entweder vom SPL-Token-Programm oder Token-2022 gehört werden — siehe unten.
  • protocol_fee_owner — Pubkey, die CollectFee signiert und die aufgelaufenen Protokollgebühren bei jedem Start, der an diese Konfiguration gebunden ist, beansprucht. Auf der Kette gespeichert; der Admin kann es über UpdateConfig rotieren.
  • migrate_fee_owner — Pubkey, die CollectMigrateFee signiert.

Token-2022-Quote-Mints

CreateConfig akzeptiert eine Token-2022-quote_mint, und Pools, die an eine solche Konfiguration gebunden sind, tragen sie von Anfang bis Ende: der Quote-Vault, beide Fee-Vaults und das Token-Konto des Share-Fee-Empfängers werden alle auf Token-2022 erstellt, und die Swap-Anweisungen berücksichtigen eine TransferFeeConfig auf der Quote-Seite. PoolState.token_program_flag Bit1 zeichnet die Wahl pro Start auf. Zwei Einschränkungen sind erwähnenswert, bevor Sie sich auf eine verlassen:
  • Das veraltete Initialize kann nicht dagegen starten. Nur InitializeV2 und InitializeWithToken2022 akzeptieren ein Token-2022-Quote-Programm. Siehe instructions.
  • Es wird keine Erweiterungs-Allowlist angewendet. Im Gegensatz zu CPMM und CLMM prüft LaunchLab die Erweiterungen einer Quote-Mint nicht — CreateConfig nimmt die Mint wie gegeben, daher ist das einzige Gate die Admin-Diskretion darüber, welche Mints an eine Konfiguration gebunden werden. Die NoSupportExtension-Prüfung des Programms deckt nur Token-2022-Base-Mints ab, die LaunchLab selbst erstellt. Behandeln Sie das Binden einer als hochvertrauenswürdige Aktion; siehe reference/token-2022-support.

Migrations-Wallets

Die zwei gespeicherten Abschluss-Wallets erfordern unterschiedliche Unterzeichner:
  • migrate_to_amm_wallet — signiert MigrateToAmm für einen bestehenden Legacy-Start, dessen gespeicherter migrate_type = 0.
  • migrate_to_cpswap_wallet — signiert MigrateToCpswap. Jeder neu initialisierte Start verwendet diesen Pfad.
Diese werden typischerweise vom Raydium-betriebenen Abschluss-Crank gehalten, sodass der Abschluss kurz nach dem Erreichen des Schwellenwerts stattfindet, anstatt darauf zu warten, dass der Ersteller ihn aufruft.

Plattformseitige Allowlists

GlobalConfig hat nicht mehr requires_platform_auth. Sein ehemaliges Byte ist Padding, daher ändert sich die Kontogröße nicht. Der Zugriff wird jetzt durch PlatformConfig.restrict_global_config und PlatformAllowConfig-Konten kontrolliert, die vom Admin dieser Plattform erstellt werden. Siehe platform-config.

Standardwerte bei der Initialisierung

Wenn CreateConfig aufgerufen wird, initialisiert das Programm viele Felder mit hartcodierten Standardwerten:
Der Admin setzt curve_type, index, migrate_fee, trade_fee_rate, quote_mint und die vier Wallet-Pubkeys explizit zum Erstellungszeitpunkt; nachfolgende Werte können über UpdateConfig angepasst werden.

Wie ein Start eine GlobalConfig wählt

Bei Initialize übergibt der Ersteller:
  • (curve_type, index), um zu wählen, welche GlobalConfig PDA geladen werden soll.
  • CurveParams, die die Kurvenform beschreiben (supply, total_base_sell, total_quote_fund_raising, migrate_type).
  • VestingParams, die das gesperrte Angebot beschreiben.
  • MintParams für die Base-Mint.
Das Programm erzwingt:
  • curve_type stimmt mit global_config.curve_type überein.
  • 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 — d. h. genug Token übrig, um den Post-Abschluss-Pool zu seeden.
  • total_quote_fund_raising >= min_quote_fund_raising.
  • migrate_type == 1 (CPSWAP).
  • Wenn die ausgewählte Plattform restrict_global_config == 1 hat, ist die entsprechende PlatformAllowConfig enthalten.
Nach Initialize speichert die PoolState des Starts die global_config-Pubkey direkt, daher ist die Bindung dauerhaft.

Update-Pfad

UpdateConfig ist nur für Admins und nimmt ein (param: u8, value: u64)-Paar. Jeder param-Wert wählt, welches Feld mutiert werden soll: Wallet-Rotationen (protocol_fee_owner, migrate_fee_owner, migrate_to_amm_wallet, migrate_to_cpswap_wallet) nehmen eine separate Pubkey-Argument-Form; überprüfen Sie die update_config-Quelle auf die genaue Dispatch-Tabelle, bevor Sie eine Admin-Transaktion zusammenstellen. Der ehemalige UpdateConfig-Selektor 12 für Plattformautorisierung ist entfernt. Plattform-Admins verwalten jetzt ihre eigenen Allowlists.

Lesen einer GlobalConfig von einem Client

Für eine UI, die alle verfügbaren Konfigurationen auflistet, durchlaufen Sie den getAllGlobalConfigs-Helper des SDK oder fragen Sie den LaunchLab-API-Endpunkt ab, der sie spiegelt; die On-Chain-Kontoanzahl ist klein (in der Praxis einstellig).

Verweise

Quellen:
  • raydium-launch/programs/launchpad/src/states/config.rsGlobalConfig-Struktur und initialize.
  • raydium-launch/programs/launchpad/src/lib.rscreate_config, update_config.