Перейти к основному содержанию

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.

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

Единственный опубликованный уровень

В отличие от CPMM и CLMM, AMM v4 не имеет учётной записи AmmConfig. Комиссии хранятся непосредственно в структуре AmmInfo.fees каждого пула и фиксируются при создании пула. Значения по умолчанию, применяемые практически ко всем работающим пулам AMM v4:
Поле в цепиПо умолчаниюЗначение
swap_fee_numerator / swap_fee_denominator25 / 10_000Валовая торговая комиссия для свопов по AMM: 0,25% от объёма входных токенов.
trade_fee_numerator / trade_fee_denominator25 / 10_000Используется интеграцией с OpenBook для расчёта цены лимитного ордера с учётом комиссии. По умолчанию совпадает с swap_fee (0,25%).
pnl_numerator / pnl_denominator12 / 100Доля протокола в комиссии свопа: 12% — то есть 0,25% × 12% = 0,03% от объёма. Накапливается в счётчиках need_take_pnl_*.
min_separate_numerator / min_separate_denominator5 / 10_000Внутренний порог точности, используемый логикой округления распределения комиссий.
Обратите внимание, что pnl_numerator / pnl_denominator — это доля от торговой комиссии, а не от объёма торговли (распространённое неправильное прочтение). Доля LP — это дополнение (88% комиссии = 0,22% от объёма) и задаётся неявно; отдельного числителя для «доли LP» нет. Небольшое количество ранних пулов создано с другими числителями; всегда проверяйте AmmInfo.fees перед цитированием. Нет комиссии фонда и нет комиссии создателя — это изобретения CPMM/CLMM, которых не было в исходной модели комиссий AMM v4.

Как вычисляется распределение

При каждом своппе пул снимает валовую торговую комиссию с входной суммы, затем распределяет её:
gross_fee   = ceil(amount_in * swap_fee_numerator / swap_fee_denominator)        // 0.25% of amount_in
pnl_portion = gross_fee * pnl_numerator / pnl_denominator                        // 12% of gross_fee
lp_portion  = gross_fee − pnl_portion                                            // 88% of gross_fee
  • lp_portion остаётся в хранилище и способствует следующему значению k. LP получают её, сжигая LP-токены позже.
  • pnl_portion увеличивает AmmInfo.state_data.need_take_pnl_coin или need_take_pnl_pc в зависимости от того, какая сторона является входом свопа.
Тот же инвариант-сохраняющий трюк, что и в CPMM: сумма PnL физически находится в хранилище, но вычитается из резервов, используемых в кривой, поэтому TakePnl выводит токены без смещения цены.

PnL из OpenBook (историческое)

Больше не накапливается. Интеграция с OpenBook отключена, поэтому второй поток PnL, описанный в этом разделе, больше не генерируется. Счётчики total_pnl_{coin,pc} на существующих пулах могут содержать исторические значения, но новые суммы не добавляются. Путь комиссии протокола 0,03% (выше) остаётся неизменным и всё ещё активен.
Исторически AMM v4 имел второй поток дохода, похожий на комиссию: когда его лимитные ордера на OpenBook заполнялись, пул мог находиться на стороне тейкера заполнения и получать или платить спред создателя/тейкера рынка. Эти события PnL рассчитывались в хранилищах пула во время MonitorStep, и программа зачисляла их в state_data.total_pnl_{coin,pc} как информационные счётчики.
  • Когда размещённая сетка пула была правильно откалибрована вокруг цены кривой, заполнения на OpenBook, как правило, были позитивны для пула — AMM эффективно создавал рынок на OpenBook и получал скидки для создателей.
  • Когда OpenBook приостанавливался или очередь событий переполнялась, пул мог остаться с устаревшими ордерами, заполненными по неудачным ценам, создавая отрицательный PnL. Эта операционная связь была одной из мотиваций отхода от гибридной конструкции.
Этот PnL OpenBook не совпадал с комиссией протокола 0,03%. PnL OpenBook увеличивал резервы пула напрямую (принося пользу LP + протоколу пропорционально разделению комиссий), тогда как комиссия протокола 0,03% была помечена специально для сбора админом. Поскольку сторона OpenBook отключена, единственное начисление комиссии сегодня — это 0,25% на свопы AMM и её распределение 22/3.

Сбор

Администратор (мультиподпись Raydium) вызывает WithdrawPnl / TakePnl для сбора need_take_pnl_* на счета владельца PnL уровня пула, настроенные в AmmConfig программы (другая конфигурация уровня программы — не специфичная для каждого пула конфигурация в стиле CPMM). Сбор:
  1. Сначала рассчитывает все ожидающие заполнения OpenBook. (Нет-оп, теперь что OpenBook неактивна.)
  2. Переводит need_take_pnl_coin / need_take_pnl_pc из хранилищ пула в пункт назначения PnL.
  3. Обнуляет счётчики.
Операция не смещает кривую. LP не должны видеть изменение цены во время вызова TakePnl.

Получение комиссий LP

Нет выделенной инструкции «собрать комиссии LP». Комиссии LP накапливаются в хранилищах и увеличивают k со временем; LP реализуют их, сжигая LP-токены через Withdraw. Значение LP-токена растёт монотонно по мере роста (coin_reserve_effective, pc_reserve_effective).

Визуализация: куда идёт объём в 1000 USDC

На своппе, тяжёлом на USDC, в размере $1000 против пула с параметрами по умолчанию:
Валовая торговая комиссия (0,25%):   $2.50
  Доля LP   (0,22%):                   $2.20   → остаётся в пуле, увеличивает k
  Доля PnL  (0,03%):                   $0.30   → need_take_pnl_pc, собирается TakePnl
Остаток отправлен пользователю:      $997.50   (минус влияние цены, обусловленное кривой)
Сравните с CPMM AmmConfig[0] (уровень 0,25%, без комиссии создателя): LP получает $2.10, протокол $0.30, фонд $0.10. CPMM вводит строку фонда, вырезая её из того, что была бы доля LP в эквивалентном уровне AMM v4.

Таблица сравнения

AMM v4CPMM index=0CLMM index=2
Торговая комиссия0,25%0,25%0,25%
LP0,22%0,21%Зависит от выпусков
Протокол0,03%0,03%Зависит от уровня
ФондN/A0,01%Зависит от уровня
Создатель (опционально)N/A0 по умолчаниюN/A
Где находятся комиссииХранилище пула + need_take_pnl_*Хранилище пула + protocol_fees_* + fund_fees_*Глобально + per-tick + per-position
Полная матрица в reference/fee-comparison.

Примечания для интеграторов

  • Цитирование. Получайте AmmInfo через SDK или api-v3.raydium.io/pools/info/ids. Не вычисляйте собственное предложение против сырых балансов хранилища — суммы в условном доверительном управлении OpenBook и исключение PnL оба отводят эффективные резервы от того, что показывает getTokenAccountBalance.
  • Устаревшие параметры комиссии. В принципе SetParams может изменить swap_fee_numerator, но на практике мультиподпись Raydium не изменила значения по умолчанию ни для одного работающего пула. Тем не менее всегда читайте из состояния в цепи, а не из жёстко закодированных значений.
  • Нет вознаграждений. AMM v4 не поддерживает выпуск вознаграждений на уровне пула. Экосистемные фермы наследия (Farm v3 / v5 / v6) — эквивалент уровня стейкинга — см. products/farm-staking.

Куда дальше

Источники: