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

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 есть хотя бы одна привилегированная роль — ключ, который может обновлять программу, создавать новые конфиги или выводить протокольные комиссии. Минимизация полномочий этих ролей (и защита их мультисигами с задержкой) — главная защита от компрометации администратора. На этой странице описаны все роли и способы их защиты на практике.

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

AMM v4

РольАдрес авторитетаЧто может делать
Обновление программыSquads multisig (3/4)Разворачивает новый байткод программы
Администратор пулаTreasury multisig (3/5)Переключает статус пула, обновляет комиссии в существующих пулах

CPMM

РольАдрес авторитетаЧто может делать
Обновление программыSquads multisig (3/4)Разворачивает новый байткод программы
Администратор AmmConfigTreasury multisig (3/5)Создаёт новые AmmConfigs (уровни комиссий); переключает существующие
Получатель разовой комиссии за создание пулаTreasury multisig (3/5)Получает единовременную комиссию за создание пула

CLMM

РольАдрес авторитетаЧто может делать
Обновление программыSquads multisig (3/4)Разворачивает новый байткод программы
Администратор AmmConfigTreasury multisig (3/5)Создаёт и изменяет AmmConfigs
Администратор DynamicFeeConfigTreasury multisig (3/5)CreateDynamicFeeConfig / UpdateDynamicFeeConfig — настраивает динамические уровни комиссий, доступные при вызове CreateCustomizablePool
limit_order_admin (общепрограммный)Горячий кошелёк операционного назначения, не мультисигИсполняет и закрывает лимитные ордера от имени их владельцев. Ключ кипера — единственная общепрограммная константа (разные значения для mainnet и devnet), проверяемая через signer == limit_order.owner || signer == limit_order_admin::ID в инструкциях SettleLimitOrder / CloseLimitOrder. Выходные средства всегда поступают в ATA исходного владельца; кипер не может перенаправить средства, изменить ордера или открыть новые.
limit_order_admin — намеренно узкая операционная роль. Она существует для того, чтобы off-chain кипер мог исполнять заполненные ордера без участия их владельцев. Ключ кипера горячий (хранится на VM кипера) и ротируется независимо от мультисигов выше. Конкретно, полномочия кипера ограничены:
  • SettleLimitOrder — отправить заполненный выход ордера в ATA владельца по лимитной цене ордера.
  • CloseLimitOrder — закрыть аккаунт полностью исполненного ордера для возврата ренты (рента идёт владельцу ордера).
Кипер не может вызвать OpenLimitOrder, IncreaseLimitOrder, DecreaseLimitOrder, изменить какое-либо поле пула или подписать любую другую инструкцию — эти проверки реализованы on-chain через seed и has_one ограничения в структуре Accounts инструкции. Скомпрометированный кипер в худшем случае становится недоступным (ордера остаются незакрытыми, пока владелец не исполнит их самостоятельно) или исполняет/закрывает правомерно заполненные ордера не в том порядке; он не может переместить средства пользователей куда-либо, кроме уже авторизованного владельцем места назначения.

Farm v6

РольАдрес авторитетаЧто может делать
Обновление программыSquads multisig (3/4)Разворачивает новый байткод программы
Создатель фарма (для каждого фарма)Кошелёк создателя фармаПополняет хранилища вознаграждений, продлевает расписания, возвращает неиспользованные вознаграждения
Отдельные фармы не имеют протокольного администратора — создатель каждого фарма управляет только своим фармом, а его полномочия ограничены (нельзя изъять стейки пользователей, нельзя изменить mint стейкинга).

LaunchLab

РольАдрес авторитетаЧто может делать
Обновление программыSquads multisig (3/4)Разворачивает новый байткод программы
Создатель запуска (для каждого запуска)Кошелёк создателя запускаСобирает комиссии создателя после graduation; выводит остаток незавершённой кривой
У запусков нет протокольного администратора, который мог бы изменять кривые или изымать собранные средства.

Авторитет обновления программы

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

Удаление авторитета обновления

Raydium не установил авторитет обновления ни одной программы в null. Протокол придерживается принципа, что программы должны быть обновляемыми (для исправления ошибок, добавления расширений вроде Token-2022, устранения дрейфа интеграций). Компромисс: пользователи доверяют тому, что мультисиг 3/4 будет разворачивать только тщательно проверенные обновления. Для пользователей, предпочитающих неизменяемую альтернативу: более старая программа AMM v4 остаётся стабильной с момента последнего аудита — ноль обновлений за 18 месяцев. Этот путь фактически заморожен, несмотря на то что авторитет всё ещё существует.

Авторитет AmmConfig

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

Получение протокольных комиссий

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

Авторитет создателя фарма

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

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

Raydium использует два отдельных мультисига Squads для разных категорий рисков. Оба можно проверить on-chain через интерфейс Squads Protocol.
МультисигПорогТаймлокОбласть действия
Обновление программ3/424 часаЕдинственный авторитет для развёртывания нового байткода программ AMM v4, CPMM, CLMM, LaunchLab, Lock, AMM Routing, Stable Swap и устаревших программ Farm/Staking. Просмотр: app.squads.so/.../FytDr…ceZQK.
Казначейство3/5нетКазначейские активы, доходы протокола, операционные расходы. Также временно держит ограниченный программный авторитет Raydium (создание AmmConfigs, сбор протокольных комиссий, настройка параметров пулов). Просмотр: v3.squads.so/dashboard/RVha…dHdtYz09.
Операционные свойства мультисига обновлений:
  • Таймлок 24 часа на любую транзакцию. Обновление, одобренное сегодня, выполнится не ранее чем через 24 часа, давая пользователям время отреагировать.
  • Air-gapped холодные устройства для подписания. Из холодных устройств физически извлечены сетевые карты; они подключаются только к аппаратному кошельку и получают данные транзакций через QR-код с отдельного горячего устройства.
  • Последовательное подписание. Только после того как одно холодное устройство создаст и подпишет транзакцию, следующее может начать свой процесс подписания — это исключает конфликтующие или параллельные подписи одной транзакции.
  • Истечение транзакций. Каждая транзакция имеет фиксированное окно истечения, поэтому устаревшие транзакции аннулируются автоматически.
  • TOTP + физический ключ на горячих устройствах, используемых для инициирования транзакций и on-chain трансляции.
  • Публичная очередь транзакций. Любой желающий может отслеживать ожидающие обновления через интерфейс Squads.
Казначейский мультисиг не имеет таймлока — его область действия уже, а рутинные операции (создание AmmConfigs, сбор комиссий) должны выполняться в тот же день. Казначейский мультисиг также держит ограниченный программный авторитет, указанный в таблицах по программам выше; это временное решение, которое периодически пересматривается совместно с партнёрами по безопасности.

Проверка авторитета on-chain

Простейший способ проверить текущий авторитет обновления программы:
solana program show <PROGRAM_ID>
Вывод включает:
Program Id:          CPMMoo8L3F4NbTegBCKVNunggL7H1Zpdmwpwh8KMoZ0F
Owner:               BPFLoaderUpgradeab1e11111111111111111111111
ProgramData Address: <ProgramDataPDA>
Authority:           <EXPECTED_MULTISIG_ADDRESS>
Last Deployed In Slot: <slot>
Data Length: <n> bytes
Если Authority не совпадает с ожидаемым адресом мультисига Squads, что-то не так. Raydium публикует ожидаемые адреса авторитетов на reference/program-addresses. Для ролей AmmConfig / администратора пула — получите on-chain аккаунт и декодируйте:
const config = await raydium.cpmm.getAmmConfig(configPda);
console.log("AmmConfig admin:", config.admin.toBase58());
// Expected: 3/5 treasury multisig.

История изменений авторитетов

ДатаПрограммаИзменение
2022-12AMM v4Авторитет обновления перенесён с одиночной подписи на мультисиг 3/4 после инцидента
2023-02Все программыВсе операционные роли объединены под казначейским мультисигом 3/5
2023-11CLMMДобавлен второй мультисиг только для операций с вознаграждениями для снижения рисков
2024-05CPMMПервоначальное развёртывание с авторитетом мультисига с нулевого дня

Рекомендации для пользователей

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

Подводные камни для интеграторов

1. Кэширование адресов авторитетов

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

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

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

3. Векторы злоупотреблений со стороны создателя фарма

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

Ссылки

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