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

Обзор

Master Pool Rebalancer — автономный протокольный модуль, управляющий собственной ликвидностью AREAL DAO в master concentrated pools (RWT/USDY, RWT/USDC) на native DEX. Этот модуль отделён от контракта DEX — он работает как независимая программа, взаимодействующая с DEX через CPI. Обеспечивает, что протокольная ликвидность всегда сконцентрирована вокруг текущего NAV Book Value, предоставляя глубокую ликвидность именно там, где происходит торговля.
Этот модуль управляет только протокольной ликвидностью. Пользовательские LP-позиции на native DEX никогда не затрагиваются, не модифицируются и не ребалансируются. Пользователи управляют своими позициями самостоятельно.

On-Chain аккаунты

ProtocolLiquidity

Основной PDA для протокольной позиции каждого master pool. Хранит ссылку на LP-позицию, депонированные суммы, последнюю цену ребалансировки, порог ребалансировки (по умолчанию 1%) и целевое количество bins (по умолчанию 50). Seeds: ["protocol_liquidity", pool].

RebalancerConfig

Глобальная конфигурация модуля ребалансировщика: порог ребалансировки (базисные пункты), целевое количество bins, интервал коммита и ссылка на RWT Vault для чтения NAV Book Value. Изменяется Engine Authority. Seeds: ["rebalancer_config"].

Основные инструкции

deposit_protocol_liquidity

Депонирует капитал AREAL DAO в master pool как протокольную ликвидность через PDA ProtocolLiquidity. Concentrated range центрируется на текущем NAV Book Value в пределах настроенного количества bins (по умолчанию 50).Authority: Engine Authority (DAO governance)
Accounts:
  - engine_authority:    Signer
  - protocol_liquidity:  PDA (init или mut)
  - rebalancer_config:   PDA
  - pool_state:          PDA пула DEX (mut, CPI)
  - bin_array:           PDA bin array DEX (mut, CPI)
  - dao_token_a_ata:     Аккаунт RWT DAO (mut)
  - dao_token_b_ata:     Аккаунт USDY/USDC DAO (mut)
  - rwt_vault:           PDA RWT Vault (источник NAV Book Value)
  - dex_program
  - token_program

Args:
  - amount_a: u64        Количество RWT
  - amount_b: u64        Количество USDY/USDC
Авторебалансирует протокольную ликвидность, когда NAV Book Value отклоняется от последней цены ребалансировки более чем на порог. Выводит позицию ProtocolLiquidity из DEX через CPI, перецентрирует concentrated range на новый NAV и вносит обратно.Пользовательские LP-позиции никогда не затрагиваются — ребалансируется только собственный капитал DAO.Authority: Permissionless (crank), защищена проверкой отклонения
Accounts:
  - crank:               Signer
  - protocol_liquidity:  PDA (mut)
  - rebalancer_config:   PDA
  - pool_state:          PDA пула DEX (mut, CPI)
  - bin_array:           PDA bin array DEX (mut, CPI)
  - rwt_vault:           PDA RWT Vault (источник NAV Book Value)
  - pool_token_a_vault:  Vault token A пула DEX (mut, CPI)
  - pool_token_b_vault:  Vault token B пула DEX (mut, CPI)
  - dex_program
  - token_program
Выводит протокольную ликвидность из master pool обратно на кошелёк DAO. Используется, когда DAO решает перераспределить капитал или уменьшить протокольную ликвидность в конкретном пуле.Authority: Engine Authority (DAO governance)
Accounts:
  - engine_authority:    Signer
  - protocol_liquidity:  PDA (mut)
  - pool_state:          PDA пула DEX (mut, CPI)
  - bin_array:           PDA bin array DEX (mut, CPI)
  - dao_token_a_ata:     Аккаунт RWT DAO (mut)
  - dao_token_b_ata:     Аккаунт USDY/USDC DAO (mut)
  - pool_token_a_vault:  Vault token A пула DEX (mut, CPI)
  - pool_token_b_vault:  Vault token B пула DEX (mut, CPI)
  - dex_program
  - token_program

Args:
  - amount: u64          Ликвидность для вывода (0 = вся позиция)
Обновляет конфигурацию модуля ребалансировщика — порог ребалансировки, целевое количество bins или другие параметры. Требует Engine Authority.Authority: Engine Authority (DAO governance)
Accounts:
  - engine_authority:    Signer
  - rebalancer_config:   PDA (mut)

Args:
  - threshold_bps: Option<u16>    Порог ребалансировки (по умолчанию 100 = 1%)
  - target_bins: Option<u16>      Количество bins для concentrated range (по умолчанию 50)

Поток ребалансировки

Обнаружение отклонения NAV

Crank проверяет, отличается ли текущий NAV Book Value (из RWT Vault) от protocol_liquidity.last_rebalance_price более чем на настроенный порог (по умолчанию 1%).

Вывод протокольной ликвидности

Модуль вызывает remove_liquidity на native DEX через CPI, выводя позицию ProtocolLiquidity DAO. Пользовательские позиции остаются нетронутыми.

Перецентровка диапазона

Concentrated bin range пересчитывается: центр = новый NAV Book Value, ширина = настроенное количество bins (по умолчанию 50).

Возврат протокольной ликвидности

Модуль вызывает add_liquidity на native DEX через CPI, депонируя капитал DAO в новом диапазоне. protocol_liquidity.last_rebalance_price обновляется.

Протокольная vs пользовательская ликвидность

Master Pool Rebalancer управляет только ProtocolLiquidity — у него нет доступа к пользовательским LP-позициям.
Протокольная ликвидностьПользовательская ликвидность
УправляетсяPDA ProtocolLiquidity (этот модуль)Индивидуальный PDA LpPosition (контракт DEX)
АвторебалансировкаДа — через rebalance_protocol_liquidityНет — пользователи управляют своим диапазоном
Депозит/выводEngine Authority (DAO)Владелец LP (permissionless)
НазначениеОбеспечить глубокую ликвидность вокруг NAV Book ValueПользователи зарабатывают комиссии и доходность на своём капитале
Bin rangeВсегда центрирован на NAV, автокорректируетсяЗадаётся пользователем при депозите, не изменяется

Взаимодействие с Native DEX

Этот модуль взаимодействует с Native DEX исключительно через CPI-вызовы — он не модифицирует состояние DEX напрямую. Модуль вызывает стандартные инструкции DEX add_liquidity и remove_liquidity, используя PDA ProtocolLiquidity как владельца LP.
Поскольку ребалансировщик использует стандартные инструкции DEX через CPI, он пользуется всеми гарантиями безопасности DEX — защита от проскальзывания, неизменяемость пулов и проверки владения аккаунтами.

Безопасность

Изоляция пользователей

Модуль не имеет доступа к пользовательским LP-позициям. Он может управлять только PDA ProtocolLiquidity, которые принадлежат этой программе, а не DEX.

Защита отклонения

rebalance_protocol_liquidity — permissionless, но защищена проверкой порога. Не может быть вызвана произвольно — только когда NAV реально отклоняется за настроенный лимит.

Взаимодействие только через CPI

Все взаимодействия с DEX проходят через стандартные CPI-вызовы. Модуль не может обойти проверки безопасности DEX или получить прямой доступ к аккаунтам DEX.

Настраиваемые параметры

Порог, количество bins и другие параметры хранятся в RebalancerConfig и изменяются только Engine Authority (DAO governance).
Модуль Master Pool Rebalancer в настоящее время находится в разработке. Эта документация описывает целевую архитектуру. Код модуля ещё не прошёл аудит.