Skip to main content
이 페이지는 AI 자동 번역입니다. 모든 내용은 영문판을 기준으로 합니다.영문판 보기 →
신뢰할 수 있는 정보 출처. 아래 표는 공개 Raydium 저장소의 각 프로그램 error.rs에서 재생성됩니다. 프로그램이 업그레이드되고 새로운 변형이 추가되면, 추출을 다시 실행하고(각 표 하단의 링크) 표를 재정렬하지 말고 추가하세요. 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.
번호 재지정에 대한 참고. CLMM ErrorCode 열거형이 이 릴리스에서 번호가 다시 지정되었습니다: 5개의 레거시 변형(LOK, ZeroMintAmount, InvalidLiquidity, TransactionTooOld, InvalidRewardDesiredAmount)과 여러 오타(Liquitity, enought, emissiones)가 제거/수정되었고, 11개의 새로운 변형이 한정 주문 릴리스에 의해 추가되었습니다(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를 허용 계정 검증 에러에 할당했습니다; 2026-08-24 릴리스는 6023을 추가합니다; 2026-08-31 릴리스는 6024–6030을 추가합니다; 2026-09-09 릴리스는 6031을 추가합니다: 이전 PlatformGlobalAccessDenied(6022) 및 InvalidPlatformGlobalAccess(6023) 변형이 제거되었습니다. 이전 IDL을 사용하여 6022를 디코딩하지 마세요. 6023 — 2026-08-17 릴리스에서 비워짐 — 은 2026-08-24 릴리스에서 관련 없는 에러로 재사용되므로 두 버전 중 하나의 IDL로 디코딩하면 안 됩니다. 6020은 의도적으로 유지됩니다. Anchor가 위치별로 변형을 번호 지정하므로, 삭제하면 그 이후의 모든 코드가 이동하고 6021–6031을 디코딩하는 모든 클라이언트가 깨집니다.

AMM v4: AmmError는 Anchor 번호가 아닙니다

AMM v4는 Anchor보다 앞섭니다. AmmError는 FromPrimitive를 사용한 순수 thiserror 열거형으로, ProgramError::Custom(e as u32)를 통해 변환되므로 코드는 6000이 아닌 **0**에서 시작합니다 — 그리고 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를 업그레이드하는 통합자가 에러 핸들러를 새로고침해야 함을 알 수 있도록 하세요. 소스: