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

> PoolState (корневое состояние для одного запуска), базовое и котируемое хранилища, PDA авторитета и граф аккаунтов на запуск. GlobalConfig на уровне протокола и PlatformConfig на уровне платформы находятся на отдельных страницах.

<Info>
  **Эта страница переведена с помощью ИИ. За эталон принимается английская версия.**

  [Открыть английскую версию →](/products/launchlab/accounts)
</Info>

На этой странице описан граф аккаунтов **на один запуск**: `PoolState` (корневой аккаунт состояния одного запуска), его два хранилища, PDA авторитета и ссылки на постградуационные аккаунты, которые появляются при завершении запуска.

Информацию о конфигурации на уровне протокола, действующей на все запуски, см. в разделе [`products/launchlab/global-config`](/ru/products/launchlab/global-config). Для наложения конфигурации платформы см. [`products/launchlab/platform-config`](/ru/products/launchlab/platform-config). Для аккаунтов вестинга (`VestingSchedule` на `PoolState`, `VestingRecord` на получателя) см. [`products/launchlab/vesting`](/ru/products/launchlab/vesting).

## Инвентарь аккаунтов

| Аккаунт                                                    | Владелец                | Назначение                                                                                                                                 |
| ---------------------------------------------------------- | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
| [`GlobalConfig`](/ru/products/launchlab/global-config)     | Программа LaunchLab     | Правила уровня протокола: сборы, минимальные объемы, кошельки миграции. Один на `(curve_type, index)`.                                     |
| [`PlatformConfig`](/ru/products/launchlab/platform-config) | Программа LaunchLab     | Наложение на уровне платформы: брендинг, сбор платформы, разделение NFT при выпуске, список допустимых форм кривых.                        |
| `PoolState`                                                | Программа LaunchLab     | Корневое состояние на один запуск: майнты, хранилища, параметры кривой, счетчики продаж, счетчики сборов, график вестинга, статус выпуска. |
| `authority`                                                | Программа LaunchLab     | Единственный PDA с seed `[b"vault_auth_seed"]`, который владеет хранилищами всех запусков и подписывает постградуационный CPI.             |
| `base_vault`                                               | SPL Token / Token-2022  | Хранилище на один запуск, содержащее непроданные базовые токены.                                                                           |
| `quote_vault`                                              | SPL Token               | Хранилище на один запуск, содержащее накопленные котируемые токены.                                                                        |
| [`VestingRecord`](/ru/products/launchlab/vesting)          | Программа LaunchLab     | Запись cliff + linear-unlock на одного получателя. Опционально.                                                                            |
| `creator_fee_vault`                                        | SPL Token               | Хранилище на создателя + на котируемый майнт, содержащее начисленные сборы создателя, очищаемое `ClaimCreatorFee`.                         |
| `platform_fee_vault`                                       | SPL Token               | Хранилище на платформу + на котируемый майнт, содержащее начисленные сборы платформы, очищаемое `ClaimPlatformFeeFromVault`.               |
| (после выпуска) `cpmm_pool_state` *или* `amm_pool_state`   | Программа CPMM / AMM v4 | Пул, созданный `MigrateToCpswap` / `MigrateToAmm`.                                                                                         |
| (после выпуска) Fee Key NFT                                | Программа LP-Lock       | Обертывает долю создателя в LP при выпуске CPMM; дает владельцу право на `ClaimCreatorFee` в пуле CPMM.                                    |

Метод `raydium.launchpad.getLaunchById` SDK возвращает `PoolState` плюс флаг, указывающий, прошел ли запуск выпуск; если прошел, включается ID постмиграционного пула.

## `PoolState`

Корневое состояние на один запуск. Имена полей ниже совпадают с on-chain структурой Rust (`states/pool.rs`); некоторые значения упрощены для читаемости — обратитесь к исходному коду для точного макета памяти.

```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 creator:                   Pubkey,
    pub base_mint:                 Pubkey,
    pub quote_mint:                Pubkey,
    pub base_vault:                Pubkey,
    pub quote_vault:               Pubkey,

    pub amm_creator_fee_on:        u8,         // 0 = QuoteToken, 1 = BothToken (CPMM-only)
    pub token_program_flag:        u8,         // bit flags for SPL Token vs Token-2022
    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` (из Anchor IDL):

