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

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

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

Ошибки CPMM (Standard AMM)

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

Ошибки CLMM

Program ID: см. reference/program-addresses. Источник: raydium-clmm/programs/amm/src/error.rs.
Примечание о перенумерации. Enum ErrorCode CLMM был перенумерован в этом выпуске: пять устаревших вариантов (LOK, ZeroMintAmount, InvalidLiquidity, TransactionTooOld, InvalidRewardDesiredAmount) и несколько опечаток (Liquitity, enought, emissiones) были удалены/исправлены, и одиннадцать новых вариантов были добавлены (6040–6050) выпуском limit-order; 6051 (InvalidTickArrayBitmapExtensionAccount) пришёл из отдельного, более позднего изменения. Это дало 52 варианта, 6000–6051, что является количеством, которое IDL развёрнутой программы на цепи сообщает. Обновление 2026-09-30 добавляет 6052 без сдвига чего-либо, всего 53. Поскольку 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 сохраняют коды 6000–6021 без изменений. Выпуск 2026-08-17 удалил бывшие ошибки глобального доступа платформы и назначил 6022 ошибке валидации allow-account; выпуск 2026-08-24 добавляет 6023; выпуск 2026-08-31 добавляет 6024–6030; выпуск 2026-09-09 добавляет 6031: Старые варианты PlatformGlobalAccessDenied (6022) и InvalidPlatformGlobalAccess (6023) удалены. Не декодируйте 6022 с использованием предыдущего IDL, и обратите внимание, что 6023 — освобождённый выпуском 2026-08-17 — переиспользуется выпуском 2026-08-24 для несвязанной ошибки, поэтому его не следует декодировать с IDL из любой более ранней версии. 6020 сохранён намеренно. Anchor нумерует варианты по позиции, поэтому удаление его сдвинет каждый код после него и нарушит каждого клиента, который декодирует 6021–6031.

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

AMM v4 предшествует Anchor. AmmError — это простой enum thiserror с FromPrimitive, преобразованный через ProgramError::Custom(e as u32), поэтому его коды начинаются с 0, а не 6000 — и, как у Anchor, назначаются по порядку в исходном коде. Обновление 2026-09 добавляет один вариант: Коды 0–59 не изменены, поэтому ничего не сдвигается. В логах транзакции это выводится как 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, знали, что нужно обновить обработчики ошибок. Источники: