메인 콘텐츠로 건너뛰기
이 페이지는 AI 자동 번역입니다. 모든 내용은 영문판을 기준으로 합니다.영문판 보기 →
공식 출처. 아래 표는 Raydium 공개 저장소 각 프로그램의 error.rs에서 재생성됩니다. 프로그램이 업그레이드되어 새 변형이 추가되면, 표를 재정렬하지 말고 각 표 하단의 링크를 통해 추출 스크립트를 재실행한 뒤 행을 추가하세요. Anchor 에러 코드는 이름이 아닌 소스 순서로 할당되므로, 순서를 바꾸면 통합자의 에러 처리 로직이 깨집니다.

Anchor 에러 코드 작동 방식

Anchor는 프로그램의 ErrorCode enum 각 변형에 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.
번호 재지정에 대한 참고. 이번 릴리스에서 CLMM ErrorCode enum이 새로 번호가 매겨졌습니다. 기존 변형 5개(LOK, ZeroMintAmount, InvalidLiquidity, TransactionTooOld, InvalidRewardDesiredAmount)와 여러 오타(Liquitity, enought, emissiones)가 제거/수정되었고, 11개의 새 변형이 추가되었습니다. 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 에러 방식을 혼용하므로, 에러 표는 여기가 아닌 명령어 레퍼런스 옆에 위치합니다. 아래 코드는 해당 챕터에서 예약되어 있습니다.

SDK 에러를 프로그램 에러로 매핑하기

공식 TypeScript SDK는 온체인 에러를 SendTransactionError로 래핑하며, Anchor 프로그램의 경우 AnchorError로 래핑합니다.
Anchor 클라이언트를 사용하지 않는 경우, 트랜잭션 로그를 직접 파싱하세요.
Error Number: (\d+) 패턴은 Anchor 버전에 관계없이 안정적으로 매칭할 수 있습니다.

표 재생성 방법

프로그램이 업그레이드되어 새 에러가 추가되면, 소스에서 다시 추출하세요.
새 변형이 추가될 때마다 반드시 reference/changelog를 업데이트하세요. 그래야 SDK를 업그레이드하는 통합자들이 에러 핸들러를 갱신해야 한다는 것을 알 수 있습니다. 출처: