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

> Initialize, Buy, Sell, Graduate, CollectFees, SetParams — Argumentformen, Kontenlisten und Vor-/Nachbedingungen für jede LaunchLab-Anweisung.

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

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

LaunchLab stellt eine kompakte Anweisungsmenge bereit: sechs Aufrufe für Benutzer plus einige Admin-Primitive. Das SDK umhüllt alle davon; diese Seite dokumentiert die rohe Oberfläche für Aggregatoren, Überwachungstools und Programme, die CPI benötigen.

## Anweisungsübersicht

| Gruppe                 | Anweisung                                                  | Aufrufbar durch                                                                                                                                                                               |
| ---------------------- | ---------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Globale Konfiguration  | `CreateConfig` / `UpdateConfig`                            | Admin                                                                                                                                                                                         |
| Startlebenszyklus      | `Initialize` / `InitializeV2`                              | Beliebig (Ersteller) — SPL Token-Starts; V2 erfasst `amm_creator_fee_on` für die eventuelle CPMM-Graduierung                                                                                  |
| Startlebenszyklus      | `InitializeWithToken2022`                                  | Beliebig (Ersteller) — Token-2022-Start, optionales `TransferFeeConfig`                                                                                                                       |
| Handel                 | `BuyExactIn` / `BuyExactOut`                               | Beliebig — exakte-Input / exakte-Output-Kauf auf der Bonding Curve                                                                                                                            |
| Handel                 | `SellExactIn` / `SellExactOut`                             | Beliebig — exakte-Input / exakte-Output-Verkauf auf der Bonding Curve                                                                                                                         |
| Graduierung            | `MigrateToAmm`                                             | Migrations-Wallet (in `GlobalConfig` gesetzt) — Graduierung zu AMM v4. Wird verwendet, wenn `amm_creator_fee_on = BothToken`, damit die Creator-Gebühr auf beiden Seiten erhoben werden kann. |
| Graduierung            | `MigrateToCpswap`                                          | Migrations-Wallet — Graduierung zu CPMM. Wird verwendet, wenn `amm_creator_fee_on = QuoteToken` und erforderlich für Token-2022-Starts. Hüllt `InitializeWithPermission` auf CPMM ein.        |
| Gebühren               | `CollectFee`                                               | Admin — Abruf von Protokollgebühren von einem Start                                                                                                                                           |
| Gebühren               | `CollectMigrateFee`                                        | Admin — Abruf angesammelter Migrationsgebühren                                                                                                                                                |
| Gebühren               | `ClaimCreatorFee`                                          | Ersteller — Abruf angesammelter Creator-Gebühren während der Curve-Phase                                                                                                                      |
| Vesting                | `CreateVestingAccount`                                     | Ersteller — Zuordnung gesperrter Token an einen Begünstigten, freigegeben nach Graduierung                                                                                                    |
| Vesting                | `CreatePlatformVestingAccount`                             | Platform-Admin — Zuordnung gesperrter Token an Plattform-seitige Begünstigte                                                                                                                  |
| Vesting                | `ClaimVestedToken`                                         | Begünstigter — Abruf freigegebener Token nach der Cliff-Periode                                                                                                                               |
| Plattformkonfiguration | `CreatePlatformConfig` / `UpdatePlatformConfig`            | Platform-Admin                                                                                                                                                                                |
| Plattformkonfiguration | `UpdatePlatformCurveParam` / `RemovePlatformCurveParam`    | Platform-Admin — Verwaltung der pro-Plattform-Liste zulässiger Curve-Formen                                                                                                                   |
| Plattformgebühren      | `ClaimPlatformFee` / `ClaimPlatformFeeFromVault`           | Platform-Admin                                                                                                                                                                                |
| Plattformzugriff       | `CreatePlatformGlobalAccess` / `ClosePlatformGlobalAccess` | Admin — Kontrolle, welche Plattformen eine gegebene `GlobalConfig` verwenden dürfen                                                                                                           |

Die „ExactIn/ExactOut"-Aufteilung spiegelt CPMMs `SwapBaseInput` / `SwapBaseOutput` wider — on-chain sind es separate Anweisungs-Diskriminatoren mit leicht unterschiedlicher Rundung.

**Graduierungspfadauswahl.** `migrate_type` wird auf `PoolState` bei `Initialize{V2,WithToken2022}` erfasst und bestimmt, welche der beiden Graduierungsanweisungen ausgeführt werden kann. Token-2022-Starts migrieren immer zu CPMM. SPL Token-Starts migrieren zu entweder AMM v4 oder CPMM, abhängig von der `amm_creator_fee_on`-Einstellung:

* `BothToken` → `MigrateToAmm` → AMM v4 Pool (Creator-Gebühr kann von beiden Seiten erhoben werden; AMM v4 hat kein natives Creator-Gebühren-Feld, daher werden Creator-Gebühren stattdessen über den LP-Lock NFT-Mechanismus erfasst).
* `QuoteToken` → `MigrateToCpswap` → CPMM Pool mit `creator_fee_on = OnlyQuoteToken` (Creator verdient weiterhin Gebühren aus dem CPMM Pool durch den LaunchLab Fee Key NFT — siehe [`products/launchlab/creator-fees`](/de/products/launchlab/creator-fees)).

<Tip>
  **Hinweis zum `AmmCreatorFeeOn`-Enum-Namen.** Der Rust-Quellcode nennt dieses Enum `AmmCreatorFeeOn` mit Varianten `QuoteToken` und `BothToken`. Der Name ist irreführend: in der aktuellen Betriebspraxis steuert die Variante nicht nur, von welcher Seite die Creator-Gebühr im Post-Graduierungs-CPMM-Pool erhoben wird — sie wählt auch das Graduierungs-**Ziel-Programm** (AMM v4 vs CPMM) und paart sich mit `migrate_type` auf der `PoolState` des Starts. Behandeln Sie das Feld als „Migrationsziel + Post-Graduierungs-Creator-Gebühren-Seite" zusammengefasst. Der On-Chain-Enum-Name wurde nicht umgestaltet, aber das Denken daran als `MigrationTarget` entspricht der Realität genauer.
</Tip>

## `Initialize`

Erstellen Sie einen neuen Start.

**Argumente**

```
launch_params: {
    curve_type:                 u8,
    base_supply_max:            u64,
    base_supply_graduation:     u64,
    k:                          u128,              // oder initial_virtual_quote_reserve für curve_type=1
    open_time:                  u64,
    quote_mint:                 Pubkey,
    base_token_metadata: {                         // inline name/symbol/uri; Programm CPIs zu Metaplex
        name:   String,
        symbol: String,
        uri:    String,
    },
    fees: {
        buy_numerator:   u64,
        buy_denominator: u64,
        sell_numerator:  u64,
        sell_denominator: u64,
        lp_share:        u64,
        creator_share:   u64,
        protocol_share:  u64,
        total_share:     u64,
    },
    post_graduation_lp_policy:  u8,                // 0 = Burn, 1 = Lock, 2 = ToCreator
}
```

**Konten** (gekürzt)

| #  | Name               | W | S | Hinweise                                                        |
| -- | ------------------ | - | - | --------------------------------------------------------------- |
| 1  | `creator`          | W | S | Zahlt Rent + Base Mint-Erstellung.                              |
| 2  | `launch_config`    |   |   | Protokoll-Konfigurationsbindung.                                |
| 3  | `launch_state`     | W |   | Neues Konto.                                                    |
| 4  | `launch_authority` |   |   | PDA.                                                            |
| 5  | `base_mint`        | W | S | Frisches Keypair (oder PDA) — diese Anweisung initialisiert es. |
| 6  | `base_vault`       | W |   | ATA von `launch_authority` auf `base_mint`.                     |
| 7  | `quote_mint`       |   |   |                                                                 |
| 8  | `quote_vault`      | W |   | ATA von `launch_authority` auf `quote_mint`.                    |
| 9  | `metadata`         | W |   | Metaplex Metadaten-PDA.                                         |
| 10 | `metaplex_program` |   |   |                                                                 |
| 11 | `token_program`    |   |   | Nur SPL Token.                                                  |
| 12 | `system_program`   |   |   |                                                                 |
| 13 | `rent`             |   |   |                                                                 |

**Vorbedingungen**

* `quote_mint ∈ launch_config.allowed_quote_mints`.
* `base_supply_graduation ≤ base_supply_max`.
* Gebührenparameter erfüllen `launch_config.max_*_fee_rate` Checks.
* `open_time ≥ now − slop` (SDK erzwingt `≥ now`; Programm toleriert leichte Rückdatierung).
* `curve_type` ist erkannt.

**Nachbedingungen**

* `base_mint` hat `supply = base_supply_max`, alles in `base_vault`.
* `base_mint.mint_authority = launch_authority`, `freeze_authority = None`.
* `LaunchState` initialisiert mit `status = Active`, `base_sold = 0`, `quote_reserve_real = 0`.
* `quote_reserve_target` berechnet aus Curve-Parametern + `base_supply_graduation` + `buy_numerator` (ungefähr).

**Häufige Fehler** — `InvalidQuoteMint`, `FeeRateTooHigh`, `InvalidCurveParams`, `MathOverflow`.

## `Buy` (kanonische Variante: `BuyExactIn`)

Benutzer stellt einen festen `quote_in` bereit; die Curve berechnet `base_out`.

**Argumente**

```
quote_in:          u64
minimum_base_out:  u64
```

**Konten**

| #  | Name                       | W | S |
| -- | -------------------------- | - | - |
| 1  | `user`                     | W | S |
| 2  | `launch_state`             | W |   |
| 3  | `launch_authority`         |   |   |
| 4  | `base_vault`               | W |   |
| 5  | `quote_vault`              | W |   |
| 6  | `user_base_ata`            | W |   |
| 7  | `user_quote_ata`           | W |   |
| 8  | `base_mint`                |   |   |
| 9  | `quote_mint`               |   |   |
| 10 | `token_program`            |   |   |
| 11 | `associated_token_program` |   |   |
| 12 | `system_program`           |   |   |

**Vorbedingungen**

* `launch_state.status == Active`.
* `now ≥ open_time`.
* `user_quote_ata.balance ≥ quote_in`.
* `quote_in > 0`.

**Effekt**

1. Teilen Sie `quote_in` in `quote_in_after_fee` und die Gebührenteile auf.
2. Newton-Solve der Curve für `base_out` angesichts des post-Gebühren-Quote.
3. `require(base_out ≥ minimum_base_out)` sonst Revert mit `ExceededSlippage`.
4. Verschieben Sie `quote_in` Benutzer → Vault. Verschieben Sie `base_out` Vault → Benutzer.
5. Aktualisieren Sie `base_sold += base_out`, `quote_reserve_real += quote_in_after_fee × (lp_share / total_share)`.
6. Aktualisieren Sie Gebührenzähler (`protocol_fees_quote`, `creator_fees_quote`).
7. `state_data.num_buys += 1`.
8. Wenn `quote_reserve_real ≥ quote_reserve_target` nach der Aktualisierung, hängt das SDK normalerweise eine `Graduate` ix in derselben Transaktion an. Das Programm graduiert nicht automatisch innerhalb von `Buy` — eine nachfolgende `Graduate` ist erforderlich.

## `BuyExactOut`

Benutzer gibt den exakten `base_out` an; Programm berechnet `quote_in`.

**Argumente**

```
base_out:      u64
maximum_quote_in: u64
```

Gleiche Konten wie `BuyExactIn`. Verwendet das geschlossene quadratische Integral (oder CPMM-Inverse für curve\_type 1) anstelle von Newton-Iteration.

## `Sell` / `SellExactIn` / `SellExactOut`

Spiegel von `Buy`. Benutzer gibt `base_in` an die Curve zurück und erhält `quote_out`. Die Gebühr wird von `quote_out` abgezogen, daher erhält der Benutzer weniger als die rohen integrierten Erträge.

**Vorbedingungen** —

* `user_base_ata.balance ≥ base_in`.
* Der Verkauf kann `base_sold` nicht unter 0 drücken (redundant mit dem obigen, da die Buchhaltung konsistent ist).
* Start ist `Active`.

**Effekt** — symmetrisch zu `Buy`. `base_sold` sinkt, `quote_reserve_real` sinkt. Gebühren fallen weiterhin an.

## `MigrateToAmm` / `MigrateToCpswap`

Graduieren Sie einen Start in einen handelbaren AMM-Pool, sobald die Curve `total_quote_fund_raising` erreicht hat. Die beiden Anweisungen entsprechen den zwei Graduierungszielen — AMM v4 und CPMM — und **nur eine von ihnen ist für jeden gegebenen Start gültig**, bestimmt durch `pool_state.migrate_type` (bei `Initialize`-Zeit gesetzt).

**Wer unterzeichnet**

* `MigrateToAmm` — das `migrate_to_amm_wallet` auf der Bindungs-`GlobalConfig` erfasst.
* `MigrateToCpswap` — das `migrate_to_cpswap_wallet` auf der Bindungs-`GlobalConfig` erfasst.

Diese Wallets werden normalerweise von der von Raydium betriebenen Graduierungs-Crank gehalten; in der Praxis erfolgt die Graduierung Sekunden nachdem der Schwellwert überschritten wird, unabhängig davon, wer den finalen Kauf ausgelöst hat.

**Argumente**

`MigrateToAmm` benötigt drei (hauptsächlich OpenBook-Marktparameter, die das Programm an AMM v4 weiterleitet):

```
base_lot_size:               u64
quote_lot_size:              u64
market_vault_signer_nonce:   u8
```

`MigrateToCpswap` benötigt keine.

**Effekt (gemeinsam für beide)**

1. Stellen Sie sicher, dass `pool_state.status == Migrate` (d.h. `quote_reserve_target` wurde erreicht). Ansonsten Revert mit `PoolMigrated` (Status war bereits `Migrated`) oder `PoolFunding` (noch in Finanzierung).
2. Stellen Sie sicher, dass `pool_state.migrate_type` der Anweisung entspricht (`0` für AMM, `1` für CPMM). Ansonsten Revert mit `MigrateTypeNotMatch`.
3. Berechnen Sie die Post-Graduierungs-Reserven:
   * `base_amount_out = base_vault.amount − vesting_schedule.total_locked_amount`
   * `quote_amount_out = quote_vault.amount − quote_protocol_fee − migrate_fee − platform_fee`
4. CPI in das Ziel-Programm (`AMM v4 Initialize2` oder `CPMM InitializeWithPermission`) mit diesen Reserven, um den Post-Graduierungs-Pool zu erstellen.
5. Teilen Sie das resultierende LP pro Bindungs-`PlatformConfig.{platform_scale, creator_scale, burn_scale}` (nur CPMM) — ein Teil wird an `platform_nft_wallet` geprägt, einer an einen Creator-NFT, der vom LP-Lock-Programm umhüllt wird, einer wird über Burn & Earn verbrannt. Für AMM v4-Graduierung wird die LP-Disposition durch AMM v4s eigene Initialisierungsparameter gesteuert.
6. Widerrufen Sie `base_mint.mint_authority` (auf `None` setzen).
7. Kippen Sie `pool_state.status = Migrated`, setzen Sie `vesting_schedule.start_time = block_time + cliff_period`.

**Nachbedingungen** — `BuyExactIn`, `BuyExactOut`, `SellExactIn`, `SellExactOut` werden von diesem Punkt an mit `PoolMigrated` ablehnen. Der resultierende AMM-Pool ist kanonisch und handelt wie alle anderen AMM v4 / CPMM Pools.

**Häufige Fehler** — `PoolFunding`, `PoolMigrated`, `MigrateTypeNotMatch`, `InvalidCpSwapConfig`, `MathOverflow`.

## `CollectFee`

Admin-Abruf der angesammelten Handelsgebühren des Protokolls bei einem einzelnen Start.

**Argumente** — keine.

**Konten**

| # | Name                      | W | S | Hinweise                                                         |
| - | ------------------------- | - | - | ---------------------------------------------------------------- |
| 1 | `protocol_fee_owner`      |   | S | Muss gleich `global_config.protocol_fee_owner` sein.             |
| 2 | `authority`               |   |   | PDA `[b"vault_auth_seed"]`; unterzeichnet die Vault-Übertragung. |
| 3 | `pool_state`              | W |   | Mutiert zu null `quote_protocol_fee`.                            |
| 4 | `global_config`           |   |   | Quelle der Wahrheit für den Unterzeichner.                       |
| 5 | `quote_vault`             | W |   | Abgelassen von `quote_protocol_fee`.                             |
| 6 | `recipient_token_account` | W |   | ATA von `protocol_fee_owner` auf `quote_mint`.                   |
| 7 | `quote_mint`              |   |   |                                                                  |
| 8 | `token_program`           |   |   | SPL Token (das Quote Mint ist immer SPL Token).                  |

**Effekt** — Übertragen Sie `pool_state.quote_protocol_fee` von `quote_vault` zu `recipient_token_account`, dann nullen Sie den Zähler. Aufrufbar jederzeit nach dem ersten Kauf.

## `CollectMigrateFee`

Admin-Abruf der Migrationsgebühr, die bei der Graduierung angesammelt wurde. Gleiche Kontenform wie `CollectFee` mit `migrate_fee_owner` als Unterzeichner (anstelle von `protocol_fee_owner`) und `pool_state.migrate_fee` als abgelasster Zähler.

## `ClaimCreatorFee`

Pro-Creator-Abruf angesammelter Creator-Gebühren über **jeden Start, den der Creator besitzt**, der das gleiche Quote Mint verwendet. Leert die Pro-Creator-Gebühren-Vault, nicht die Pro-Pool.

**Argumente** — keine.

**Konten**

| # | Name                       | W | S | Hinweise                                                             |
| - | -------------------------- | - | - | -------------------------------------------------------------------- |
| 1 | `creator`                  | W | S | Der Pool-Ersteller.                                                  |
| 2 | `fee_vault_authority`      |   |   | PDA `[b"creator_fee_vault_auth_seed"]`.                              |
| 3 | `creator_fee_vault`        | W |   | PDA an Samen `[creator, quote_mint]`; die aggregierte Creator-Vault. |
| 4 | `recipient_token_account`  | W |   | `init_if_needed`; ATA von `creator` auf `quote_mint`.                |
| 5 | `quote_mint`               |   |   |                                                                      |
| 6 | `token_program`            |   |   |                                                                      |
| 7 | `system_program`           |   |   | Für ATA-Erstellung wenn nötig.                                       |
| 8 | `associated_token_program` |   |   |                                                                      |

**Effekt** — Übertragen Sie den gesamten Saldo von `creator_fee_vault` zu `recipient_token_account`. Revert mit einem größer-als-Null-Check, wenn die Vault leer ist.

## `ClaimPlatformFee`

Pro-Plattform-Abruf, der eine Start-Quoten-Vault direkt ablässt. Verwenden Sie dies, wenn eine Plattform ihren Anteil für einen bestimmten Start beanspruchen möchte, ohne durch die aggregierte Plattform-Vault zu gehen.

**Argumente** — keine.

**Konten**

| #  | Name                       | W | S | Hinweise                                                |
| -- | -------------------------- | - | - | ------------------------------------------------------- |
| 1  | `platform_fee_wallet`      | W | S | Muss gleich `platform_config.platform_fee_wallet` sein. |
| 2  | `authority`                |   |   | PDA `[b"vault_auth_seed"]`.                             |
| 3  | `pool_state`               | W |   | Abgelassen von `pool_state.platform_fee`.               |
| 4  | `platform_config`          |   |   | Quelle der Wahrheit für den Unterzeichner.              |
| 5  | `quote_vault`              | W |   | Abgelassen.                                             |
| 6  | `recipient_token_account`  | W |   | `init_if_needed`; ATA von `platform_fee_wallet`.        |
| 7  | `quote_mint`               |   |   |                                                         |
| 8  | `token_program`            |   |   |                                                         |
| 9  | `system_program`           |   |   |                                                         |
| 10 | `associated_token_program` |   |   |                                                         |

**Effekt** — Übertragen Sie `pool_state.platform_fee` von `quote_vault` zu `recipient_token_account`, nullen Sie den Zähler.

## `ClaimPlatformFeeFromVault`

Pro-Plattform aggregierter Abruf. Leert die Pro-Quote-Mint-Gebühren-Vault der Plattform, die Gebühren von jedem Start sammelt, der durch die Plattform geleitet wird.

**Argumente** — keine.

**Konten**

| # | Name                       | W | S | Hinweise                                                |
| - | -------------------------- | - | - | ------------------------------------------------------- |
| 1 | `platform_fee_wallet`      | W | S | Muss gleich `platform_config.platform_fee_wallet` sein. |
| 2 | `fee_vault_authority`      |   |   | PDA `[b"platform_fee_vault_auth_seed"]`.                |
| 3 | `platform_config`          |   |   |                                                         |
| 4 | `platform_fee_vault`       | W |   | PDA an Samen `[platform_config, quote_mint]`.           |
| 5 | `recipient_token_account`  | W |   | `init_if_needed`; ATA von `platform_fee_wallet`.        |
| 6 | `quote_mint`               |   |   |                                                         |
| 7 | `token_program`            |   |   |                                                         |
| 8 | `system_program`           |   |   |                                                         |
| 9 | `associated_token_program` |   |   |                                                         |

**Effekt** — Übertragen Sie den vollen Saldo von `platform_fee_vault` zu `recipient_token_account`. Revert, wenn die Vault leer ist.

## Vesting und Plattformkonfigurationsanweisungen

Diese sind auf dedizierten Seiten dokumentiert, da jede ihr eigenes State-Modell hat:

* [`CreateVestingAccount`, `CreatePlatformVestingAccount`, `ClaimVestedToken`](/de/products/launchlab/vesting)
* [`CreatePlatformConfig`, `UpdatePlatformConfig`, `UpdatePlatformCurveParam`, `RemovePlatformCurveParam`, `CreatePlatformGlobalAccess`, `ClosePlatformGlobalAccess`](/de/products/launchlab/platform-config)
* [`CreateConfig`, `UpdateConfig`](/de/products/launchlab/global-config)

## State-Change-Matrix

| Anweisung                               | `status`   | `real_base` | `real_quote`     | Gebührenzähler                                 | Post-State Pool                           |
| --------------------------------------- | ---------- | ----------- | ---------------- | ---------------------------------------------- | ----------------------------------------- |
| `Initialize{V2,WithToken2022}`          | Funding    | 0           | 0                | 0                                              | —                                         |
| `BuyExactIn(q_in)`                      | Funding    | +∆          | +∆q\_after\_fee  | `quote_protocol_fee += ∆`, `platform_fee += ∆` | —                                         |
| `SellExactIn(b_in)`                     | Funding    | −∆          | −∆q\_before\_fee | (gleich)                                       | —                                         |
| Schwellwert erreicht                    | → Migrate  | —           | —                | —                                              | —                                         |
| `MigrateToAmm` / `MigrateToCpswap`      | → Migrated | (gefroren)  | (gefroren)       | `migrate_fee` gesetzt                          | erstellt, LP geteilt per `PlatformConfig` |
| `CollectFee` / `CollectMigrateFee`      | beliebig   | —           | —                | Zähler genullt                                 | —                                         |
| `ClaimCreatorFee` / `ClaimPlatformFee*` | beliebig   | —           | —                | leert Vault                                    | —                                         |
| `CreateVestingAccount`                  | Funding    | —           | —                | —                                              | erhöht `allocated_share_amount`           |
| `ClaimVestedToken`                      | Migrated   | —           | —                | —                                              | leert `base_vault`                        |

## Weiterführend

* [`products/launchlab/code-demos`](/de/products/launchlab/code-demos) — TypeScript-Beispiele für jede Anweisung.
* [`products/launchlab/accounts`](/de/products/launchlab/accounts) — vollständige State-Form.
* [`reference/error-codes`](/de/reference/error-codes) — LaunchLab Error Enum.

Quellen:

* [Raydium SDK v2 `LaunchLab` Modul](https://github.com/raydium-io/raydium-sdk-V2)
* Raydium LaunchLab Programmquellcode
