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

> Полный цикл запуска токена через LaunchLab: выбор кривой, первоначальная конфигурация, мониторинг активности на кривой цены до выпуска, и проверка выпущенного CPMM пула.

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

  [Открыть английскую версию →](/user-flows/launch-token-launchlab)
</Info>

## Что вам понадобится

* **Минт токена** — токен, который вы хотите продать. Должен быть только что выпущен со следующими условиями:
  * Весь объём поставки получен вашим кошельком (чтобы вы могли пополнить кривую).
  * Право на минтинг отозвано перед запуском (иначе цену кривой можно манипулировать, выпустив новые токены).
* **Метаданные** — название, символ, изображение, ссылки в соцсетях. Метаплекс-метаданные или аналогичные.
* **Кошелёк** — \~1 SOL на плату за создание + финансирование хранилища + приоритетные комиссии (выпуск оплачивает лицо, инициирующее выпуск, а не вы).
* **Решения по**:
  * Тип кривой (квадратичная или виртуальные резервы CPMM).
  * Порог выпуска.
  * Политика распределения LP (Сжечь / Заблокировать / Создателю).
  * Начальная цена и лимит.

## Выбор кривой

LaunchLab поддерживает две семьи кривых:

### Квадратичная (`curve_type = 0`)

Цена растёт квадратично с объёмом проданных токенов. Классическое ощущение «честного запуска» — ранние покупатели получают ценовое преимущество, поздние платят больше, цена растёт плавно.

```
price(s) = a * s^2 + b * s + c
```

где `s` — объём проданных токенов. Обычно `a > 0` (выпуклая). Спред между начальной и конечной ценой определяется параметрами `a, b, c` и лимитом.

Лучше для: новинок, мемов, проектов, ориентированных на сообщество.

### Виртуальные резервы CPMM (`curve_type = 1`)

Имитирует constant-product AMM с использованием *виртуальных* резервов — кривая ведёт себя как CPMM с `x * y = k`, но пул инициализируется синтетическими токенами, которые никогда не выводятся.

```
price = virtual_quote_reserve / virtual_base_reserve
```

По мере покупок `virtual_base_reserve` снижается, а `virtual_quote_reserve` растёт — кривая выглядит идентично CPMM пулу после выпуска. Более гладкий переход.

Лучше для: запусков, требующих предсказуемую ценовую непрерывность после выпуска.

## Пошаговое прохождение через UI

На [raydium.io/launchpad/create](https://raydium.io/launchpad/create):

1. **Токен.** Введите адрес минта. UI загружает метаданные и показывает их.

2. **Тип кривой.** Выберите квадратичную или виртуальную CPMM; UI показывает предпросмотр ценовой диаграммы для каждой.

3. **Порог выпуска.** По умолчанию: кривая заканчивается после продажи всего `total_base_supply`. Альтернатива: завершить при определённой сумме `graduation_quote_amount` (например, 85 SOL).

4. **Минт котировки.** SOL (по умолчанию), USDC или любой другой минт. SOL — стандарт.

5. **Политика распределения LP:**

   * **Сжечь** — LP токены отправляются на непригодный адрес при выпуске. Создатель не может вывести ликвидность; пользователи доверяют пулу навсегда.
   * **Заблокировать** — LP токены отправляются в escrow с временной блокировкой на `lock_duration`.
   * **Создателю** — LP токены отправляются создателю. Наиболее гибко, минимум минимизации риска.

   Уважаемые запуски обычно используют Сжечь.

6. **Проверка.** UI резюмирует: ожидаемый диапазон цен, начальный сбор при полной продаже кривой, конфигурацию выпущенного CPMM.

7. **Подписать.** Одна транзакция создаёт состояние запуска + базовое хранилище + хранилище котировки, переводит `total_base_supply` из вашего кошелька в базовое хранилище.

## Программный процесс

```ts theme={null}
import { Raydium, TxVersion } from "@raydium-io/raydium-sdk-v2";
import { PublicKey } from "@solana/web3.js";
import BN from "bn.js";

const raydium = await Raydium.load({ connection, owner, cluster: "mainnet" });

const baseMint  = new PublicKey("MyNewToken...");
const quoteMint = new PublicKey("So11111111111111111111111111111111111111112"); // SOL

const { execute, extInfo } = await raydium.launchpad.createLaunchpad({
  programId:      LAUNCHPAD_PROGRAM_ID,
  baseMint,
  quoteMint,
  curveType:      0,                           // quadratic
  totalBaseSupply:    new BN("1000000000000000000"),   // 1B tokens with 9 decimals
  graduationQuoteAmount: new BN("85000000000"),         // 85 SOL
  lpDisposalPolicy:   "Burn",
  priceCurveParams: {
    a: new BN("1"),
    b: new BN("0"),
    c: new BN("0"),
  },
  startTime: new BN(Math.floor(Date.now() / 1000) + 300),  // start in 5 min
  txVersion: TxVersion.V0,
  computeBudgetConfig: { units: 400_000, microLamports: 50_000 },
});

const { txId } = await execute({ sendAndConfirm: true });
console.log("Launch ID:", extInfo.launchId.toBase58());
console.log("Base vault:", extInfo.baseVault.toBase58());
console.log("Quote vault:", extInfo.quoteVault.toBase58());
```

## Мониторинг перед выпуском

Отслеживайте активность через API:

```ts theme={null}
const status = await fetch(
  `https://api-v3.raydium.io/launchpad/status?launchId=${launchId}`
).then(r => r.json());

