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

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

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

Ошибки CPMM (Standard AMM)

ID программы: см. /ru/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.
Примечание о переномеровании. Enum ErrorCode CLMM был переномерован в этом выпуске: пять устаревших вариантов (LOK, ZeroMintAmount, InvalidLiquidity, TransactionTooOld, InvalidRewardDesiredAmount) и несколько опечаток (Liquitity, enought, emissiones) были удалены/исправлены, и одиннадцать новых вариантов были добавлены (6040–6050) выпуском лимитных ордеров; 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 оборачивает ошибки on-chain в SendTransactionError и, для программ Anchor, AnchorError:
Если вы не используете Anchor на клиентской стороне, разберите логи транзакции:
Паттерн Error Number: (\d+) стабилен во всех версиях Anchor и безопасен для сопоставления.

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

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