Skip to main content
Эта страница переведена с помощью ИИ. За эталон принимается английская версия.Открыть английскую версию →
Источник истины. Таблицы ниже регенерируются из файла error.rs каждой программы в публичных репозиториях Raydium. Когда программа обновляется и добавляется новый вариант, повторно запустите извлечение (ссылка внизу каждой таблицы) и добавьте строку в таблицу вместо перестановки — коды ошибок Anchor назначаются по порядку в исходном коде, а не по имени, поэтому переупорядочивание нарушает обработку ошибок у интеграторов.

Как работают коды ошибок Anchor

Anchor присваивает каждому варианту перечисления ErrorCode программы числовой код, начиная с 6000. Неудачная транзакция выводит:
  • Числовой код ошибки (например 0x1771 = 6001) в логах транзакции.
  • Имя ошибки (например InvalidOwner) из IDL.
  • Строку #[msg(...)], которую выпустил Anchor в log_messages.
Интеграторы должны сопоставлять по числовому коду, а не по строке сообщения (строка может быть переформулирована без изменения версии).

Ошибки CPMM (Standard AMM)

ID программы: см. reference/program-addresses. Источник: raydium-cp-swap/programs/cp-swap/src/error.rs. Источник регенерации: github.com/raydium-io/raydium-cp-swap — error.rs.

Ошибки CLMM

ID программы: см. reference/program-addresses. Источник: raydium-clmm/programs/amm/src/error.rs.
Примечание о перенумерации. Перечисление ErrorCode CLMM было перенумировано в этом выпуске: пять устаревших вариантов (LOK, ZeroMintAmount, InvalidLiquidity, TransactionTooOld, InvalidRewardDesiredAmount) и несколько опечаток (Liquitity, enought, emissiones) были удалены/исправлены, и одиннадцать новых вариантов (60406050) были добавлены выпуском лимитных ордеров; 6051 (InvalidTickArrayBitmapExtensionAccount) появился из отдельного, более позднего изменения. Итого 52 варианта, 60006051 — то же количество, которое сообщает on-chain IDL развёрнутой программы. Поскольку Anchor нумерует ошибки по порядку в исходном коде, каждый код на или после 6000 сместился относительно предвыпускных сборок. Клиенты, которые жёстко кодировали числовые коды для более ранней версии, должны переотобразить.
Источник регенерации: github.com/raydium-io/raydium-clmm — error.rs.

Ошибки AMM v4, Farm v3 / v5 / v6, LaunchLab

Эти программы документированы в их соответствующих главах (см. products/amm-v4/instructions, products/farm-staking/instructions, products/launchlab/instructions). Поскольку эти программы используют смесь поверхностей ошибок Anchor и простого Solana, их таблицы ошибок находятся рядом со справочником инструкций, а не здесь. Коды ниже зарезервированы этими главами: Последние выпуски LaunchLab сохраняют коды 60006021 без изменений. Выпуск 2026-08-17 удалил бывшие ошибки глобального доступа платформы и назначил 6022 ошибке валидации allow-account; выпуск 2026-08-24 добавляет 6023; выпуск 2026-08-31 добавляет 60246030; выпуск 2026-09-09 добавляет 6031: Старые варианты PlatformGlobalAccessDenied (6022) и InvalidPlatformGlobalAccess (6023) удалены. Не декодируйте 6022 с использованием предыдущего IDL, и обратите внимание, что 6023 — освобождённый выпуском 2026-08-17 — переиспользуется выпуском 2026-08-24 для несвязанной ошибки, поэтому его не следует декодировать с IDL из любой более ранней версии. 6020 сохранён намеренно. Anchor нумерует варианты по позиции, поэтому удаление его сместит каждый код после него и нарушит каждого клиента, который декодирует 60216031.

AMM v4: AmmError не нумеруется в стиле Anchor

AMM v4 предшествует Anchor. AmmError — это простое перечисление thiserror с FromPrimitive, преобразованное через ProgramError::Custom(e as u32), поэтому его коды начинаются с 0, а не 6000 — и, как у Anchor, назначаются по порядку в исходном коде. Обновление 2026-09 добавляет один вариант: Коды 059 не изменены, поэтому ничего не сместилось. В логах транзакции это выводится как custom program error: 0x3c. Источник регенерации: github.com/raydium-io/raydium-amm — error.rs.

Сопоставление ошибок SDK с ошибками программы

Официальный TypeScript SDK оборачивает ошибки в блокчейне в SendTransactionError и, для программ Anchor, AnchorError:
Если вы не используете Anchor на стороне клиента, разберите логи транзакции:
Паттерн Error Number: (\d+) стабилен во всех версиях Anchor и безопасен для сопоставления.

Регенерация этих таблиц

Когда программа обновляется и добавляется новая ошибка, повторно извлеките из исходного кода:
Всегда обновляйте reference/changelog при добавлении нового варианта, чтобы интеграторы, обновляющие SDK, знали, что нужно обновить обработчики ошибок. Источники: