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.
Эта страница переведена с помощью ИИ. За эталон принимается английская версия.Открыть английскую версию →
Что такое IDL
Программы Anchor на Solana публикуют файл IDL (Interface Definition Language), который описывает инструкции, макеты счетов, enum ошибок и схемы структур. IDL является источником истины для генерации клиентского кода — TS SDK, Rust CPI крейт и клиенты от третьих сторон генерируются (или пишутся вручную) на его основе. Raydium публикует IDL для CPMM, CLMM и LaunchLab. AMM v4, Stable AMM и Farm (v3 / v5 / v6) предшествуют Anchor или иным образом не распространяются с Anchor — их структуры счетов вручную поддерживаются в SDK.Где их найти
IDL находятся в отдельном репозитории:| Программа | Файл IDL |
|---|---|
| CPMM | raydium_cpmm/raydium_cp_swap.json |
| CLMM | raydium_clmm/raydium_clmm.json |
| LaunchLab | raydium_launchpad/raydium_launchpad.json |
| AMM v4 | официального IDL нет — см. raydium-sdk-V2/src/raydium/liquidity/layout.ts для макетов, написанных вручную |
| Stable AMM | официального IDL нет — макеты в SDK |
| Farm | официального IDL нет — макеты в SDK |
Переформирование TypeScript клиента
Codegen Anchor создает типизированный клиент из IDL:raydium.cpmm.swap(...), который оборачивает методы Anchor плюс все бухгалтерское обслуживание (создание ATA, корректировка комиссии передачи, бюджет вычислений, маршрутизация программы Token-2022). Переформируйте только если вам нужен слой ниже SDK.
Переформирование Rust клиента (CPI крейт)
Raydium публикует Anchor крейты для программ, которые имеют IDL:cpi предоставляет структуры счетов cpi::accounts::<Ix> и инициаторы cpi::<ix>() — готовые к использованию обертки CPI. См. sdk-api/rust-cpi для шаблонов использования.
Если вы предпочитаете сгенерировать новые привязки:
Переформирование Python клиента
Официального Raydium Python SDK нет. Сторонние генераторы включают:anchorpy— портирование@coral-xyz/anchorна Python. Генерирует типизированные построители методов из IDL.solders— низкоуровневые примитивы Solana (транзакции, keypairs, pubkeys) в привязках Rust; используется внутриanchorpy.
sdk-api/python-integration для более полного пошагового руководства.
Политика изменения IDL
Raydium следует этим правилам для стабильности IDL:- Дискриминаторы инструкций никогда не меняются. Добавление новых инструкций расширяет enum в конце; существующие дискриминаторы остаются стабильными.
- Макеты структур счетов развиваются только адитивно. Новые поля идут в конец, предшествуемые увеличением размера в on-chain схеме. Существующие поля сохраняют свои смещения.
- Коды enum ошибок только добавляются. Существующий код ошибки всегда означает одно и то же.
- Критические изменения поставляются в новых программах. Когда требуется переделка, команда развертывает новый ID программы (например, CPMM как новую программу вместо обновления AMM v4). Старые пулы продолжают работать на старой программе; новые пулы переходят на новую.
Что делать при изменении IDL
- Обновите SDK.
npm update @raydium-io/raydium-sdk-v2. - Переформируйте ваш клиентский код, если вы используете Anchor codegen напрямую.
- Сравните макет счета. Конечные поля нового макета — это единственное, что ваш код не видел; подтвердите, нужны ли они вам.
- Не предполагайте, что старые дискриминаторы инструкций недействительны. Согласно правилу 1, они все еще работают.
- Переагистрируйте интеграционные тесты против devnet перед развертыванием на mainnet.
Решение проблем IDL
Ошибки “Invalid discriminator”
Обычно означает, что клиент, построенный на основе версии N IDL, пытается вызвать инструкцию, которая существовала только в предыдущей версии программы перед развертыванием. Повторно получите IDL из работающей программы:Сбои декодирования счета
Еслиprogram.account.<Name>.fetch(pubkey) выдает ошибку с “Invalid account discriminator”, счет был создан предыдущей версией программы и Anchor отклоняет его 8-байтовый дискриминатор. Решение — использовать синтаксический анализатор сырого макета из SDK (PoolInfoLayout.decode(accountData)), который не применяет дискриминаторы Anchor.
Отсутствующие инструкции в сгенерированном клиенте
Codegen TS Anchor генерирует методы только для инструкций, запись IDL которых содержитname, который парсится как действительный идентификатор. Инструкции Raydium все это удовлетворяют, но если вы видите несоответствие, проверьте, является ли файл IDL из текущего выпуска SDK.
Ссылки
sdk-api/rust-cpi— использование Rust CPI крейтов.sdk-api/python-integration— Python черезanchorpy.sdk-api/typescript-sdk— более высокоуровневый TS клиент.


