Skip to main content
Эта страница переведена с помощью ИИ. За эталон принимается английская версия.Открыть английскую версию →

Что такое кривая привязки

Кривая привязки — это детерминированная функция цены p(s), которая связывает цену токена с объёмом, находящимся в обращении (s — количество проданного предложения). Покупатели отправляют залог контракту; контракт выпускает новые единицы токена по предельной цене, задаваемой кривой. Продавцы возвращают единицы токена и получают интегрированный возврат. Два ключевых отличия от CPMM-пула:
  • Контрагент не требуется. Контракт-издатель — это маркет-мейкер; ликвидность существует по определению.
  • Монотонная цена. Цена растёт с каждой чистой покупкой и падает с каждой чистой продажей.
Кривые привязки — стандартный механизм запуска, когда издатель не хочет предварительно наполнять AMM-пул залогом.

Универсальные формулы цены

Для любой непрерывной функции цены p(s): Спотовая цена при предложении s:
Стоимость покупки предложения от s_0 до s_1 (где s_1 > s_0):
где P(s) = ∫ p(s) ds — первообразная кривой. Геометрически cost — это площадь под кривой p между s_0 и s_1. Доход от продажи предложения обратно от s_1 к s_0:
(Симметрия: покупка и продажа на одном и том же интервале обмениваются одинаковым залогом — за исключением комиссий.) Средняя цена для покупки:

Распространённые типы кривых

Линейная

Цена растёт пропорционально предложению. Используется для «плавных» запусков, когда издатель хочет предсказуемую, умеренную наценку в течение жизни проекта.

Квадратичная

Цена растёт квадратично. Ранние покупатели получают почти нулевую цену (плоская начальная область); поздние покупатели платят крутую премию. Это тип кривой, который LaunchLab использует по умолчанию (curve_type = 0).

Virtual-reserves CPMM (стиль Pump)

Кривая — это стандартный CPMM с воображаемым начальным резервом quote V_q:
Спотовая цена:
Стоимость перемещения от s_0 к s_1:
Этот вариант обладает элегантным свойством: при выпуске (где s = S_graduate), предельная цена равна цене открытия нижестоящего CPMM-пула, заполненного резервами (S_max − S_graduate, V_q + cost(0, S_graduate)). Передача неразрывна. LaunchLab предоставляет это как curve_type = 1.

Дискретная реализация

На цепи s и cost — оба целые числа (единицы минимального номинала). Непрерывный интеграл cost(s_0, s_1) вычисляется прямо из закрытой формы, когда она существует (линейная, квадратичная). Для кривых без закрытой обратной формы (квадратичная, при известной cost найти s_1) используется итерация Ньютона:
LaunchLab ограничивает итерации примерно 10 и откатывает с ошибкой NotConverged, если остаток всё ещё выше допуска. На практике это срабатывает только на краях области; обычные свопы сходятся за 2–3 итерации.

Интеграция комиссий

Комиссии применяются поверх стоимости кривой, не внутри неё. При покупке:
При продаже:
LP-часть комиссии остаётся в quote_vault и фактически делает кривую более крутой для будущих покупателей — резерв растёт без выпуска дополнительного предложения. Части протокола и создателя отслеживаются в отдельных счётчиках для последующего снятия.

Порог выпуска

Кривая «выпускается», когда она получила достаточно залога для запуска внешнего AMM-пула по цене, соответствующей текущей цене кривой. Для квадратичной кривой с параметрами (k, S_max, S_graduate):
Как только quote_vault ≥ quote_to_graduate, инструкция Graduate создаёт CPMM-пул с:
Для кривой virtual-reserves по конструкции:
Для квадратичной кривой равенство приблизительно; «люфт» поглощается округлением S_graduate (обычно 0.8 · S_max) и избыточным залогом от финальной покупки, пересекающей порог.

Непостоянство против CPMM-пула

Чистый запуск с кривой привязки имеет нулевое непостоянство в смысле Uniswap: нет «другой стороны» рынка для переуравновешивания. Кривая выпускает предложение по требованию, и единственный «LP» — это сам контракт. После выпуска полученный CPMM-пул ведёт себя как любой другой CPMM-пул — если LP не был сожжён, он подвержен обычной динамике непостоянных потерь. Вот почему сжигание после выпуска — доминирующая политика в публичных запусках: оно делает пул постоянным и устраняет ценовые шоки, вызванные выводом LP.

Выполненный пример

Кривая: квадратичная, k = 40, S_max = 1e9, S_graduate = 0.8 · S_max = 8e8. Комиссия на покупку 1%.

Цена при s = 5e8

10 единиц quote на одну единицу base.

Стоимость первой покупки 1e6 base

С комиссией 1%:

Порог выпуска

Цена при выпуске

Резервы CPMM после выпуска

(Единицы измерения: десятичные значения требуют тщательного отслеживания; пример иллюстративный.)

Ссылки

Источники:
  • Исходный код программы Raydium LaunchLab (реализация квадратичной кривой и virtual-reserves).
  • Белая книга Bancor (линейные кривые привязки, исторический контекст).
  • Публичные анализы ошибок Pump.fun (вариант virtual-reserves).