Skip to main content
Diese Seite wurde mit KI automatisch übersetzt. Maßgeblich ist stets die englische Version.Englische Version ansehen →
Diese Seite dokumentiert das Pro-Launch-Kontengraph: den PoolState (das Root-State-Konto für einen Launch), seine zwei Vaults, die Authority-PDA und die Post-Graduation-Referenzen, die es erhält, wenn der Launch abgeschlossen ist. Für die Protocol-Level-Konfiguration, die jeden Launch begrenzt, siehe products/launchlab/global-config. Für die Pro-Platform-Überlagerung siehe products/launchlab/platform-config. Für Vesting-Konten (VestingSchedule auf PoolState, VestingRecord pro Begünstigtem) siehe products/launchlab/vesting.

Konteninventar

Das SDK raydium.launchpad.getLaunchById gibt PoolState plus ein Flag zurück, das anzeigt, ob der Launch abgeschlossen ist; wenn ja, ist die Post-Migration-Pool-ID enthalten.

PoolState

Der Pro-Launch-Root-State. Feldnamen unten entsprechen dem On-Chain-Rust-Struct (states/pool.rs); einige Werte sind zur Lesbarkeit vereinfacht — konsultieren Sie die Quelle für das exakte Memory-Layout.
PoolStatus-Werte (aus dem Anchor IDL):
Integrator-seitige Felder:
  • status — drei Werte, monoton (Funding → Migrate → Migrated). Lesevorgänge immer sicher; Schreibvorgänge gated.
  • real_base, real_quote — aktueller Curve-State. Kombiniert mit virtual_base / virtual_quote sind sie ausreichend, um den Spotpreis zu berechnen, ohne die Vaults zu berühren. Siehe bonding-curve.
  • total_base_sell vs real_base — „Fortschritt zur Graduation”-Verhältnis für UIs.
  • migrate_type — neue Initialisierung erfordert 1 (CPSWAP). Ein gespeichertes 0 bleibt nur für einen bestehenden Launch sinnvoll, der vor der CPMM-Only-Erzwingung erstellt wurde.
  • amm_creator_fee_on — wählt creator_fee_on = OnlyQuoteToken (0) oder BothToken (1) auf dem Post-Graduation-CPMM-Pool. Es wählt nicht das Migrationsziel. Siehe creator-fees.
  • token_program_flag — ein Bitfeld, kein Boolean. Bit0 ist die Base-Mint und Bit1 ist die Quote-Mint, jeweils 0 für SPL Token und 1 für Token-2022, daher nimmt das Byte vier Werte an: 0 (beide Legacy), 1 (Token-2022 Base), 2 (Token-2022 Quote), 3 (beide Token-2022). Lesen Sie eine Mint mit (token_program_flag >> bit) & 1. Das Vergleichen des ganzen Bytes gegen 0 zur Klassifizierung der Base-Mint löst 2 zum falschen Programm auf. Bit1 war konstant 0, bis Token-2022-Quote-Mints unterstützt wurden.
  • quote_protocol_fee / platform_fee / migrate_fee — drei unabhängige Gebührenzähler. Jeder hat seine eigene Claim-Anweisung; siehe instructions.
  • vesting_schedule — vorhanden auf jedem PoolState, aber inaktiv, wenn total_locked_amount == 0. Siehe vesting für den vollständigen Lebenszyklus.

Die Authority-PDA

LaunchLab verwendet eine einzelne Authority-PDA über alle Launches hinweg, abgeleitet ohne Pro-Launch-Seed:
Diese einzelne PDA ist:
  • Die Authority auf jedem Launch base_vault und quote_vault.
  • Die mint_authority auf jeder Launch base_mint (vor Graduation).
  • Der Unterzeichner auf der CPMM-Graduation-CPI und auf Legacy-AMM-v4-Graduation für bestehenden State.
  • Der Unterzeichner auf ClaimVestedToken-Transfers aus dem Base-Vault.
  • Die transfer_fee_config_authority auf einer Token-2022-Base-Mint TransferFeeConfig, für die gesamte Pre-Graduation-Phase — und auch ihre withdraw_withheld_authority, aber nur wenn die Platform PlatformConfig.transfer_fee_extension_auth nicht gesetzt hat.
Die mint_authority wird unmittelbar nach MigrateToCpswap oder einem Legacy-MigrateToAmm-Aufruf widerrufen, daher ist die Versorgung dauerhaft festgelegt. Zwei zusätzliche PDAs gaten die Gebühren-Vaults:
Diese unterzeichnen den Transfer aus dem entsprechenden Gebühren-Vault während ClaimCreatorFee und ClaimPlatformFeeFromVault.

Base-Mint

Erstellt inline durch Initialize mit:
  • mint_authority = authority (widerrufen bei Graduation).
  • freeze_authority = None.
  • supply = supply, vollständig in base_vault geprägt.
  • decimals vom Creator bei Initialize gewählt (üblicherweise 6).
Da die vollständige Versorgung vorgeprägt ist, ist base_mint.supply für die Lebensdauer des Launches konstant. Curve-Käufe verschieben Token von base_vault zum Käufer, rufen aber nicht mint_to auf. Initialize / InitializeV2 erstellen SPL-Token-Base-Mints. Die dedizierte InitializeWithToken2022-Anweisung ermöglicht es, dass die Base-Mint eine Token-2022-Mint ist (mit optionaler TransferFeeConfig). Alle drei Initialisierungspfade erfordern CPMM-Graduation. Wenn InitializeWithToken2022 eine TransferFeeConfig anhängt, wird die Mint mit transfer_fee_config_authority = authority und withdraw_withheld_authority = PlatformConfig.transfer_fee_extension_auth erstellt, fällt auf authority zurück, wenn die Platform dieses Feld nicht gesetzt hat. Beide Authorities werden bei Graduation zum Platform-Schlüssel neu zugewiesen, die Withdraw-Seite nur, wenn die PDA sie noch hält. Siehe platform-config. Die Quote-Mint ist unabhängig von der Base-Mint und kann selbst eine Token-2022-Mint sein — InitializeV2 und InitializeWithToken2022 akzeptieren beide Programme in ihrem Quote-Programm-Slot. Das veraltete Initialize nicht: sein Quote-Programm-Konto ist immer noch auf SPL Token typisiert, daher kann eine Konfiguration, deren Quote-Mint Token-2022 ist, nur durch die anderen zwei gestartet werden. Die Quote-Mint wird nie von LaunchLab erstellt; sie ist, was GlobalConfig.quote_mint benennt. Siehe global-config und reference/token-2022-support.

Vaults

Sowohl base_vault als auch quote_vault sind Token-Konten, die von der LaunchLab-authority-PDA besessen werden, jeweils auf dem Programm erstellt, das seine eigene Mint besitzt — daher kann ein Launch einen Legacy-Base-Vault und einen Token-2022-Quote-Vault haben, oder jede andere Kombination. token_program_flag zeichnet auf, welcher welcher ist. Adressen werden auf PoolState gespeichert und können auch abgeleitet werden:
(Überprüfen Sie die exakten Seed-Präfixe aus dem Initialize-Accounts-Struct der Quelle, bevor Sie sich in der Produktion auf eine Ableitung verlassen.)

Gebühren-Vaults

Zwei PDAs aggregieren Gebühren über Launches hinweg:
  • Creator-Gebühren-Vault — PDA mit Seeds [creator, quote_mint]. Jeder Launch, der die gleichen Creator-Gebühren auf der gleichen Quote-Mint verdient, fließt in den gleichen Vault. Der Creator leert ihn über ClaimCreatorFee.
  • Platform-Gebühren-Vault — PDA mit Seeds [platform_config, quote_mint]. Jeder Launch, der durch die gleiche Platform geleitet wird und die gleiche Quote-Mint verwendet, fließt in den gleichen Vault. Die platform_fee_wallet der Platform leert ihn über ClaimPlatformFeeFromVault. Es gibt auch eine Pro-Launch-Sweep-Variante (ClaimPlatformFee), die direkt aus dem Launch quote_vault zieht, ohne durch den aggregierten Vault zu gehen.
Beide werden lazy beim ersten Swap erstellt, der eine Gebühr anfällt, auf dem Programm, das die Quote-Mint besitzt. Ein Creator oder eine Platform, die Launches gegen sowohl eine Legacy- als auch eine Token-2022-Quote-Mint durchführt, endet mit einem Vault pro Mint, wie es bereits für zwei verschiedene Legacy-Mints der Fall war. Das aggregierte-Vault-Muster ist das, was einem hochvolumigen Creator oder einer Platform ermöglicht, die Mietkosten der Gebührenakkumulation über viele Launches zu amortisieren.

Quote-Vault ↔ real_quote

quote_vault.balance und PoolState.real_quote sollten synchron bleiben. Sie können um höchstens die Summe der drei ausstehenden Gebührenzähler (quote_protocol_fee, platform_fee, migrate_fee) abweichen, die im Vault sitzen, aber zu den Gebührenzählern und nicht zur Curve-Reserve gehören. Die Curve-Mathematik verwendet immer real_quote, nie den rohen Vault-Saldo. Pre-Graduation-Invariante:

PlatformCurveRule

Ein Konto pro (PlatformConfig, GlobalConfig)-Paar, das die Launch-Formen hält, die diese Platform auf dieser Konfiguration erlaubt. PDA-Seeds sind [b"platform_curve_rule", platform_config, global_config].
Das Konto wird ohne Gruppe erstellt und bei jeder Gruppenänderung neu dimensioniert, daher ist seine Länge 150 + Σ(14 + 18 × constraints) und Decoder dürfen keine feste Größe annehmen. Gruppen sind ORed: ein Launch ist erlaubt, sobald alle Constraints einer Gruppe gelten. Null Gruppen bedeutet keine Einschränkung. Lesen Sie es nur, wenn die besitzende PlatformConfig.restrict_curve_param 1 ist — bei 0 ignoriert das Programm das Konto, und eine veraltete Regel kann dort sitzen. Feld-IDs, Operatoren und die Playbooks sind in products/launchlab/curve-rules.

Lebenszyklus-Kontoübergänge

Nächste Schritte

Quellen:
  • raydium-launch/programs/launchpad/src/states/pool.rsPoolState, PoolStatus, VestingSchedule, AmmCreatorFeeOn.
  • raydium-launch/programs/launchpad/src/lib.rs — PDA-Seed-Konstanten (AUTH_SEED, CREATOR_FEE_VAULT_AUTH_SEED, PLATFORM_FEE_VAULT_AUTH_SEED).
  • Raydium SDK v2 launchpad module.