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

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

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

Ошибки CPMM (стандартный 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) были удалены/исправлены, и одиннадцать новых вариантов добавлены. Поскольку 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 без изменений. Он удаляет бывшие ошибки глобального доступа платформы и присваивает 6022 новой ошибке проверки разрешённого счёта: Старые варианты PlatformGlobalAccessDenied (6022) и InvalidPlatformGlobalAccess (6023) удалены. Не декодируйте 6022 с использованием предыдущего IDL.

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

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

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

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