```
0 = Funding         — принимаются покупки / продажи; ниже quote_reserve_target
1 = Migrate         — достигнут quote_reserve_target; ожидание MigrateTo*
2 = Migrated        — MigrateTo* уже выполнен; часы вестинга работают
```

Поля, видимые интегратору:

* **`status`** — три значения, монотонные (Funding → Migrate → Migrated). Чтение всегда безопасно; запись ограничена.
* **`real_base`**, **`real_quote`** — текущее состояние кривой. В сочетании с `virtual_base` / `virtual_quote` их достаточно для вычисления спотовой цены без касания хранилищ. См. [`bonding-curve`](/ru/products/launchlab/bonding-curve).
* **`total_base_sell`** vs `real_base` — коэффициент «прогресс к выпуску» для UI.
* **`migrate_type`** — выбирает, является ли `MigrateToAmm` или `MigrateToCpswap` допустимым путем выпуска. Запуски Token-2022 должны использовать CPMM.
* **`amm_creator_fee_on`** — имеет смысл только при выпуске на CPMM. Выбирает `creator_fee_on = OnlyQuoteToken` (`0`) или `BothToken` (`1`) в постградуационном пуле CPMM. *Несмотря на название, этот enum фактически также определяет целевую миграцию — `BothToken` сочетается с `MigrateToAmm` в текущей операционной практике; `QuoteToken` с `MigrateToCpswap`.* См. [`creator-fees`](/ru/products/launchlab/creator-fees).
* **`quote_protocol_fee` / `platform_fee` / `migrate_fee`** — три независимых счетчика сборов. Каждый имеет собственную инструкцию claim; см. [`instructions`](/ru/products/launchlab/instructions).
* **`vesting_schedule`** — присутствует на каждом `PoolState`, но неактивен когда `total_locked_amount == 0`. См. [`vesting`](/ru/products/launchlab/vesting) для полного цикла жизни.

## PDA авторитета

LaunchLab использует **единый** PDA авторитета для всех запусков, полученный без 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,
);
```

Этот единственный PDA:

* Авторитет на `base_vault` и `quote_vault` каждого запуска.
* `mint_authority` на `base_mint` каждого запуска (до выпуска).
* Подписант на постградуационный CPI для AMM v4 / CPMM (`MigrateTo*`).
* Подписант на передачи `ClaimVestedToken` из базового хранилища.

`mint_authority` отзывается немедленно после `MigrateToAmm` / `MigrateToCpswap`, так что предложение становится постоянно фиксированным.

Два дополнительных PDA блокируют хранилища сборов:

```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,
);
```

Они подписывают передачу из соответствующих хранилищ сборов при `ClaimCreatorFee` и `ClaimPlatformFeeFromVault`.

## Базовый майнт

Создается встроенно `Initialize` с:

* `mint_authority = authority` (отзывается при выпуске).
* `freeze_authority = None`.
* `supply = supply`, целиком сминчено в `base_vault`.
* `decimals`, выбранные создателем при `Initialize` (обычно 6).

Поскольку полное предложение предварительно сминчено, `base_mint.supply` остается константой на всю жизнь запуска. Покупки по кривой перемещают токены из `base_vault` покупателю, но не вызывают `mint_to`.

`Initialize` / `InitializeV2` создают запуски SPL Token. Специальная инструкция `InitializeWithToken2022` позволяет базовому майнту быть майнтом Token-2022 (с опциональной `TransferFeeConfig`); майнт котировки остается SPL Token. Запуски Token-2022 должны выпуститься на пул CPMM, потому что AMM v4 поддерживает только хранилища SPL Token.

## Хранилища

И `base_vault`, и `quote_vault` — это стандартные аккаунты SPL Token, принадлежащие PDA LaunchLab `authority`. Адреса хранятся на `PoolState` и могут быть также получены:

```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,
);
```

(Перед использованием вывода в production проверьте точные префиксы seed в структуре аккаунтов `Initialize` исходного кода.)

## Хранилища сборов

Два PDA агрегируют сборы по запускам:

* **Хранилище сборов создателя** — PDA с seeds `[creator, quote_mint]`. Каждый запуск, начисляющий сборы одного создателя по одному котируемому майнту, поступает в одно и то же хранилище. Создатель очищает его через `ClaimCreatorFee`.
* **Хранилище сборов платформы** — PDA с seeds `[platform_config, quote_mint]`. Каждый запуск, маршрутизируемый через одну и ту же платформу с одним и тем же котируемым майнтом, поступает в одно и то же хранилище. `platform_fee_wallet` платформы очищает его через `ClaimPlatformFeeFromVault`. Также есть вариант очистки на запуск (`ClaimPlatformFee`), который извлекает из `quote_vault` запуска напрямую без обращения к агрегированному хранилищу.

Паттерн агрегированного хранилища позволяет создателю или платформе с высоким объемом амортизировать стоимость аренды для накопления сборов по множеству запусков.

## Quote vault ↔ `real_quote`

`quote_vault.balance` и `PoolState.real_quote` должны оставаться синхронизированными. Они могут расходиться максимум на сумму трех ожидающих счетчиков сборов (`quote_protocol_fee`, `platform_fee`, `migrate_fee`), которые находятся в хранилище, но принадлежат счетчикам сборов, а не резерву кривой. Математика кривой всегда использует `real_quote`, никогда не использует необработанный баланс хранилища.

Инвариант до выпуска:

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

## Переходы аккаунтов в цикле жизни

| Событие                                 | Статус                       | `real_base` | `real_quote`            | Постградуационный пул                                 |
| --------------------------------------- | ---------------------------- | ----------- | ----------------------- | ----------------------------------------------------- |
| `Initialize`                            | Funding                      | 0           | 0                       | —                                                     |
| `BuyExactIn` / `BuyExactOut`            | Funding                      | `+base_out` | `+quote_in_after_fee`   | —                                                     |
| `SellExactIn` / `SellExactOut`          | Funding                      | `−base_in`  | `−quote_out_before_fee` | —                                                     |
| `MigrateToAmm` / `MigrateToCpswap`      | Funding → Migrate → Migrated | (frozen)    | (frozen)                | создан, LP разделен по `PlatformConfig`               |
| `ClaimCreatorFee` / `ClaimPlatformFee*` | any                          | —           | —                       | очищает хранилище сборов                              |
| `CreateVestingAccount`                  | Funding                      | —           | —                       | увеличивает `vesting_schedule.allocated_share_amount` |
| `ClaimVestedToken`                      | Migrated only                | —           | —                       | очищает `base_vault`                                  |

## Дальнейшее изучение

* [`products/launchlab/bonding-curve`](/ru/products/launchlab/bonding-curve) — математика за `real_base` ↔ `real_quote`.
* [`products/launchlab/instructions`](/ru/products/launchlab/instructions) — списки аккаунтов на инструкцию.
* [`products/launchlab/global-config`](/ru/products/launchlab/global-config) — привязка на уровне протокола.
* [`products/launchlab/platform-config`](/ru/products/launchlab/platform-config) — наложение платформы.
* [`products/launchlab/vesting`](/ru/products/launchlab/vesting) — механика блокировки предложения.
* [`products/cpmm/accounts`](/ru/products/cpmm/accounts) — как выглядит постградуационный `cpmm_pool_state`.

Источники:

* `raydium-launch/programs/launchpad/src/states/pool.rs` — `PoolState`, `PoolStatus`, `VestingSchedule`, `AmmCreatorFeeOn`.
* `raydium-launch/programs/launchpad/src/lib.rs` — константы seed PDA (`AUTH_SEED`, `CREATOR_FEE_VAULT_AUTH_SEED`, `PLATFORM_FEE_VAULT_AUTH_SEED`).
* [Модуль `launchpad` Raydium SDK v2](https://github.com/raydium-io/raydium-sdk-V2).
