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.
Эта страница переведена с помощью ИИ. За эталон принимается английская версия.Открыть английскую версию →
Две программы
| SPL Token | Token-2022 | |
|---|---|---|
| Program ID | TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA | TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb |
| Запущена | 2020 | 2022 |
| Размер учётной записи (token account) | 165 B | 165 B + расширения (переменно) |
| Расширения | Нет | Да — 17+ официальных расширений |
| Обратная совместимость | Полная | На условиях по каждому минту |
solana-program-library.
Почему две программы?
SPL Token была заморожена для сохранения совместимости — её байткод практически неизменяем, обеспечивая надёжную базу для всей экосистемы. По мере расширения сценариев использования (стейблкоины с комиссией на передачу, институциональные мальты, требующие гибкого контроля заморозки, NFT с указателями на метаданные) команда Solana представила Token-2022 как отдельную расширяемую программу вместо обновления SPL Token. Это сохраняет существующие интеграции и позволяет каждому минту выбрать ровно те расширения, которые ему нужны. Token-2022 — строгий надмножество по функциональности, но не по адресному пространству: две программы сосуществуют, и минт по определённому адресу принадлежит ровно одной из них.Структура учётной записи
Mint account
Определяет идентичность токена. SPL Token mint (82 байта):Token account
Хранит баланс определённого минта для определённого владельца. SPL Token account (165 байт):Расширения Token-2022
Расширения — модульные возможности, которые можно прикрепить к mintам или учётным записям. Каждое расширение — отдельная TLV-запись. Ключевые для Raydium:Transfer fee
Минт может взимать процентную комиссию при каждой передаче. Комиссия поступает указанному центру вывода. Поддерживается Raydium CPMM и CLMM черезSwapV2 — программа учитывает комиссию при расчёте обменных курсов, поэтому математика пула остаётся согласованной.
Transfer hook
Минт указывает на программу, которую runtime вызывает при каждой передаче. Программа hook может отклонить передачу или выполнить побочные эффекты (обновить состояние соответствия, залогировать и т.д.). Raydium CPMM/CLMM вызывает hook черезSwapV2 — транзакция включает программу hook и любые дополнительные учётные записи, которые ей нужны.
Interest-bearing
Баланс на цепи увеличивается с процентной ставкой, установленной в конфигурации. Только отображение (балансы со временем выглядят выше) а не фактический минт; базовое предложение остаётся неизменным.Mint close authority
Позволяет закрыть минт, когда предложение достигает нуля.Permanent delegate
Назначенный кошелёк может переводить или сжигать токены с любой учётной записи без ограничений. Raydium блокирует создание пулов для mintов с этим расширением — это несовместимо с инвариантом, что резервы пула не могут быть захвачены.Non-transferable
Токены не могут быть перемещены с учётной записи, на которую они выпущены. Raydium блокирует создание пулов — непродаваемый актив не может быть базовым или котируемым активом LP-пула.Default account state
Новые token accounts для этого минта заморожены по умолчанию и должны быть разморожены авторитетом заморозки. Полезно, но редко.Confidential transfer
Балансы и суммы передач зашифрованы. Raydium не поддерживает mints с конфиденциальной передачей (математика пула требует открытых балансов).Metadata pointer + token metadata
Заменяет метаданные Metaplex для mintов Token-2022. Поддерживается для листинга пулов Raydium.Group / Member pointer
Объявляет минт как принадлежащий к группе (например, коллекция NFT). Информационное; Raydium использует это для отображения. См. официальную страницу расширений Token-2022 для полного списка.Какие продукты Raydium что поддерживают
| Продукт | SPL Token | Token-2022 | Примечания |
|---|---|---|---|
| AMM v4 | Да | Нет | Интеграция OpenBook требует SPL Token |
| CPMM | Да | Да | Требует SwapV2 для пулов Token-2022 |
| CLMM | Да | Да | Требует SwapV2 для пулов Token-2022 |
| Farm v6 | Да | Да | Поддерживается для обоих: минт ставки и минты вознаграждений |
| LaunchLab | Да | Да | Завершённые пулы CPMM наследуют поддержку Token-2022 |
- Блокированы: non-transferable, permanent delegate, confidential transfer, default account state (в отклоняемых конфигурациях).
- Разрешены с условиями (LP должен принять риск): transfer fee, transfer hook, активный freeze authority.
- Полностью разрешены: interest-bearing, metadata pointer, group pointer, mint close authority.
getPoolInfoFromRpc включает флаги расширений минта — клиенты должны проверить перед LP.
Стандарты token account
Associated Token Account (ATA)
Обе программы используют соглашение Associated Token Account: PDA, полученный из[owner, programId, mint] через Associated Token Program (ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL). Почти каждая пользовательская token account на Solana — это ATA.
Не-ATA token accounts
Кошелёк может иметь несколько token accounts для одного минта; ATA — просто соглашение. Своды пулов, например, не являются ATA — это PDA программы пула, содержащие резервы пула.Определение, какой программе принадлежит минт
Учётная запись каждого минта имеет полеowner, указывающее либо на SPL Token, либо на Token-2022:
getPoolInfoFromRpc возвращает соответствующий programId для каждого токена, чтобы клиенты могли построить правильные ATA.
Инструкции swap по программам
CPMM и CLMM Raydium имеют по две инструкции swap:| Инструкция | Поддерживаемые mints |
|---|---|
Swap / SwapBaseInput (legacy) | Только SPL Token |
SwapV2 / SwapBaseInputV2 | SPL Token и Token-2022 |
SwapV2 принимает дополнительные учётные записи: учётные записи mintов с обеих сторон, программу токенов для каждой стороны (так как они могут отличаться), и — для mintов с transfer hook — программу hook и её требуемые учётные записи.
Клиенты должны всегда использовать SwapV2, когда хотя бы одна сторона — Token-2022; SwapV2 также работает для пулов только с SPL, но устаревший Swap дешевле по вычислениям.
SDK выбирает правильный вариант автоматически.
Миграция проекта SPL Token на Token-2022
Token-2022 не является заменой по принципу plug-and-play на уровне минта — минт по адресу X либо SPL, либо Token-2022, и это зафиксировано при создании. Чтобы «мигрировать», вы должны:- Создать новый минт под Token-2022 с нужными вам расширениями.
- Предоставить механизм swap/wrap для держателей старого SPL минта, чтобы обменять на новый.
- Обновить все LP-пулы, фермы и интеграции, чтобы ссылаться на новый минт.
Рабочий пример: создание минта Token-2022 с комиссией на передачу
Соображения безопасности
Перед LP или swap через минт Token-2022:- Проверьте
freeze_authority. Если он не null и контролируется централизованной стороной, она может заморозить вашу ATA (и, возможно, свод пула). - Проверьте
transfer_hook. Программа hook может блокировать передачи произвольно — изучите источник hook самостоятельно. - Проверьте
transfer_fee. Учитывайте комиссию в ожидаемом выводе swap. - Проверьте
permanent_delegateиnon_transferable. Программа Raydium отклоняет их, но проверьте при построении пользовательской интеграции.
security/oracle-and-token-risks.
Указатели
solana-fundamentals/account-model— общая модель учётных записей.reference/token-2022-support— специфика Token-2022 для CPMM и CLMM.security/oracle-and-token-risks— риски от вредоносных расширений mintов.
- SPL Token docs.
- Token-2022 docs — полный список расширений.
- Associated Token Account.


