> ## 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.

# LaunchLab-Konten

> PoolState (Pro-Launch-Root), die Base- und Quote-Vaults, die Authority-PDA und das kleine Diagramm von Pro-Launch-Konten. Protocol-Level GlobalConfig und Platform-Level PlatformConfig befinden sich auf eigenen Seiten.

<Info>
  **Diese Seite wurde mit KI automatisch übersetzt. Maßgeblich ist stets die englische Version.**

  [Englische Version ansehen →](/products/launchlab/accounts)
</Info>

<Info>
  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 wird.

  Für die Protocol-Level-Config, die jeden Launch begrenzt, siehe [`products/launchlab/global-config`](/de/products/launchlab/global-config). Für die Pro-Platform-Überlagerung siehe [`products/launchlab/platform-config`](/de/products/launchlab/platform-config). Für Vesting-Konten (`VestingSchedule` auf `PoolState`, `VestingRecord` pro Begünstigter) siehe [`products/launchlab/vesting`](/de/products/launchlab/vesting).
</Info>

## Kontenbestand

| Konto | Eigentümer | Zweck |
| - | - | - |
| [`GlobalConfig`](/de/products/launchlab/global-config) | LaunchLab-Programm | Protocol-Level-Regeln: Gebühren, Versorgungsuntergrenzen, Migrationsbrieftaschen. Eine pro `(curve_type, index)`. |
| [`PlatformConfig`](/de/products/launchlab/platform-config) | LaunchLab-Programm | Pro-Platform-Überlagerung: Branding, Platform-Gebühr, NFT-Split bei Graduation, Launch-Parameter-Schalter und Regelmanager. Feste 944 Bytes. |
| `PoolState` | LaunchLab-Programm | Pro-Launch-Root-State: Mints, Vaults, Curve-Parameter, Verkaufszähler, Gebührenzähler, Vesting-Plan, Graduation-Status. |
| `authority` | LaunchLab-Programm | Einzelne PDA mit Seed `[b"vault_auth_seed"]`, die Vaults über alle Launches hinweg besitzt und die Post-Graduation-CPI signiert. |
| `base_vault` | SPL Token / Token-2022 | Pro-Launch-Vault, das unverkaufte Base-Token hält. |
| `quote_vault` | SPL Token / Token-2022 | Pro-Launch-Vault, das akkumulierte Quote-Token hält. Folgt dem Programm, das die Quote-Mint besitzt. |
| [`VestingRecord`](/de/products/launchlab/vesting) | LaunchLab-Programm | Pro-Begünstigter Cliff + Linear-Unlock-Datensatz. Optional. |
| `creator_fee_vault` | SPL Token / Token-2022 | Pro-Creator + Pro-Quote-Mint-Vault, das aufgelaufene Creator-Gebühren hält, geleert durch `ClaimCreatorFee`. Folgt dem Programm der Quote-Mint. |
| `platform_fee_vault` | SPL Token / Token-2022 | Pro-Platform + Pro-Quote-Mint-Vault, das aufgelaufene Platform-Gebühren hält, geleert durch `ClaimPlatformFeeFromVault`. Folgt dem Programm der Quote-Mint. |
| [`PlatformAllowConfig`](/de/products/launchlab/platform-config) | LaunchLab-Programm | Optionale Platform-verwaltete Berechtigung für ein `(PlatformConfig, GlobalConfig)`-Paar. Wird nur überprüft, wenn die Platform die Einschränkung aktiviert. |
| [`PlatformCurveRule`](/de/products/launchlab/curve-rules) | LaunchLab-Programm | Optionale Platform-verwaltete Launch-Parameter-Regel für ein `(PlatformConfig, GlobalConfig)`-Paar. Wird nur überprüft, wenn die Platform `restrict_curve_param` setzt. Variable Größe, 150 Bytes leer. |
| (Post-Graduation) `cpmm_pool_state` | CPMM-Programm | Pool erstellt durch `MigrateToCpswap` für jeden neuen Launch. Legacy-State kann immer noch auf eine AMM-v4-Graduation verweisen. |
| (Post-Graduation) Fee Key NFT | LP-Lock-Programm | Vor dem 2026-08-17-Upgrade konnten Platform- und Creator-Skalen separate Fee Keys erzeugen. Migrationen, die danach ausgeführt wurden, kombinieren beide Skalen in einen Platform-Fee-Key. |

Das SDK liest dies mit `raydium.launchpad.getRpcPoolInfo({ poolId })`, was den dekodierten `PoolState` mit der gebundenen `GlobalConfig` als `configInfo` angehängt zurückgibt (`getRpcPoolsInfo({ poolIdList })` für die gebündelte Form). Ein `getLaunchById` gibt es nicht. Die Pool-ID selbst ist eine PDA aus `(programId, mintA, mintB)` — `getPdaLaunchpadPoolId`.

## `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.

```rust theme={null}
// states/pool.rs (abridged)
pub struct PoolState {
    pub epoch:                     u64,        // recent_epoch tracker
    pub auth_bump:                 u8,
    pub status:                    u8,         // PoolStatus enum
    pub base_decimals:             u8,
    pub quote_decimals:            u8,
    pub migrate_type:              u8,         // 0 = AMM v4, 1 = CPMM
    pub supply:                    u64,        // total base tokens (no decimals)
    pub total_base_sell:           u64,        // base supply allocated to the curve
    pub virtual_base:              u64,        // virtual-reserve seed
    pub virtual_quote:             u64,        // virtual-reserve seed
    pub real_base:                 u64,        // base sold so far
    pub real_quote:                u64,        // quote raised so far (excl. fees)
    pub total_quote_fund_raising:  u64,        // graduation threshold in quote

    pub quote_protocol_fee:        u64,        // accrued, pending CollectFee
    pub platform_fee:              u64,        // accrued, pending ClaimPlatformFee
    pub migrate_fee:               u64,        // accrued, pending CollectMigrateFee
    pub vesting_schedule:          VestingSchedule,

    pub global_config:             Pubkey,
    pub platform_config:           Pubkey,
    pub base_mint:                 Pubkey,
    pub quote_mint:                Pubkey,
    pub base_vault:                Pubkey,
    pub quote_vault:               Pubkey,
    pub creator:                   Pubkey,     // NOTE: last of the seven pubkeys, not third

    pub token_program_flag:        u8,         // bit0 = base mint, bit1 = quote mint; 0 = SPL Token, 1 = Token-2022
    pub amm_creator_fee_on:        u8,         // 0 = QuoteToken, 1 = BothToken (CPMM-only)
    pub platform_vesting_share:    u64,        // the platform's slice of total_locked_amount
    pub padding:                   [u8; 54],
}

#[derive(Default, Debug, Clone)]
pub struct VestingSchedule {
    pub total_locked_amount:    u64,
    pub cliff_period:           u64,
    pub unlock_period:          u64,
    pub start_time:             u64,           // set at graduation
    pub allocated_share_amount: u64,           // running sum across VestingRecords
}
```

`PoolStatus`-Werte (die IDL-Variantennamen sind `Fund` / `Migrate` / `Trade`):

```
0 = Fund            — accepting buys / sells; below total_quote_fund_raising
1 = Migrate         — threshold reached; awaiting MigrateToAmm / MigrateToCpswap
2 = Trade           — migration done; post-graduation AMM trading, vesting clock running
```

Integrator-seitige Felder:

* **`status`** — drei Werte, monoton (`Fund` → `Migrate` → `Trade`). Lesevorgänge immer sicher; Schreibvorgänge gated. `ClaimVestedToken` erfordert `Trade`.
* **`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`](/de/products/launchlab/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`](/de/products/launchlab/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`. Der Vergleich des gesamten 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`](/de/products/launchlab/instructions).
* **`vesting_schedule`** — vorhanden auf jedem `PoolState`, aber inaktiv, wenn `total_locked_amount == 0`. Siehe [`vesting`](/de/products/launchlab/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:

```ts theme={null}
const LAUNCHLAB_PROGRAM_ID = new PublicKey("<LAUNCHLAB_ID>"); // see reference/program-addresses

const [authority, bump] = PublicKey.findProgramAddressSync(
  [Buffer.from("vault_auth_seed")],
  LAUNCHLAB_PROGRAM_ID,
);
```

Diese einzelne PDA ist:

* Die Authority auf jedem Launch `base_vault` und `quote_vault`.
* Nichts auf der `base_mint` — die Mint-Authority wird widerrufen, bevor `InitializeV2` zurückkehrt (siehe unten).
* 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 in der **Initialize**-Anweisung widerrufen, nicht bei Graduation: `InitializeV2` und `InitializeWithToken2022` prägen die volle Versorgung in `base_vault` und setzen dann `MintTokens` auf `None` in derselben Anweisung. Die Versorgung ist daher vom Moment der Launch-Existenz an festgelegt, und die Migration hat keinen Mint-Authority-Schritt. Ein Nebeneffekt: Niemand kann für die Base-Mint signieren, daher kann ihre Miete nicht durch [`CollectExcessLamports`](/de/products/launchlab/instructions#collectexcesslamports) zurückgefordert werden.

Zwei zusätzliche PDAs gaten die Fee-Vaults:

```ts theme={null}
const [creatorFeeVaultAuthority] = PublicKey.findProgramAddressSync(
  [Buffer.from("creator_fee_vault_auth_seed")],
  LAUNCHLAB_PROGRAM_ID,
);

const [platformFeeVaultAuthority] = PublicKey.findProgramAddressSync(
  [Buffer.from("platform_fee_vault_auth_seed")],
  LAUNCHLAB_PROGRAM_ID,
);
```

Diese signieren den Transfer aus dem entsprechenden Fee-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 geprägt in `base_vault`.
* `decimals` gewählt durch den Creator bei `Initialize` (üblicherweise 6).

Da die volle 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, fallback auf `authority`, 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`](/de/products/launchlab/platform-config#token-2022-transfer-fee-authorities).

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 Config, deren Quote-Mint Token-2022 ist, nur durch die anderen zwei gestartet werden. Die Quote-Mint wird nie durch LaunchLab erstellt; sie ist, was `GlobalConfig.quote_mint` benennt. Siehe [`global-config`](/de/products/launchlab/global-config#token-2022-quote-mints) und [`reference/token-2022-support`](/de/reference/token-2022-support#launchlab-quote-mints).

## 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:

```ts theme={null}
const [baseVault] = PublicKey.findProgramAddressSync(
  [Buffer.from("pool_vault"), poolState.toBuffer(), baseMint.toBuffer()],
  LAUNCHLAB_PROGRAM_ID,
);
const [quoteVault] = PublicKey.findProgramAddressSync(
  [Buffer.from("pool_vault"), poolState.toBuffer(), quoteMint.toBuffer()],
  LAUNCHLAB_PROGRAM_ID,
);
```

(Überprüfen Sie die exakten Seed-Präfixe aus der `Initialize`-Accounts-Struktur der Quelle, bevor Sie sich in der Produktion auf eine Ableitung verlassen.)

## Fee-Vaults

Zwei PDAs aggregieren Gebühren über Launches hinweg:

* **Creator-Fee-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-Fee-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 auflädt, 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:

```
quote_vault.balance ==
   real_quote
 + quote_protocol_fee
 + platform_fee
 + migrate_fee
```

## `PlatformCurveRule`

Ein Konto pro `(PlatformConfig, GlobalConfig)`-Paar, das die Launch-Formen hält, die diese Platform auf dieser Config erlaubt. PDA-Seeds sind `[b"platform_curve_rule", platform_config, global_config]`.

```rust theme={null}
#[account]
pub struct PlatformCurveRule {
    pub bump:            u8,
    pub version:         u8,
    pub platform_config: Pubkey,
    pub global_config:   Pubkey,
    pub epoch:           u64,
    pub padding:         [u64; 8],
    pub groups:          Vec<CurveRuleGroup>,   // up to 10
}

pub struct CurveRuleGroup {
    pub group_id:    u16,                       // stable id, used to update or remove the group
    pub epoch:       u64,
    pub constraints: Vec<ParamConstraint>,      // up to 25, ANDed
}

pub struct ParamConstraint {
    pub field: u8,                              // which launch parameter
    pub op:    u8,                              // 0 Eq, 1 Gte, 2 Lte, 3 Neq
    pub value: u128,
}
```

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 die Constraints einer Gruppe alle 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`](/de/products/launchlab/curve-rules).

## Lebenszyklus-Kontoübergänge

| Ereignis | Status | `real_base` | `real_quote` | Post-Graduation-Pool |
| - | - | - | - | - |
| `Initialize` | Funding | 0 | 0 | — |
| `BuyExactIn` / `BuyExactOut` | Funding | `+base_out` | `+quote_in_after_fee` | — |
| `SellExactIn` / `SellExactOut` | Funding | `−base_in` | `−quote_out_before_fee` | — |
| `MigrateToCpswap` (oder Legacy `MigrateToAmm`) | Funding → Migrate → Migrated | (eingefroren) | (eingefroren) | erstellt; CPMM LP wird in Platform-eigenes gesperrtes LP und verbranntes LP aufgeteilt |
| `ClaimCreatorFee` / `ClaimPlatformFee*` | beliebig | — | — | leert einen Fee-Vault |
| `CreateVestingAccount` | Funding | — | — | erhöht `vesting_schedule.allocated_share_amount` |
| `ClaimVestedToken` | Nur Migrated | — | — | leert `base_vault` |
| `CollectExcessLamports` | beliebig | — | — | — (verschiebt nur Lamports, nie Token-Salden) |

## Wo es weitergeht

* [`products/launchlab/bonding-curve`](/de/products/launchlab/bonding-curve) — die Mathematik hinter `real_base` ↔ `real_quote`.
* [`products/launchlab/instructions`](/de/products/launchlab/instructions) — Pro-Anweisung-Kontenlisten.
* [`products/launchlab/global-config`](/de/products/launchlab/global-config) — Protocol-Level-Bindung.
* [`products/launchlab/platform-config`](/de/products/launchlab/platform-config) — Platform-Überlagerung.
* [`products/launchlab/vesting`](/de/products/launchlab/vesting) — Mechanik der gesperrten Versorgung.
* [`products/cpmm/accounts`](/de/products/cpmm/accounts) — wie der Post-Graduation `cpmm_pool_state` aussieht.

Quellen:

* `raydium-launch/programs/launchpad/src/states/pool.rs` — `PoolState`, `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](https://github.com/raydium-io/raydium-sdk-V2).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.