console.log("Продано пока:",       status.baseSold.toString());
console.log("Собрано котировки:",      status.quoteRaised.toString());
console.log("Текущая цена:",     status.currentPriceUsd);
console.log("Прогресс выпуска:", status.graduationProgress, "%");
```

Или декодируйте состояние on-chain напрямую:

```ts theme={null}
const launchState = await raydium.launchpad.fetchLaunchState(launchId);
console.log({
  baseSold:   launchState.baseSold.toString(),
  quoteHeld:  launchState.quoteHeld.toString(),
  graduated:  launchState.graduated,
});
```

### Метрики для отслеживания

* **Доля продаж**: процент проданных базовых токенов. Порог выпуска обычно составляет 80–100% от всего объёма.
* **Текущая цена**: рассчитывается по кривой при текущем значении `baseSold`.
* **Уникальные покупатели**: количество различных плательщиков по данным индексатора.
* **Соотношение покупок и продаж**: ранние запуски видят интенсивное давление спроса, которое замедляется.

Если доля продаж менее 10% спустя 24 часа, рассмотрите, адекватна ли маркетинг. LaunchLab не спасает недокреплённые запуски.

## Выпуск

Выпуск — это отдельная транзакция, которую может вызвать кто угодно (обычно первый, кто заметит, что порог достигнут, получает небольшой бонус `graduation_bounty`). От вас как создателя не требуется никаких действий помимо первоначальной настройки.

### Что делает выпуск

1. Читает балансы хранилищ.
2. Закрывает кривую (больше никаких покупок/продаж против неё).
3. Создаёт новый CPMM пул с балансами хранилищ как начальная ликвидность.
4. Минтит начальные LP токены на основе балансов хранилищ.
5. Распределяет LP токены согласно настроенной политике (Сжечь / Заблокировать / Создателю).

После выпуска CPMM пул работает и торги идут через обычную маршрутизацию Raydium.

### Мониторинг выпуска

```ts theme={null}
const launchState = await raydium.launchpad.fetchLaunchState(launchId);
if (launchState.graduated) {
  const cpmmPoolId = launchState.graduatedCpmmPool;
  console.log("Выпущен на CPMM пул:", cpmmPoolId.toBase58());
}
```

### Ручной выпуск

Если никто не заявил бонус и вы хотите принудительно выпустить, вы можете сделать это сами:

```ts theme={null}
await raydium.launchpad.graduate({
  launchId,
  txVersion: TxVersion.V0,
  computeBudgetConfig: { units: 600_000, microLamports: 100_000 },
});
```

Выпуск требует значительных CU; запланируйте 600k.

## После выпуска

### Проверьте CPMM пул

```ts theme={null}
const pool = await raydium.cpmm.getPoolInfoFromRpc({ poolId: cpmmPoolId });
console.log("CPMM цена:", pool.poolInfo.price);
console.log("CPMM TVL:  ", pool.poolInfo.tvl);
```

CPMM пул должен содержать (приблизительно):

* Баланс базового токена: `total_base_supply - baseSold` + остаток кривой.
* Баланс котировочного токена: `quoteRaised - graduationFee`.
* Цена: совпадает с последней ценой кривой.

### Проверьте распределение LP

* **Сжечь**: поставка LP минта показывает отправку на 1nc1nerator11111111111111111111111111111111 или похожий адрес.
* **Заблокировать**: LP токены в escrow PDA с временной меткой разблокировки.
* **Создателю**: LP токены в кошельке создателя.

### Собирайте комиссии создателя

Если вы настроили долю комиссии создателя, вызывайте периодически:

```ts theme={null}
await raydium.launchpad.collectCreatorFees({
  launchId,
  txVersion: TxVersion.V0,
});
```

Комиссии начисляются на торги кривой до выпуска и на выпущенный CPMM пул после выпуска (если LP отправляется создателю).

## Чеклист объявления

Объявление после выпуска должно включать:

* [ ] Хеш транзакции выпуска.
* [ ] ID нового CPMM пула.
* [ ] Доказательство распределения LP (сжигание / блокировка / кошелёк создателя).
* [ ] ETA покрытия агрегатором (кошельки обычно индексируют в течение 5 минут).
* [ ] Проверка контракта токена (совпадение адреса минта во всех каналах объявления).

## Ошибки

### 1. Право на минтинг не отозвано

Если `baseMint.mintAuthority` всё ещё под вашим контролем, вы можете выпустить новые токены и продать их в свою кривую. Запуски без отозванного права обычно помечаются как высокорискованные или непроверенные агрегаторами и сайтами листингов. Отзовите перед запуском.

### 2. Неправильные параметры кривой

Квадратичные кривые с очень высоким `a` делают ранние токены почти бесплатными (цена ≈ 0) и поздние — абсурдно дорогими. Кривые с очень низким `a` становятся почти линейными (теряют «бондинговое» ощущение). Сначала протестируйте параметры на devnet.

### 3. Порог выпуска слишком высокий

Если выпуск требует больше капитала, чем реальный спрос, кривая никогда не выпускается, и покупатели застревают с токенами, которые могут только продать обратно кривой (по худшим ценам). Выберите порог, который вы действительно можете достичь.

### 4. Мошенничество с котировочным минтом

Если ваш котировочный минт — это пользовательский токен (не SOL/USDC), пользователи ему не доверят. Придерживайтесь SOL или USDC для котировки.

### 5. Забыли пополнить базовое хранилище

SDK переводит `totalBaseSupply` из вашего кошелька при создании. Если у кошелька её нет, транзакция откатывается. Подтвердите баланс перед подписью.

### 6. Распределение LP = Сжечь необратимо

После отправки LP на 1nc1nerator никто не может вывести ликвидность, *включая вас*. В этом суть — минимизация риска. Не выбирайте Сжечь, если не уверены.

### 7. Уровень комиссии CPMM после выпуска

Выпущенный пул использует конфигурацию CPMM LaunchLab по умолчанию (0.25%). Если вам нужна 1% или 0.01%, вам нужно создать второй CPMM пул самостоятельно после выпуска и перенести ликвидность — неудобно и фрагментировано. Примите стандарт или запускайте через прямое создание CPMM вместо LaunchLab.

## Ссылки

* [`products/launchlab/overview`](/ru/products/launchlab/overview) — концепция и цикл жизни LaunchLab.
* [`products/launchlab/bonding-curve`](/ru/products/launchlab/bonding-curve) — математика кривой подробно.
* [`products/launchlab/instructions`](/ru/products/launchlab/instructions) — полная документация инструкций.
* [`products/launchlab/vesting`](/ru/products/launchlab/vesting) — механика графика vesting.
* [`algorithms/bonding-curves`](/ru/algorithms/bonding-curves) — общая математика кривых цены.
* [`user-flows/creating-a-launchlab-token`](/ru/user-flows/creating-a-launchlab-token) — пошаговое прохождение UI для создателей токенов (режимы JustSendit и LaunchLab).
* [`user-flows/how-creator-fees-work`](/ru/user-flows/how-creator-fees-work) — обзор комиссий создателя до и после миграции.

Источники:

* Раздел `launchpad` SDK Raydium v2.
* Статус запуска через конечные точки `api-v3.raydium.io`.
