Перейти к основному содержанию
Breaking13 апреля 2026

Обзор

LP-комиссии больше не авто-компаундятся в резервы пула. Вместо этого доля LP-комиссий переводится в fee vault каждого пула (per-pool fee vault) при каждом свопе. LP-холдеры видят явный растущий баланс наград и клеймят их мгновенно через claim_lp_fees — без вестинга, без merkle proof, без off-chain сервера. Это изменение гарантирует, что капитализация пула никогда не размывается извлечением комиссий, и обеспечивает LP-холдерам единый, прозрачный опыт получения наград.

Что изменилось

До (Auto-Compound модель)

fee_lp → остаётся в резервах пула (авто-компаунд)
         LP-холдеры получают выгоду пассивно через рост резервов
         Не требует явного клейма

reserve_in  += amount_in - fee_protocol - ot_treasury_fee  (если input=RWT)
reserve_out -= amount_out + fee_protocol + ot_treasury_fee
// LP-комиссия оставалась в резервах — не вычиталась
Проблемы:
  • LP-комиссия была невидимой для пользователя — без явного учёта наград
  • Извлечение комиссии из суммы свопа снижало эффективную глубину пула
  • Нет единого опыта наград — OT yield клеймится отдельно от LP-дохода

После (Per-Pool Fee Vault, мгновенный клейм)

fee_lp → переводится в fee_vault пула (RWT-аккаунт, принадлежащий PDA пула)
         LP-холдеры клеймят пропорционально через claim_lp_fees
         Без вестинга, без merkle proof, без off-chain сервера

// Комиссии взимаются ПОВЕРХ — резервы пула нетронуты:
reserve_in  += amount_in       // полная сумма входит в пул
reserve_out -= amount_out_gross // полная gross сумма выходит из пула
// Все комиссии внешние для резервов
Преимущества:
  • Капитализация пула никогда не снижается за счёт комиссий
  • LP-холдеры видят явный растущий баланс наград — клеймабельный мгновенно
  • Простой on-chain учёт: cumulative_fees_per_share (O(1) на холдера)
  • Нет off-chain зависимости — полностью on-chain распределение комиссий
  • OT yield продолжает авто-компаундиться в резервы пула (более глубокая ликвидность)

Поток комиссий по направлению свопа

Продажа RWT пользователем (input = RWT)

Комиссии взимаются поверх суммы свопа. Кошелёк пользователя дебетуется на amount_in + fee_total + ot_treasury_fee.
fee_total       = amount_in × fee_bps / 10,000
fee_lp          = fee_total × lp_fee_share_bps / 10,000
fee_protocol    = fee_total - fee_lp
ot_treasury_fee = amount_in × OT_TREASURY_FEE_BPS / 10,000  (только OT-пары)

user_total_debit = amount_in + fee_total + ot_treasury_fee
amount_out       = constant_product(amount_in)  // полный amount_in использован
Поток токеновСуммаПолучатель
User RWT → Pool vaultamount_inРезервы пула (полностью, без вычетов)
User RWT → Pool fee_vaultfee_lpКлеймабельно LP-холдерами через claim_lp_fees
User RWT → Areal Financefee_protocolДоход протокола
User RWT → OT Treasuryot_treasury_feeКазначейство проекта (только OT-пары)
Pool vault → Useramount_outПользователь получает выходной токен

Покупка RWT пользователем (input = OT/USDC)

Комиссии вычитаются из gross RWT output. Пользователь получает чистую сумму после всех комиссий.
amount_out_gross = constant_product(amount_in)
fee_total        = amount_out_gross × fee_bps / 10,000
fee_lp           = fee_total × lp_fee_share_bps / 10,000
fee_protocol     = fee_total - fee_lp
ot_treasury_fee  = amount_out_gross × OT_TREASURY_FEE_BPS / 10,000  (только OT-пары)

amount_out = amount_out_gross - fee_total - ot_treasury_fee
Поток токеновСуммаПолучатель
User → Pool vaultamount_inРезервы пула
Pool vault → Pool fee_vaultfee_lpКлеймабельно LP-холдерами через claim_lp_fees
Pool vault → Areal Financefee_protocolДоход протокола
Pool vault → OT Treasuryot_treasury_feeКазначейство проекта (только OT-пары)
Pool vault → Useramount_outПользователь получает чистый RWT

Поток клейма LP-наград

LP-награды используют per-pool fee vault с учётом через cumulative_fees_per_share — полностью on-chain, без off-chain зависимостей:
1

Своп происходит

При каждом свопе fee_lp (в RWT) переводится в fee_vault пула. Контракт обновляет: cumulative_fees_per_share += fee_lp × PRECISION / total_lp_shares.
2

Мгновенная доступность

Награды доступны сразу после каждого свопа. Без вестинга, без пересборки merkle tree, без off-chain сервера. Полностью on-chain O(1) учёт.
3

Пользователь клеймит

LP-холдер вызывает claim_lp_fees на контракте DEX. Клеймабельная сумма: shares × cumulative_fees_per_share / PRECISION - fees_claimed. RWT переводится из fee_vault в RWT ATA холдера.
Два потока наград для LP-холдеров:
ПотокИсточникМеханизмДоступность
LP Swap FeesFee vault каждого пулаclaim_lp_fees (on-chain учёт)Мгновенно
OT YieldYield Distributioncompound_yield (авто-компаунд в резервы)Пассивно (увеличивает стоимость LP)

Изменения Nexus (LP Areal Finance)

Nexus PDA — внутреннее управление LP от Areal Finance — упрощается:
ДоПосле
nexus_withdraw_profits — отслеживание principal, profit = баланс ATA − principalnexus_claim_rewards — клеймит LP-комиссии из fee vault пула в Казначейство Areal
Поля state principal_usdc, principal_rwttotal_deposited_usdc, total_deposited_rwt (только учёт)
Principal заблокирован постоянно, выводится только profitНаграды LP-комиссий клеймятся через cumulative_fees_per_share, блокировка principal не нужна

Влияние на резервы

МетрикаДоПосле
Резервы пула после свопаСнижены на комиссии протокола + OT TreasuryНеизменны — все комиссии внешние
LP-комиссия в резервахДа (авто-компаунд)Нет — отправляется в fee vault пула
Капитализация пулаУменьшалась при извлечении комиссийСохраняется — комиссии поверх
Видимость наград LPНеявная (через рост резервов)Явная (клеймабельный баланс)

Связанные контракты

Native DEX

Полная документация контракта с обновлённой архитектурой комиссий.

Yield Distribution

Reward vault, merkle claims и механика вестинга.