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

Was es ist

Ein GlobalConfig ist eine Singleton-pro-(curve_type, index) PDA, die die Protokoll-seitigen 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.
  • Der Quote-Mint (typischerweise Wrapped SOL oder USDC) — das Asset, mit dem Benutzer kaufen.
  • Vier Protokoll-seitige Wallets: der Protokollgebühren-Eigentümer, der Migrationsgebühren-Eigentümer und die beiden 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 einen GlobalConfig eindeutig. Es gibt einen 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 — denominiert in 1/1_000_000 des Handelsvolumens. Angewendet auf jeden Kauf und Verkauf auf der Kurve. Der protocol_fee_owner beansprucht seinen Anteil über CollectFee.
  • migrate_fee — eine Pauschalgebühr in Lamports (oder Quote-Einheiten, je nach Konfiguration), die einmalig beim Abschluss erhoben wird. Beansprucht von migrate_fee_owner über CollectMigrateFee.
  • max_share_fee_rate — initialisiert auf 10_000 (100 bps). Begrenzt die Plattform-Anteil-Gebührenrate aus der bindenden PlatformConfig (siehe platform-config). Das Programm erzwingt trade_fee_rate + max_share_fee_rate < RATE_DENOMINATOR_VALUE.

Angebots- und Quoten-Untergrenzen

Diese Untergrenzen beschränken, welche Kurvenfunktions-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 — denominiert 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 — denominiert in 1/1_000_000; Standard 200_000 (20%). Begrenzt base_supply_graduation / supply von unten.
  • min_base_migrate_rate — denominiert in 1/1_000_000; Standard 200_000 (20%). Begrenzt die Anzahl der Tokens, 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 des Quote-Mints.

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). Ein GlobalConfig ist an einen Quote-Mint gebunden; Starts, die ein anderes Quote-Ziel benötigen, zielen auf ein anderes (curve_type, index) ab.
  • protocol_fee_owner — Pubkey, der CollectFee signiert und die aufgelaufenen Protokollgebühren bei jedem Start, der an diese Konfiguration gebunden ist, beansprucht. On-Chain gespeichert; Admin kann es über UpdateConfig rotieren.
  • migrate_fee_owner — Pubkey, der CollectMigrateFee signiert.

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 der Schwelle stattfindet, anstatt auf den Aufruf des Erstellers zu warten.

Plattform-seitige 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, seeded 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 einen GlobalConfig wählt

Bei Initialize übergibt der Ersteller:
  • (curve_type, index), um zu wählen, welche GlobalConfig PDA geladen werden soll.
  • CurveParams, die die Kurvenfunktion beschreiben (supply, total_base_sell, total_quote_fund_raising, migrate_type).
  • VestingParams, die das gesperrte Angebot beschreiben.
  • MintParams für den 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 Tokens ü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 das entsprechende PlatformAllowConfig enthalten.
Nach Initialize speichert der PoolState des Starts die global_config Pubkey direkt, sodass die Bindung permanent ist.

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 Plattform-Autorisierung ist entfernt. Plattform-Admins verwalten jetzt ihre eigenen Allowlists.

Lesen eines 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.