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 поддерживает три форма кривых, выбираемые при
Initialize: constant-product (наиболее распространённая, форма с виртуальными резервами классической кривой x · y = k), linear-price и fixed-price. Формула порога градации одинакова для всех трёх. На этой странице подробно разбирается математика constant-product; линейная и фиксированная формы описаны в конце.Параметры, хранящиеся на LaunchState
| Поле | Значение |
|---|---|
curve_type | 0 = constant-product (виртуальные резервы), 1 = fixed-price, 2 = linear-price. |
base_supply_max | Максимальное количество базовых токенов, которые кривая когда-либо может выпустить. |
base_supply_graduation | Базовые токены, которые должны быть проданы для достижения градации. Обычно 0.8 × base_supply_max; оставшиеся 20% становятся начальной LP пула после градации. |
quote_reserve_target | Сумма котировки, которая запускает градацию. Вычисляется при Initialize из параметров кривой + base_supply_graduation. |
virtual_base / virtual_quote | Семена виртуальных резервов для кривой constant-product. |
migrate_type | Выбирает целевой пул после градации: AMM v4 или CPMM. См. instructions. |
fees.buy_numerator / buy_denominator | Комиссия на покупку, например 100 / 10_000 = 1.00%. |
fees.sell_numerator / sell_denominator | Комиссия на продажу. Часто такая же, как на покупку. |
fees.protocol_share, fees.creator_share, fees.lp_share | Распределение вышеуказанных комиссий, в сумме равное denominator. |
PoolState, описанными в accounts; единицы выше являются концептуальными.
Кривая constant-product с виртуальными резервами (curve_type = 0)
Кривая по умолчанию и наиболее часто используемая. Все pump-style запуски используют эту форму. Кривая предполагает, что с самого начала существует виртуальный резерв котировки V_q и виртуальный базовый резерв V_b (хранятся как virtual_quote и virtual_base на PoolState), поэтому эффективный пул выглядит как CPMM с этими резервами. Покупки следуют математике x · y = k:
base_out:
s:
x · y = k, который LaunchLab применяет до градации, становится буквально кривой CPMM (или AMM v4) после градации, поэтому переход при градации работает механически безупречно: предельная цена при base_sold = base_supply_graduation равна цене, с которой открывается пул после градации, с (quote_vault, base_vault_remaining) в качестве его резервов.
Кривая с фиксированной ценой (curve_type = 1)
Кривая с плоской ценой. Каждая покупка/продажа происходит по постоянной цене, настраиваемой при Initialize:
base_supply_graduation (линейная связь стоимости делает вывод quote_reserve_target прямолинейным).
Кривая с линейной ценой (curve_type = 2)
Цена растёт линейно с base_sold:
base_sold — ранние покупатели платят близко к нулю, поздние покупатели платят значительно больше, при этом предельная цена всегда растёт с фиксированным наклоном. On-chain реализация находится в curve/linear_price.rs.
Сравнение форм кривых
Порог градации
quote_reserve_target вычисляется при Initialize как котировка, необходимая для доведения base_sold от 0 до base_supply_graduation:
quote_vault.balance ≥ quote_reserve_target. Поскольку покупки приходят дискретными размерами, фактический баланс при градации может немного превышать целевой — излишек становится дополнительной ликвидностью на стороне котировки в результирующем CPMM пуле.
Практический пример — квадратичный запуск
Параметры:base_supply_max = 1_000_000_000(1 миллиард базовых токенов, 6 децималей)base_supply_graduation = 800_000_000(продажа 80% запускает градацию)k = 40(масштаб цены)- Комиссии: 1% на покупку, 1% на продажу, распределение
lp:creator:protocol = 60:20:20.
s = 0): 0 (чистая квадратика начинается с нуля).
Цена при 50% продано (s = 500_000_000):
s = 800_000_000):
10 USDC:
- Виртуальное состояние:
s = 0,quote_vault = 0. - Вычесть комиссию:
quote_after_fee = 10 × 0.99 = 9.9. - Решить
(40 / (3e18)) × s³ = 9.9⇒s ≈ 6.22e6базовых токенов куплено. - Комиссия 1% (
0.1 USDC) распределена: lp0.06, creator0.02, protocol0.02. Доля lp остаётся вquote_vault; остальные две направляются в их соответствующие счётчики.
s₀ = 750e6 с quote_in_after_fee = 9.9 даёт примерно ∆s ≈ 0.4e6 — ~15-кратное уменьшение базовых токенов на USDC по сравнению с первой покупкой.
Механика комиссий во время фазы кривой
На каждыйBuy:
lp_shareостаётся вquote_vault. Это то, что делает эффективную кривую более напряжённой (больше резерва котировки против того же предложения базовых токенов).protocol_shareувеличиваетLaunchState.state_data.protocol_fees_quote.creator_shareувеличиваетLaunchState.state_data.creator_fees_quote.
Sell применяется то же распределение, но комиссия вычитается из исходящего quote_out.
Оба счётчика очищаются через CollectFees (администратор или создатель, каждый на свой счётчик).
Точность
- Суммы на стороне базовых токенов:
u64. - Суммы на стороне котировки:
u64. - Промежуточные кубы / произведения:
u128. - Newton-решения для «покупить точное количество котировки» и «продать точное количество котировки» итерируют в
u128с фиксированной точкой с настраиваемым максимальным количеством итераций (по умолчанию 10). Режим отказа —NotConverged— редок вне граничных случаев близ градации.
Переход к CPMM
Когда срабатываетGraduate:
cpmm_initial_price механически есть price(base_sold) (это предельная цена кривой в момент перехода). Пул CPMM открывается ровно с этой ценой, поэтому наблюдатель, переходящий от UI кривой к UI CPMM, не видит скачков.
Куда дальше
products/launchlab/accounts— поляLaunchState, хранящие эти параметры.products/launchlab/instructions— списки аккаунтов дляBuy,Sell,Graduate.algorithms/constant-product— математика CPMM, используемая пулом после градации.
- Raydium SDK v2 модуль
LaunchLab - Исходный код программы Raydium LaunchLab


