Эта страница переведена с помощью ИИ. За эталон принимается английская версия.Открыть английскую версию →
Каждая программа Raydium имеет как минимум одну привилегированную роль — ключ, который может обновить программу, создать новые конфигурации или вывести комиссии протокола. Минимизация возможностей этих ролей (и их защита мультиподписями с задержками) — основная защита от скомпрометированного администратора. На этой странице перечислены роли и способы их защиты на практике.
Роли по программам
AMM v4
CPMM
Сбор комиссии создателя не вводит привилегированную роль.
CollectCreatorFeePermissionless принимает любого плательщика, ограничивает владельца получателя на PoolState.pool_creator и ограничивает оба назначения каноническими ATA этого создателя. Вызывающий может финансировать отсутствующие ATA и запустить сбор, но не может перенаправить комиссии.
CLMM
Владение PDA
Permission позволяет его полномочию вызывать CreatePermissionedPool — создавать дополнительные пулы для пары, которая уже имеет канонический, каждый по адресу, полученному из отдельного seed_index. Разрешение ограничено только созданием пула: оно не может перемещать средства, менять комиссии или трогать существующие пулы. Отзыв (ClosePermissionPda) предотвращает создание дальнейших пулов полномочием, но оставляет уже созданные пулы нетронутыми.
limit_order_admin — это намеренно узкая операционная роль. Она существует, чтобы внецепной keeper мог собирать заполненные ордера без необходимости быть в сети владельцу ордера. Ключ keeper горячий (находится на VM keeper) и ротируется независимо от мультиподписей выше. Конкретно, полномочие keeper ограничено:
SettleLimitOrder— отправить заполненный выход ордера в ATA владельца по лимитной цене ордера.CloseLimitOrder— закрыть счет полностью расчетного ордера для возврата ренты (рента идет владельцу ордера).
OpenLimitOrder, IncreaseLimitOrder, DecreaseLimitOrder, изменять какое-либо поле пула или подписывать любую другую инструкцию — эти проверки принудительно применяются на цепи через ограничения seed и has_one в структуре Accounts инструкции. Скомпрометированный keeper в худшем случае может быть недоступен (ордера остаются припаркованы, пока владелец не расчитает их сам) или расчитать/закрыть законно заполняемые ордера не по порядку; оно не может переместить пользовательские средства куда-либо, кроме того, куда владелец уже их авторизовал.
Farm v6
Отдельные фермы не имеют администратора протокола — каждый создатель фермы контролирует только свою ферму, и возможности создателя ограничены (не может захватить ставки пользователей, не может менять mint для ставок).
LaunchLab
Список разрешений администратора платформы самоограничивается: он ограничивает, какие счета
GlobalConfig могут использовать запуски под этой платформой. Он не дает полномочия над другими платформами или существующими средствами запуска. Канонические адреса делегированного органа находятся в reference/program-addresses.
Полномочие обновления программы
Программы Raydium используют стандартный механизм обновления BPF Loader v3 Solana. Полномочие обновления для всех программ — это мультиподпись 3/4 Squads. Почему 3/4: достаточно подписывающих, чтобы одного компрометирования было недостаточно; достаточно мало, чтобы координировать законное обновление было управляемо. Четыре органа независимы, используют воздушный зазор и холодные устройства, удерживаемые членами основной команды. Последовательное подписание предотвращает параллельные одобрения одной и той же транзакции; транзакции имеют фиксированное окно истечения. Операции мультиподписи периодически проверяются в партнерстве с STRIDE Program Solana (Asymmetric Research).Удаление полномочия обновления
Raydium не установила полномочие обновления ни одной программы на null. Протокол работает на принципе, что программы должны быть обновляемы (для исправления ошибок, добавления расширений, таких как Token-2022, исправления дрейфа интеграции). Компромисс: пользователи доверяют, что мультиподпись 3/4 будет развертывать только хорошо проверенные обновления. Для пользователей, которые хотят неизменяемую альтернативу, более старая программа AMM v4 стабильна с момента последнего аудита; ноль обновлений за 18 месяцев. Этот путь кода фактически заморожен, хотя полномочие все еще существует.Полномочие AmmConfig
Каждое создание нового AmmConfig имеет разрешение — мультиподпись 3/5 treasury авторизует новые уровни комиссий и интервалы тиков. Существующие пулы ссылаются на свой 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.
Проверка полномочия на цепи
Самый простой способ проверить текущее полномочие обновления программы:Authority не является ожидаемым адресом мультиподписи Squads, что-то не так. Raydium публикует ожидаемые адреса полномочий на reference/program-addresses.
Для ролей администратора AmmConfig / пула получите счет на цепи и декодируйте:
Исторические изменения полномочий
Соображения со стороны пользователя
Что вам следует делать как пользователю/LP/интегратору?- Проверьте полномочие обновления перед крупными выделениями. Подтвердите, что оно соответствует документированной мультиподписи.
- Отслеживайте активность мультиподписи. Пользовательский интерфейс Squads показывает ожидающие транзакции; запланированное обновление дает вам 24 часа для отката, если вы не согласны с изменением.
- Стратегии выкупа с учетом timelock. Если вы запускаете автоматический компаундер, убедитесь, что ваш путь отката не требует инструкции, которая изменяется.
- Не предполагайте неизменяемость программы. Каждая программа Raydium может быть обновлена; планируйте это.
Ловушки для интеграторов
1. Кэширование адресов полномочий
Если вы жестко кодируете адрес полномочия обновления или адрес мультиподписи администратора в своем коде и он позже ротируется, ваша проверка не пройдет. Получайте изreference/program-addresses во время выполнения или обновляйте периодически.
2. Предположение, что AmmConfigs стабильны
Новый AmmConfig может быть создан в любое время. Ваш агрегатор/маршрутизатор должен периодически переполучать полный список конфигураций (ежечасно подойдет).3. Векторы горя создателя фермы
Если вы вносите депозит в ферму с низкой репутацией, создатель может завершить ферму рано и вернуть хранилище вознаграждений (при условии, что ни один пользователь еще не поставил). Как только пользователи поставили, пропорциональные права принудительно применяются программой; возврат получает только остаток после рационального окончания.Ссылки
reference/program-addresses— канонические адреса полномочий.security/attack-vectors— как проявляются компрометирования администратора.ray/treasury— адреса казны и сбора комиссий.security/disclosure— сообщение о подозреваемых проблемах администратора.
- Squads Protocol — пользовательский интерфейс мультиподписи.
- Документация Solana BPF Loader — механизм обновления.

