Skip to main content
Эта страница переведена с помощью ИИ. За эталон принимается английская версия.Открыть английскую версию →
Каждая программа Raydium имеет как минимум одну привилегированную роль — ключ, который может обновить программу, создать новые конфигурации или вывести комиссии протокола. Минимизация полномочий этих ролей (и их защита мультиподписями с задержками) — основная защита от скомпрометированного администратора. На этой странице перечислены роли и способы их защиты на практике.

Роли по программам

AMM v4

CPMM

Сбор комиссии создателя не вводит привилегированную роль. CollectCreatorFeePermissionless принимает любого плательщика, ограничивает владельца получателя на PoolState.pool_creator и ограничивает оба назначения каноническими ATA этого создателя. Вызывающий может финансировать отсутствующие ATA и запустить сбор, но не может перенаправить комиссии.

CLMM

Владение PDA Permission позволяет его полномочиям вызывать CreatePermissionedPool — создавать дополнительные пулы для пары, которая уже имеет канонический, каждый по адресу, полученному из отдельного seed_index. Разрешение ограничено только созданием пула: оно не может перемещать средства, менять комиссии или трогать существующие пулы. Отзыв (ClosePermissionPda) предотвращает дальнейшее создание пулов полномочиями, но оставляет уже созданные пулы нетронутыми. limit_order_admin — это намеренно узкая операционная роль. Она существует, чтобы хранитель вне цепи мог собирать заполненные ордера без необходимости быть в сети владельцу ордера. Ключ хранителя горячий (находится на VM хранителя) и ротируется независимо от мультиподписей выше. Конкретно, полномочия хранителя ограничены:
  • SettleLimitOrder — отправить заполненный выход ордера в ATA владельца по лимитной цене ордера.
  • CloseLimitOrder — закрыть счет полностью расчетного ордера для возврата аренды (аренда идет владельцу ордера).
Он не может вызывать OpenLimitOrder, IncreaseLimitOrder, DecreaseLimitOrder, изменять какие-либо поля пула или подписывать любую другую инструкцию — эти проверки применяются на цепи через ограничения seed и has_one в структуре Accounts инструкции. Скомпрометированный хранитель в худшем случае может быть недоступен (ордера остаются припаркованы, пока владелец не расчитает их сам) или расчитать/закрыть законно заполняемые ордера не по порядку; он не может переместить пользовательские средства куда-либо, кроме того, куда владелец уже их авторизовал.

Farm v6

Отдельные фермы не имеют администратора протокола — каждый создатель фермы контролирует только свою ферму, и полномочия создателя ограничены (не может захватить ставки пользователей, не может менять mint для ставок).

LaunchLab

Список разрешений администратора платформы самоограничивается: он ограничивает, какие счета GlobalConfig запуски под этой платформой могут использовать. Он не предоставляет полномочия над другими платформами или существующими средствами запуска. Канонические адреса делегированного органа находятся в reference/program-addresses.

Полномочия обновления программы

Программы Raydium используют стандартный механизм обновления BPF Loader v3 Solana. Полномочия обновления для всех программ — это мультиподпись 3/4 Squads. Почему 3/4: достаточно подписывающих, чтобы одного компрометирования было недостаточно; достаточно мало, чтобы координировать законное обновление было управляемо. Четыре органа независимы, изолированы от сети, холодные подписи устройств, удерживаемые членами основной команды. Последовательное подписание предотвращает параллельные одобрения одной и той же транзакции; транзакции имеют фиксированное окно истечения. Операции мультиподписи периодически проверяются в партнерстве с Solana’s STRIDE Program (Asymmetric Research).

Удаление полномочий обновления

Raydium не установил полномочия обновления ни одной программы на null. Протокол работает на принципе, что программы должны быть обновляемы (для исправления ошибок, добавления расширений, таких как Token-2022, исправления дрейфа интеграции). Компромисс: пользователи доверяют, что мультиподпись 3/4 будет развертывать только хорошо проверенные обновления. Ни одна программа Raydium в настоящее время не заморожена и не движется достаточно медленно, чтобы рассматриваться как неизменяемая альтернатива — AMM v4, исторически самая статичная из них, сама была переразвернута 2026-07-22. Последний развернутый слот для каждой программы является общедоступным; прочитайте его перед предположением, что какая-либо из них неактивна: (Из счета ProgramData каждой программы; solana program show <PROGRAM_ID> сообщает тот же слот.)

Полномочия администратора AmmConfig

Создание каждого нового AmmConfig требует разрешения — мультиподпись 3/5 казначейства авторизует новые уровни комиссий и интервалы тиков. Существующие пулы ссылаются на свой AmmConfig по PDA; уровень комиссии пула — это то, что говорит AmmConfig. Могут ли администраторы изменить существующий AmmConfig? Да, технически. updateAmmConfig вызывается администратором. На практике изменения развернутых AmmConfigs избегаются, потому что это молча меняет экономику всех пулов, использующих эту конфигурацию. Политика протокола — создать новый AmmConfig для любого изменения и выполнить миграцию. Могут ли администраторы украсть комиссии протокола через конфигурацию? Нет — AmmConfig содержит параметры комиссии, но не получателя комиссии протокола; это отдельный неизменяемый адрес для каждого пула.

Требование комиссии протокола

Часть комиссий за своп (обычно 3–12 bps из 25 bps комиссии за своп, в зависимости от конфигурации) накапливается в хранилище комиссии протокола. Мультиподпись может вывести эти накопленные комиссии. Пользователи никогда не видят изменения своего баланса LP из-за этого — это предварительно выделенная доля протокола, а не деньги LP.

Полномочия создателя фермы

Фермы v6 дают создателю полномочия:
  • Финансировать хранилище вознаграждений (добавить больше токенов).
  • Продлевать расписание (отодвинуть время окончания позже).
  • Вызывать withdrawReward после времени окончания для возврата неиспользованного баланса хранилища.
Создатели ферм не могут:
  • Вывести поставленный пользователем LP.
  • Изменить mint для ставок.
  • Изменить коэффициенты эмиссии ретроактивно (только перспективно через setRewards).
  • Заморозить сбор урожая пользователей.
Злонамеренный создатель фермы может в худшем случае недофинансировать хранилище, чтобы ферма иссякла; основная ставка пользователя всегда в безопасности.

Конфигурация мультиподписи Squads

Raydium работает с двумя отдельными мультиподписями Squads для различных поверхностей риска. Обе можно проверить на цепи через пользовательский интерфейс Squads Protocol. Операционные свойства мультиподписи обновления:
  • 24-часовой timelock на любую транзакцию. Одобренное сегодня обновление выполняется не ранее чем через 24 часа, давая пользователям время для ответа.
  • Изолированное от сети холодное подписание устройств. Холодные устройства имеют физически удаленные сетевые карты; они подключаются только к аппаратному кошельку и читают данные транзакции через QR-код с отдельного горячего устройства.
  • Последовательное подписание. Только после того, как одно холодное устройство создаст и подпишет транзакцию, следующее холодное устройство может начать свой процесс подписания — предотвращая конфликтующие или параллельные подписи на одной и той же транзакции.
  • Истечение транзакции. Каждая транзакция имеет фиксированное окно истечения, поэтому устаревшие транзакции автоматически становятся недействительными.
  • Принудительное TOTP + физический ключ на горячих устройствах, используемых для инициирования транзакций и трансляции на цепь.
  • Очередь общедоступных транзакций. Любой может отслеживать ожидающие обновления в пользовательском интерфейсе Squads.
Мультиподпись казначейства не имеет timelock — ее область уже и рутинные операции (создание AmmConfigs, сбор комиссий) должны приземлиться в тот же день. Мультиподпись казначейства также держит ограниченные полномочия администратора программы, перечисленные в таблицах для каждой программы выше; это временное расположение и периодически проверяется с партнерами по безопасности проекта.

Проверка полномочий на цепи

Самый простой способ проверить текущие полномочия обновления программы:
Выход включает:
Если Authority не является ожидаемым адресом мультиподписи Squads, что-то не так. Raydium публикует ожидаемые адреса полномочий на reference/program-addresses. Для ролей администратора AmmConfig / пула получите счет на цепи и декодируйте:
AmmConfig не имеет поля admin — администратор программы — это pubkey, скомпилированный в программу (crate::admin::ID), и операционные полномочия для каждой конфигурации — это protocolOwner / fundOwner. Полномочия обновления BPF — это отдельная проблема уровня загрузчика; прочитайте их с помощью solana program show.

Исторические изменения полномочий

Соображения со стороны пользователя

Что вам следует делать как пользователю/LP/интегратору?
  1. Проверьте полномочия обновления перед крупными выделениями. Подтвердите, что они соответствуют задокументированной мультиподписи.
  2. Отслеживайте активность мультиподписи. Пользовательский интерфейс Squads показывает ожидающие транзакции; запланированное обновление дает вам 24 часа для отката, если вы не согласны с изменением.
  3. Стратегии выкупа с учетом timelock. Если вы запускаете автоматический компаундер, убедитесь, что ваш путь отката не требует инструкции, которая изменяется.
  4. Не предполагайте неизменяемость программы. Каждая программа Raydium может быть обновлена; планируйте это.

Ловушки для интеграторов

1. Кэширование адресов полномочий

Если вы жестко кодируете адрес полномочий обновления или адрес мультиподписи администратора в своем коде и он позже ротируется, ваша проверка не пройдет. Получайте из reference/program-addresses во время выполнения или обновляйте периодически.

2. Предположение, что AmmConfigs стабильны

Новый AmmConfig может быть создан в любое время. Ваш агрегатор/маршрутизатор должен периодически повторно получать полный список конфигурации (ежечасно подойдет).

3. Векторы горя создателя фермы

Если вы вносите депозит в ферму с низкой репутацией, создатель может завершить ферму рано и вернуть хранилище вознаграждений (при условии, что ни один пользователь еще не поставил). Как только пользователи поставили, пропорциональные права применяются программой; возврат получает только остаток после рационального конца.

Указатели

  • reference/program-addresses — канонические адреса полномочий.
  • security/attack-vectors — как проявляются компрометирования администратора.
  • ray/treasury — адреса казначейства и сбора комиссий.
  • security/disclosure — сообщение о подозреваемых проблемах администратора.
Источники: