Skip to main content
Эта страница переведена с помощью ИИ. За эталон принимается английская версия.Открыть английскую версию →
Stable AMM — это отдельная программа; её структура счетов на стороне пула напоминает AMM v4 (AmmInfo, хранилища, authority), и дополнительно содержит счет ModelDataInfo, в котором хранится таблица поиска. На этой странице рассматриваются оба компонента.

Реестр

Чистый AMM. Stable AMM хранит всю ликвидность в собственных хранилищах и не зависит от OpenBook. На ранних этапах в нём была реализована интеграция с OpenBook для маркет-мейкинга, но эта функция была неактивна в течение многих лет, и обновление от 2026-06-22 удалило оставшийся код. Счета serum_* и amm_open_orders ниже являются устаревшими: они могут всё ещё появляться в старых транзакциях для обратной совместимости, но программа их не проверяет и не читает, а новые инструкции их полностью опускают.
Активный реестр теперь полностью находится на стороне пула:

AmmInfo

Корневой счет состояния. Макет почти идентичен AMM v4 — параметры пула, десятичные разряды, комиссии, ссылки на хранилища и минты — с одним дополнением: поле model_data_key, указывающее на таблицу поиска.
Ключевые поля для интеграторов:
  • model_data_key — адрес таблицы поиска. Должен передаваться в каждую инструкцию.
  • fees — идентичная структура AMM v4. По умолчанию комиссия 0,25%, разделение 0,22% LP / 0,03% протокол.
  • coin_vault, pc_vault — хранилища пула.
  • status — битовая маска, управляющая включением/отключением swap/deposit/withdraw/crank.
  • out_put.need_take_pnl_* — выводятся инструкцией WithdrawPnl.

ModelDataInfo

Таблица поиска. Большой разреженный массив точек цены и количества.
Жизненный цикл: Инструкции настройки, которые создавали эти таблицы — InitModelData (создавал счет) и UpdateModelData (заполнял элементы, устанавливая valid_data_count) — были удалены в обновлении от 2026-06-22. Таблицы в существующих пулах теперь зафиксированы. Во время выполнения оставшиеся вызываемые инструкции всё ещё их используют:
  • Swap / deposit / withdraw вызывают функции поиска, которые выполняют двоичный поиск и интерполяцию в пределах elements[0..valid_data_count].

DataElement

Атомарная запись в таблице. Должна быть отсортирована (x по возрастанию, y по убыванию, price по возрастанию) для корректной работы двоичного поиска.
При заполнении таблицы администратор указывает эти значения уже масштабированными. Программа не проверяет порядок сортировки на цепи (для скорости), поэтому неправильная сортировка приводит к неверным котировкам.

Authority и хранилища

Аналогично AMM v4:
  • amm_authority — это единый PDA на уровне программы, производный от seed ["amm authority"]. Он владеет всеми хранилищами пула и подписывает их операции.
  • Хранилища — это счета SPL Token, владельцем которых является amm_authority, а не ATA.
Token-2022 не поддерживается.

Битовая маска статуса

Идентична AMM v4. Управляет тем, включены ли swap/deposit/withdraw/crank.

Отслеживание комиссий и PnL

Структура out_put отслеживает:
  • need_take_pnl_coin, need_take_pnl_pc — комиссии протокола, накопленные, но ещё не выведенные. WithdrawPnl выводит их.
  • swap_coin_in_amount, swap_pc_in_amount и т. д. — счётчики аналитики.
Расчёт активов пула (после разделения). Поскольку средства больше не депонируются как открытые заказы OpenBook, общие активы пула теперь вычисляются полностью из хранилищ:
Индексаторы и код котирования, которые восстанавливали стоимость пула из балансов OpenOrders, должны исключить этот компонент.

Размер счета

ModelDataInfo имеет большой размер (~1,2 МБ, так как 50 000 элементов × 24 байта на элемент). Поэтому создание пула Stable требует явного выделения ренты и предварительного выделения счета. SDK Raydium и инструменты обрабатывают это прозрачно; интеграторам редко нужно вручную выделять память.

Вывод счетов с нуля

Как и AMM v4, Stable AMM использует ключи с seed (не чистые PDA). Каноническая идентификация пула производится следующим образом:
Аналогично для хранилищ, LP mint, target orders и т. д. На практике используйте SDK или API для получения предварительно вычисленных адресов.

Что читать где

Источники: