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.
Эта страница переведена с помощью ИИ. За эталон принимается английская версия.Открыть английскую версию →
Поддержка на уровне программы
| Программа | Токены Token-2022 base/quote? | Режим |
|---|---|---|
| CPMM | Да — с ограничением | Строгий список разрешений расширений + статический список из 4 токенов. |
| CLMM | Да — с ограничением | Строгий список разрешений расширений + статический список из 6 токенов + управляемый администратором реестр + обнаружение Superstate. |
| AMM v4 | Нет | Программа предшествует Token-2022; оба токена должны быть классическим SPL Token. |
| Stable AMM | Нет | Те же ограничения, что и AMM v4. |
| Farm v6 | Частично | Токен награды может быть Token-2022 (подчиняется тому же списку разрешений, если ферма обертывает LP из CPMM/CLMM); LP токены пользователей наследуют ограничения завернутого пула. |
| LaunchLab | Да, управляется программой | Базовый токен может быть Token-2022, но только через инструкцию initialize_with_token_2022; программа сама создает токен с MetadataPointer (всегда) и опционально TransferFeeConfig (ставка ≤ 5%). Уже существующие токены Token-2022 с произвольными расширениями не могут использоваться в качестве базового. |
| Burn & Earn | Зеркалирует пул программы | Наследует ограничения CPMM / CLMM. |
- CPMM:
is_supported_mintвraydium-cp-swap/programs/cp-swap/src/utils/token.rs:178, вызывается изInitialize. - CLMM:
is_supported_mintвraydium-clmm/programs/amm/src/util/token.rs:280, вызывается изCreatePool. - LaunchLab:
initialize_with_token_2022вraydium-launchpad/programs/launchpad/src/instructions/initialize_with_token_2022.rs(исходный код не опубликован).
Список разрешений расширений CPMM и CLMM
После проверок статического списка (описаны ниже) программа проходит по расширениям mint и отклоняет mint, если он содержит любое расширение, отличное от этих пяти:| Расширение | Причина разрешения |
|---|---|
TransferFeeConfig | Математика пула вычитает входящий сбор; программа Token-2022 обрабатывает исходящий сбор. См. algorithms/token-2022-transfer-fees. |
MetadataPointer | Декоративное — указывает на метаданные в сети. |
TokenMetadata | Декоративное — встроенные метаданные. |
InterestBearingConfig | Пул видит основную сумму; множитель UI только для отображения, базовый баланс сохраняется. |
ScaledUiAmount | Та же структура, что и interest-bearing — масштабный коэффициент применяется только к отображению UI. |
TransferHook, NonTransferable, ConfidentialTransferMint, PermanentDelegate, MintCloseAuthority, DefaultAccountState, GroupPointer, GroupMemberPointer, MemberPointer, Pausable и т.д. — заставляет is_supported_mint вернуть false и транзакция создания пула откатывается.
Соответствующие строки (CPMM, идентичная структура в CLMM):
cp-swap/src/utils/token.rs:190–200
Пути обхода
Токен Token-2022, не входящий в список разрешений, может быть допущен через один из трех явных путей обхода. Они пробуются по порядку, перед тем как выполняется проверка расширений.1. Статический список адресов токенов
Постоянный массивMINT_WHITELIST строк в формате base58 зашифрован в каждой программе. Если адрес mint совпадает, функция сразу же возвращает true и проверка расширений не выполняется.
| Программа | Разрешенные токены |
|---|---|
| CPMM | HVbpJAQGNpkgBaYBZQBR1t7yFdvaYVp2vCQQfKKEN4tM, Crn4x1Y2HUKko7ox2EZMT6N2t2ZyH7eKtwkBGVnhEq1g, FrBfWJ4qE5sCzKm3k3JaAtqZcXUh4LvJygDeketsrsH4, 2b1kV6DkPAnxd5ixfnxCpjxmKwqjjaYmCZfHsFu24GXo |
| CLMM | Те же четыре, плюс DAUcJBg4jSpVoEzASxYzdqHMUN8vuTpQyG2TvDcCHfZg, AUSD1jCcCyPLybk1YnvPWsHQSrZ46dxwoMniN4N2UEB9 |
2. Реестр для каждого токена — только CLMM
CLMM дополнительно обращается кSupportMintAssociated PDA с seed [b"support_mint", mint]. Если этот PDA существует для токена, токен допускается независимо от набора его расширений.
PDA создается инструкцией CreateSupportMintAssociated (admin/create_support_mint_associated.rs). Инструкция защищена двумя подписантами:
crate::admin::ID— стандартный орган администратора Raydium.crate::create_support_mint_associated_owner::ID— выделенный орган для этой цели:RayVyjyJQz9vAi126A4sGexKnSU1XeZaHTRcM1mZMPY(mainnet),rayf3nEbb3bnfN6RDGFpqPbjc5uUa3tRUzu6UVYrRx5(devnet).
3. Обнаружение Superstate — только CLMM
CLMM имеет третий путь специально для токенизированных активов Superstate, которые используют расширениеScaledUiConfig, которое версия spl-token-2022, связанная с программой CLMM, не может распаковать. Вместо обновления зависимости CLMM обнаруживает токены Superstate по их форме orган:
raydium-clmm/programs/amm/src/util/token.rs:485
Mint проходит эту проверку, если все четыре условия верны:
- Его владелец программ — программа Token-2022.
- Его freeze authority равен
superstate_allowlist::ID. Mainnet:2Yq4T3mPNfjtEyTxSbRjRKqLf1pwbTasuCQrWe6QpM7x. Devnet:3TRuL3MFvzHaUfQAb6EsSAbQhWdhmYrKxEiViVkdQfXu. - Его расширение
DefaultAccountStateустановлено вFrozen. - Его постоянный делегат также
superstate_allowlist::ID.
Что пути обхода не отменяют
Пути обхода пропускают список разрешений расширений, но программа все равно проверяет:- Mint принадлежит либо
Token, либоToken-2022. Пользовательская программа токенов отклоняется выше по течению. - Хранилища пула создаются с правильными расширениями ATA для пулов Token-2022 (
ImmutableOwnerи т.д.). - Все переводы используют
transfer_checked— токены, несущие комиссии, доставляют правильное количество в хранилище.
TransferHook, не получает проверку во время свопа; hook просто работал бы при каждом переводе и мог бы заблокировать свопы. Поэтому добавление в список разрешений — это действие высокого доверия.
Семантика “заблокировано”
Когдаis_supported_mint возвращает false, создание пула откатывается с ErrorCode::NotSupportMint (CPMM) / ErrorCode::NotSupportMint (CLMM). См. reference/error-codes для числовых кодов.
Существующие пулы не могут ретроактивно не пройти эту проверку — проверка срабатывает только при создании. Расширения mint неизменяемы для категорий, которые Raydium отклоняет (transfer hook, non-transferable, confidential transfer не могут быть добавлены после создания), поэтому статической проверки достаточно.
Почему каждое исключенное расширение исключено
- TransferHook — вызывает пользовательскую программу при каждом переводе с произвольным потреблением CU, произвольными условиями отказа и способностью повторно входить в вызывающую программу. Безопасной песочницы не существует. Некоторые DEXy поддерживают списки разрешений hook; Raydium не поддерживает.
- NonTransferable —
Transferвсегда не удается. Пул не может взять под контроль. - ConfidentialTransfer — суммы переводов зашифрованы; кривая не может оценить своп.
- PermanentDelegate — держатель делегата может очистить любой аккаунт токена, включая хранилище пула. Разрешено только через статический список разрешений для проверенных издателей (например, регулируемые stablecoin).
- MintCloseAuthority — mint можно закрыть; существующие пулы становятся непригодными. Запрещено по умолчанию.
- DefaultAccountState (Frozen) — ATA пула приземлятся в состояние
Frozenи потребуют оттаивания для каждого аккаунта. Разрешено только через обнаружение Superstate, которое предполагает, что издатель оттаивает институциональные аккаунты при регистрации. - Group/Member pointers — не активно вредны, но не проверены. Запрещены по умолчанию, чтобы сохранить поверхность узкой.
Учет комиссии передачи
Для mint сTransferFeeConfig, каждый своп, депозит и вывод перемещают меньше номинальной суммы. SDK поверхностно представляет обе половины расчета:
amountIn + token2022FeeInкак “вы отправляете”amountOut - token2022FeeOutкак “вы получаете”feeAmountкак комиссию пула (LP + протокол), которая отделена от комиссии передачи Token-2022
amountIn → amountOut, занижает затраты.
Предел maximumFee
Комиссии за передачу Token-2022 ограничены за передачу. Для mint с 1% ставкой и лимитом 10 000 токенов, передача 100 000 000 токенов платит только 10 000 в комиссии. SDK computeSwapAmount применяет предел; прямые вызывающие программу должны воспроизвести это.
Переход на новую эпоху
Орган mint может запланировать изменение ставки комиссии, которое активируется в следующую эпоху. Во время переходного окна два конфигурации (older, newer) существуют на mint одновременно и TransferChecked выбирает по текущей эпохе. И CPMM SwapV2, и CLMM SwapV2 передают полный аккаунт mint в accounts, поэтому программа читает правильную конфигурацию без дополнительного поиска.
Если вы котируете более чем на одну эпоху вперед через Trade API или SDK, выполненная комиссия может отличаться от котируемой комиссии — ограничено maximum_fee_basis_points старой конфигурации.
Interest-bearing и ScaledUiAmount
Пул держит основную сумму; “UI сумма” — основная сумма, умноженная на зависимый от времени или установленный администратором масштабный коэффициент. Математика свопа работает с основной суммой:pool.token0Vault.amount как основную сумму.
Определение “пула Token-2022”
Пул — это пул Token-2022, если либо mint имеетprogramId == TokenzQdB.... API показывает это:
programId для распределения и hasTransferFee для отображения предупреждения UI.
Помощники SDK
Распространенные ошибки интеграции
- Предварительная проверка только ID программы. Mint может быть Token-2022 и неподдерживаемым. Проверьте список расширений по списку разрешений (и статическому списку) перед разрешением создания пула.
- Доверие цитате SDK, когда mint вообще не принят. API цитаты не отказывает в цитировании — создание пула — это то, что откатывается. Подтвердите семантику
is_supported_mintофф-чейн перед открытием создания пула в вашем UI. - Цитирование без скидки на комиссию передачи. Mint с комиссией передачи 1% с обеих сторон пула CPMM с 0.25% имеет эффективную комиссию около 2.25%, а не 0.25%. Используйте цитату SDK или цитату Trade API — никогда не вычисляйте комиссию вручную только с уровня комиссии пула.
- Вызов устаревшей инструкции
Swapдля пула Token-2022.Swapпредшествует Token-2022. ИспользуйтеSwapV2всякий раз, когда любой mint — Token-2022. - Автоматический список новых токенов Token-2022. Кошельки и агрегаторы должны проверять
TransferHookиNonTransferableперед отображением токена пользователям; оба враждебны Raydium.
Будущая работа
Элементы дорожной карты экосистемы Solana и протокола, которые изменили бы эту матрицу:- Разрешенные на уровне Solana программы transfer-hook (соглашение об экосистеме развивается).
- AMM, совместимые с confidential-transfer (стадия исследования).
- Более широкий реестр CPMM для каждого токена (паритет с CLMM).
- Обновление зависимости, чтобы декодирование
ScaledUiConfigCLMM работало без эвристики Superstate.
Указатели
algorithms/token-2022-transfer-fees— математика комиссии в свопах.products/cpmm/instructions—SwapV2,Initialize.products/clmm/instructions—SwapV2,CreatePool,CreateSupportMintAssociated.reference/error-codes— числовые кодыNotSupportMintдля каждой программы.
raydium-cp-swap/programs/cp-swap/src/utils/token.rs—MINT_WHITELIST,is_supported_mint.raydium-clmm/programs/amm/src/util/token.rs—MINT_WHITELIST,superstate_allowlist,is_superstate_token,is_supported_mint.raydium-clmm/programs/amm/src/instructions/admin/create_support_mint_associated.rs— инструкция реестра для каждого токена.raydium-launchpad/programs/launchpad/src/instructions/initialize_with_token_2022.rs— создание базового mint Token-2022 LaunchLab.


