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를 업그레이드하는 통합자들이 에러 핸들러를 새로고침해야 한다는 것을 알 수 있습니다. 소스: