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

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.

Эта страница переведена с помощью ИИ. За эталон принимается английская версия.Открыть английскую версию →
Основные продукты Raydium не зависят от внешних oracles для определения цены — состояние пула само является oracle. Но API и SDK используют внешние oracles для отображения USD-цен пользователям, а миниты Token-2022 предоставляют более богатый набор управляющих параметров, чем SPL Token, некоторые из которых принципиально меняют модель доверия в пуле. На этой странице описаны оба вопроса.

Oracles в Raydium

Внутренний: пул как oracle

Для AMM v4, CPMM и CLMM определение текущей цены в протоколе выводится только из состояния пула:
  • AMM v4 / CPMM: price = vaultB_balance / vaultA_balance (с учётом decimals).
  • CLMM: price = (sqrtPriceX64 / 2^64)^2 × 10^(decimalsA - decimalsB).
Никакой внешний oracle не используется во время свопа, депозита или вывода. Это «бестрастная» часть AMM-дизайна: если математика пула верна, никакая внешняя манипуляция feed’ом цены не может её повредить.

CLMM ObservationState как TWAP-oracle

Пулы CLMM ведут учёт ObservationState, который записывает исторические снимки sqrt_price. Другие программы могут использовать это для вывода устойчивой к манипуляциям средневзвешенной по времени цены:
// Упрощённый TWAP: среднее (текущее, N слотов назад).
let obs_now  = load_observation(pool, Clock::slot());
let obs_past = load_observation(pool, Clock::slot() - 300);  // ~2 мин назад
let twap = (obs_now.price_cumulative - obs_past.price_cumulative)
         / (obs_now.slot - obs_past.slot);
Это тот же паттерн, что использует Uniswap V3. Краткосрочная манипуляция ценой (кит временно сдвигает пул) не повреждает TWAP, потому что он усредняется за сотни слотов. Программы, которым нужен более безопасный feed цены для минтов CLMM (oracles ликвидации, ценообразование опционов и т. д.), должны использовать TWAP-ы ObservationState вместо мгновенных цен. Не используйте мгновенные CLMM-цены для композиции. Один крупный своп может сдвинуть спот-цену на 10%+ в неглубоком пуле; TWAP это смягчает. Для макета данных см. products/clmm/accounts#observation-state.

Внешний: USD-ценообразование в frontend/API

Frontend Raydium и api-v3.raydium.io отображают USD-значения (TVL, APR комиссий, $ объём). Они берутся из:
  • Pyth как основной oracle для крупных минтов.
  • Jupiter’s aggregator price как резервный вариант.
  • Цена, выведенная из пула для дальних минтов без охвата внешним oracle.
USD-отображение носит сугубо косметический характер — on-chain операции никогда не читают Pyth, и ни одна математика пула USD не использует. Если Pyth перестанет предоставлять данные для минта, UI показывает «—»; пул продолжает работать.

Манипуляция oracle неприменима к пулам Raydium

Потому что состояние пула является oracle, нет никакого «oracle-атаки» в том смысле, в котором это означает баг-баунти литература — нет внешнего манипулируемого источника данных, который злоумышленник может испортить. Экономические атаки на состояние пула (flash-loan-подобная манипуляция) рассматриваются в security/attack-vectors.

Риски расширений Token-2022

SPL Token-2022 (она же «Token Extensions») добавляет настраиваемое поведение к минтам через расширения. Некоторые расширения меняют свойства доверия пулов, которые их содержат. Программы Raydium обрабатывают некоторые автоматически и указывают на другие как на предупреждения для пользователей.

Transfer fee

Что это: Настраиваемая комиссия (процент передачи, вверх до maximum_fee кепа в абсолютных терминах), выплачиваемая отправителем authority минта при каждой передаче. Риск: Комиссия может быть изменена authority-ом конфигурации комиссии. Если вы внесли ликвидность, когда комиссия составляла 1%, а authority повысит её до 50%, последующие свопы вернут гораздо меньше, чем ожидалось. Смягчение в Raydium: Пулы читают текущий transferFeeConfig во время свопа и корректируют математику. Сам пул не повреждается, но пользователи видят худший результат. Authority комиссии также может запланировать отложенное изменение; UI Raydium помечает пулы с предстоящими изменениями комиссии. Остаточный риск: Если вредоносный authority комиссии изменяет комиссию во время вашего в-полёте свопа, ваш minimumAmountOut защищает нижний предел — tx откатывается. Если вы доверяете издателю минта, всё в порядке; если нет, не вносите LP.

Transfer hook

Что это: Передача вызывает отдельную программу («hook») для запуска пользовательской валидации или побочных эффектов. Риск: Hook может заблокировать любую передачу, включая внутренние передачи пула во время свопа. Обновляемый hook может стать вредоносным позже — то, что было безопасно во время депозита, может стать невозможным для вывода во время вывода. Смягчение в Raydium: Raydium указывает программный ID hook’а в состоянии пула. Интеграции должны отображать программный ID hook’а пользователям, чтобы они могли проверить, это ожидаемая (не обновляемая, проверенная) программа. Остаточный риск: Если hook обновляем и его authority становится враждебным, пул может быть заморожен. Raydium не блокирует пулы с transfer hooks, но помечает их. Вносите LP в пул с transfer hook только если hook проверен как безопасный.

Freeze authority

Что это: Freeze authority минта может заморозить любой токен-аккаунт, содержащий этот минт, препятствуя всем передачам. Риск: Freeze authority с возможностью заморозить аккаунт хранилища пула эффективно закрывает пул — пользователи не могут вывести, трейдеры не могут совершать свопы. Это применяется к SPL Token и Token-2022; это не ново с Token-2022, но это всё ещё риск. Смягчение в Raydium: Ничего на уровне программы — freeze в SPL Token непрозрачен для пула. UI Raydium предупреждает о пулах с замораживаемыми минтами. Пользователи, вносящие депозиты, должны проверить, что freeze authority null или принадлежит мультиподписи, которой они доверяют (USDC имеет freeze authority; это издатель Circle). Остаточный риск: Примите, что замораживаемые миниты могут быть заморожены. Крупные миниты (USDC, USDT, USDY) имеют freeze authorities, удерживаемые издателем и используемые только для соответствия нормативным требованиям; это обычно приемлемо.

Permanent delegate

Что это: Расширение Token-2022, которое назначает permanent delegate’а, который может передавать токены от любого держателя без одобрения. Риск: Permanent delegate может опустошить хранилище пула в любое время. Смигчение в Raydium: CPMM и CLMM отказываются создавать пулы с минтами, у которых есть permanent delegate. Инициализация откатывается. Ни один работающий пул Raydium не имеет минта с permanent delegate. Остаточный риск: Нулевой (при условии, что проверка верна, что обе аудиты проверили).

Non-transferable

Что это: Миниты, которые не могут быть переданы держателями. Риск: Пулы зависят от передачи для перемещения токенов между пользовательскими ATA и хранилищами пулов. Non-transferable миниты тривиально ломают пулы. Смягчение в Raydium: Создание пула откатывается на non-transferable минтах. Фермы также отказываются от non-transferable стейкинг-минтов.

Default-frozen / close-authority / interest-bearing

Менее влиятельные расширения, обрабатываемые Raydium:
  • Default-frozen: новые аккаунты токенов нужно разморозить перед использованием. Raydium обрабатывает это прозрачно при создании ATA.
  • Close-authority: назначенный authority может закрывать аккаунты токенов. Хранилища пула принадлежат выведённому от программы authority пула, поэтому close-authority на минте не применяется к хранилищу.
  • Interest-bearing: отображаемый баланс накапливает проценты; amount остаётся фиксированным, но uiAmount растёт. Математика пула Raydium использует amount, не проценты; отображение корректируется отдельно.

Mint authority

Не специфичный для Token-2022 риск, но стоит отметить: если минт сохраняет mint authority, держатель может раздувать предложение по желанию. Для запущенных токенов это разбавляет LP’ей по текущей цене пула. LaunchLab отказывается создавать запуски, если только mint authority не null.

Метки рисков в UI

Frontend Raydium помечает каждый пул применимыми риск-тегами:
  • TRANSFER_FEE — ненулевая transfer fee.
  • TRANSFER_HOOK — расширение transfer-hook активно.
  • FREEZE — минт имеет freeze authority.
  • MINT — минт имеет mint authority (предложение может раздуться).
  • CLOSE — минт имеет close authority.
Агрегаторы, потребляющие API Raydium, должны показывать эти метки пользователям.

Чек-лист интегратора

Перед композицией с пулом Raydium:
  • Проверьте расширения каждого минта через getMint(mint, TOKEN_2022_PROGRAM_ID).
  • Пропустите пулы, где любой минт имеет permanent_delegate или non_transferable (их не должно быть в Raydium, но защита в глубину).
  • Проверьте freeze authority для обоих минтов; только null или доверенный authority.
  • Для пулов с transfer hooks проверьте программный ID hook’а против белого списка.
  • Размер exposure с учётом transfer-fee сценариев (что если комиссия пойдёт максимум?).
  • Используйте CLMM TWAP (ObservationState) вместо спот-цены для ценообразования производных.

Заявление о принятии остаточного риска

Программы Raydium обеспечивают то, что может быть обеспечено на уровне программы:
  • Создание пула отказывает permanent-delegate / non-transferable минтам.
  • Математика свопа правильно корректируется для текущих transfer fees.
  • ObservationState предоставляет устойчивый к манипуляциям oracle.
Остаточные риски, которые должны принять пользователи:
  • Freeze authority минта может заморозить пул.
  • Fee authority минта может поднять transfer fee (вверх до maximum_fee кепа) в любой момент.
  • Transfer-hook программа может быть обновлена на вредоносный код.
  • Акодовальная ставка interest-bearing минта может быть изменена.
Правильная защита — усердие перед LP: не вносите в пулы с минтами, у которых есть концентрированные authorities, которым вы не доверяете. Raydium не может решать доверие за вас; она может только предоставить релевантные факты.

Ссылки

Источники:
  • SPL Token-2022 extensions docs.
  • Логика валидации инициализации пула: src/raydium/cpmm/instrument.ts, src/raydium/clmm/instrument.ts.
  • Pyth — внешний oracle цен, используемый на frontend.